使用 JavaScript 编辑 CSS 渐变

2024-01-02

我正在 Firefox 中通过 JavaScript 编辑 CSS 渐变。 我有用户可以输入的输入框 1. 方向 2. 第一种颜色 3.第二种颜色

这是html

<html>
    <head>
        <title>Linear Gradient Control</title>
        <script>
            function renderButton(){ 
            var orientation = document.getElementById("firstValue").value;
            var colorOne = document.getElementById("firstColor").value;
            var colorTwo = document.getElementById("secondColor").value;
            //alert(orientation);
            //alert(colorOne);
            //alert(colorTwo);

            };
        </script>
        <style>
            #mainHolder
            {
            width:500px;
            background: -moz-linear-gradient(left,  green,  red);

            }
        </style>
    </head>
    <body>
        <h1>Gradient Editor</h1>
        <form>
            <input type="text" id="firstValue">orientation</input><br />
            <input type="text" id="firstColor">first color</input><br />
            <input type="text" id="secondColor">second color</input><br />
        </form>
        <button type="button" onclick="renderButton()">Render</button>
        <div id="mainHolder">Content</div>
    </body>
</html>

回顾一下,用户将指定其 3 个值,这些值将传递给函数“renderButton();”。我可以使用哪行代码来更改 CSS3 渐变的 3 个值,以便用户可以制作自己的自定义渐变框?我假设我只需要一两行。

附:我意识到这个例子只适用于 Firefox。我只是想在使用不同的浏览器之前先弄清楚这个概念。


从如下内容开始:

var dom = document.getElementById('mainHolder');
dom.style.backgroundImage = '-moz-linear-gradient('
        + orientation + ', ' + colorOne + ', ' + colorTwo + ')';

如果您需要支持比 Firefox 更多的浏览器,则需要结合浏览器嗅探或一些类似 Modernizr 的功能检测来完成。

下面是如何使用类似于 Modernizr 的功能检测来完成此操作的示例(在 Firefox、Chrome、Safari、Opera 中测试)。

// Detect which browser prefix to use for the specified CSS value
// (e.g., background-image: -moz-linear-gradient(...);
//        background-image:   -o-linear-gradient(...); etc).
//

function getCssValuePrefix()
{
    var rtrnVal = '';//default to standard syntax
    var prefixes = ['-o-', '-ms-', '-moz-', '-webkit-'];

    // Create a temporary DOM object for testing
    var dom = document.createElement('div');

    for (var i = 0; i < prefixes.length; i++)
    {
        // Attempt to set the style
        dom.style.background = prefixes[i] + 'linear-gradient(#000000, #ffffff)';

        // Detect if the style was successfully set
        if (dom.style.background)
        {
            rtrnVal = prefixes[i];
        }
    }

    dom = null;
    delete dom;

    return rtrnVal;
}

// Setting the gradient with the proper prefix
dom.style.backgroundImage = getCssValuePrefix() + 'linear-gradient('
        + orientation + ', ' + colorOne + ', ' + colorTwo + ')';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JavaScript 编辑 CSS 渐变 的相关文章

