javascript - 如何通过 JavaScript 更改 CSS 渐变?

标签 javascript html css styles

我有一个应用了以下渐变的 div:

/* Mozilla Firefox */ 
background-image: -moz-linear-gradient(top, #2E2E28 0%, #4D4C48 100%);
/* Opera */ 
background-image: -o-linear-gradient(top, #2E2E28 0%, #4D4C48 100%);
/* Webkit (Safari/Chrome 10) */ 
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #2E2E28), color-stop(1, #4D4C48));
/* Webkit (Chrome 11+) */ 
background-image: -webkit-linear-gradient(top, #2E2E28 0%, #4D4C48 100%);
/* IE10+ */
background: -ms-linear-gradient(top,  #2E2E28 0%,#4D4C48 100%);
/* W3C */
background: linear-gradient(top,  #2E2E28 0%,#4D4C48 100%);

如何将“#2E2E28”更改为另一个数字,但仍能避免跨浏览器的噩梦?

最佳答案

以下函数将采用两种颜色作为参数,并返回您指定的样式字符串,并将相应的子字符串替换为给定的颜色。

您可以在实际操作中看到这一点 here .

var makeGradientStyle = function(){
    var gradientString = '\
        /* Mozilla Firefox */ \
background-image: -moz-linear-gradient(top, {colour1} 0%, {colour2} 100%);\
        /* Opera */ \
        background-image: -o-linear-gradient(top, {colour1} 0%, {colour2} 100%);\
        /* Webkit (Safari/Chrome 10) */ \
        background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, {colour1}), color-stop(1, {colour2}));\
        /* Webkit (Chrome 11+) */ \
        background-image: -webkit-linear-gradient(top, {colour1} 0%, {colour2} 100%);\
        /* IE10+ */\
        background: -ms-linear-gradient(top,  {colour1} 0%,{colour2} 100%);\
        /* W3C */\
        background: linear-gradient(top,  {colour1} 0%,{colour2} 100%);\
    ';

    return function(colour1, colour2){
        return gradientString.replace(/\{colour1\}/g, colour1).replace(/\{colour2\}/g, colour2)
    }
}();

然后您可以按如下方式申请。缺点在于您要替换整个样式字符串,但您可以使用

来解决这个问题
var p = document.getElementById('p');

p.setAttribute('style', p.getAttribute('style') + '; ' + makeGradientStyle('#ff0000', '#0000ff'));

关于javascript - 如何通过 JavaScript 更改 CSS 渐变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16218902/

相关文章:

html - 在 CSS 中为线性渐变动态设置背景 url

javascript - HTML, JS, 只获取元素显示的值

javascript - 使用 jQuery 的向上滑动转换将 div 中的内容替换为其他内容

javascript - 使用多个路由时,使用express和chokidar进行热重载会导致http header 发送错误

javascript - 滚动到顶部代码不起作用

javascript - Jest 导入普通 javascript 会导致意外的 token

html - 伪选择器 :checked not showing preceding div

javascript - heroku 不在 https 上加载 jquery

css - 我的 html.erb View 页面中的内联 css 样式的背景图像仅在开发阶段显示,但在 heroku 上不显示在生产阶段

html - 使用 flexbox 创建一个固定的头部