随机推荐

  • 有没有办法指定浏览器的最小和最大缩放级别?

    最近的浏览器允许使用 CTRL CTRL 鼠标滚轮以及触控板上的两根手指捏合手势来更改缩放级别 虽然我自己发现该功能非常方便 各个网站上的字体通常太小 我无法阅读 但我们进行了一些测试 其中测试人员 有意或无意 应用了非常极端的缩放级别 在
  • 反应本机 android/app/build.gradle 文件丢失

    我是本地反应新手 我想创建一个使用 firebase 推送通知的简单应用程序 所以我使用 expo init 创建了我的反应应用程序 现在我陷入了本教程的第 2 点https github com invertase react nativ
  • Microsoft JScript 运行时错误:“$”未定义

    我正在尝试使用以下代码隐藏 显示视图中的元素 buttonClass IDhere click function theDivYouWantToShowClass IDhere toggle 然而 我不断得到 Microsoft JScri
  • 如何使用 .NET 6 在 aspnet core Web 应用程序中执行 database.ensurecreated() ?

    在 NET 5 Web应用程序中 我们在startup cs中使用如下代码来使用实体框架初始化数据库 using var serviceScope app ApplicationServices GetService
  • 查找连续相等字符的最长子串时如何处理“借用的值活得不够长”错误?

    我有一个作业 要获取带有签名的连续相等字符的最长子串fn s str gt Option lt str gt 但是 我的尝试产生了编译器错误 pub fn longest sequence s str gt Option lt str gt
  • 无法解析颜色值

    我试图让我的按钮在按下时改变其文本的颜色 但我遇到了一个无法解决的问题 我收到一条错误消息 无法解析颜色值 然后它为我提供了文件的路径 这是我使用的文件 这个位于资源下名为 color 的新文件夹及其调用的按钮中
  • Android:错误:使用未声明的标识符“fseeko”

    当我尝试使用源代码在 Android 中构建 boost 库时 出现以下错误 发布 armeabi v7a D Android Sdk ndk gt 捆绑 工具链 llvm prebuilt windows x86 64 sysroot u
  • 不带数据库名称的 MySql ConnectionString 在 C# 中创建数据库

    我遇到了一种情况 我确实需要使用进入 mysql 服务器所需的连接字符串在 MYSQL 中创建一个数据库 到目前为止 我已经使用了带有数据库名称的连接字符串 所以在这种情况下 执行我的连接字符串结构是什么 创建数据库查询到 mysql 服务
  • 使用 Stack 作为全局包管理器的推荐方法

    例如 我想在全球范围内安装一些 Haskell 库hindent我的编辑器的 Haskell 集成使用了它 推荐的方法是什么 我以为stack install hindent是执行此操作的正确方法 然而 后来我想更新我的软件包 发现有没办法
  • 如何以编程方式放大/缩小 WebView 的内容?

    我正在尝试以编程方式放大 缩小应用程序中 WebView 对象的内容 但我找不到一个好的方法来做到这一点 有人可以给我一些帮助吗 如果能有一些代码示例就更好了 最后 lollypop 支持 Zoomby 但在 API 21 下 zoomin
  • React-Native:如何打开本地捆绑的二进制文件

    我正在编写一个反应本机应用程序 我希望它使用包含设备固件更新的 zip 文件进行部署 在让用户发送更新之前 我需要我的代码来打开 zip 并对其内容进行一些验证 我发现了很多 zip 处理 NPM 包 所以我需要做的就是加载文件内容 这样我
  • kubectl run 命令失败并出现连接被拒绝错误

    我正在关注 kubernetes io 上的 hellonode 教程 http kubernetes io docs hellonode http kubernetes io docs hellonode 我在尝试执行 创建您的 Pod
  • 无法使用 Actions SDK 读取意图

    我的 action json 文件中有以下操作 description Recommend movies initialTrigger intent GIVE RECOMMENDATION queryPatterns queryPatter
  • Django 1.4 - 重定向到非 HTTP url

    我们有一个重定向到非 HTTP url 方案的视图 它在 iOS 应用程序中使用 但由于我们已经升级到 Django1 4 因此执行此重定向代码时会发生崩溃 它崩溃了 myyrlscheme 的可疑操作 使用方案 appdev 不安全地重定
  • 在Linux环境下运行.bat

    有没有办法在Linux环境下运行 bat文件 我有几个 bat 文件 它们的目的是调用 mvn install install file 脚本 因此 脚本中不依赖任何操作系统 谢谢你 您可以使用wine http www winehq or
  • Perl foreach 循环变量范围

    我是 Perl 新手 在编写以下代码片段后对 Perl 作用域规则感到困惑 usr bin perl my i 0 foreach i 5 10 print i n print Outside loop i i n 我预计输出如下 5 6
  • 为组织添加用户时常见连接配置文件丢失错误

    我正进入 状态 Error Common connection profile is missing this client s organization and certificate authority 运行时出错gateway get
  • 如何通过gdb调试nodejs插件

    Heading 我正在编写一个 Node Js C 插件 当我尝试通过在互联网上搜索的方式调试我的 C 添加时 它根本无法工作 我从互联网得到的是 gdb节点 设置参数app js 跑步 我明白了 usr local bin node 不是
  • 如何确定“BUS-Error”的原因

    我正在开发一个带有 yocto 发行版和 python 2 7 3 的 variscite 板 我有时会得到总线错误来自 python 解释器的消息 我的程序在错误发生之前至少几个小时或几天正常运行 但是当我得到它一次时 当我尝试重新启动程
  • 使用 JavaScript 编辑 CSS 渐变

    我正在 Firefox 中通过 JavaScript 编辑 CSS 渐变 我有用户可以输入的输入框 1 方向 2 第一种颜色 3 第二种颜色 这是html