【发布时间】:2019-07-13 16:47:46
【问题描述】:
我有一个从 .btn-1 获取样式的按钮。:
<a id="button1" class="btn btn-1">Hover me</a><br>
在脚本中,我有三个变量,将它们组合在一个字符串中以在按钮上创建渐变颜色:
var color1 = "#fdceaa";
var color2 = "#FFFFFF";
var color3 = "#FFFFFF";
var color = 'linear - gradient(to right, ' + color1 + ' 0 % , ' + color2 + ' 51 % ,' + color3 + ' 100 % )'
然后我想把这个“color”variable应用到背景图片,让按钮有不同的渐变色。
我尝试了两种不同的方法,一种使用 document.querySelector,另一种使用 jQuery $('.btn.btn-1').css,但都没有工作(它没有改变按钮的颜色):
document.querySelector('.btn.btn-1')['background-image'] = color;
$('.btn.btn-1').css('background-image', color);
控制台没有错误...
完整代码:
<style>
body {
font-family: 'Montserrat', sans-serif;
margin: 0;
}
.container {
display: flex;
justify-content: center;
align-items: center;
align-content: center;
flex-wrap: wrap;
width: 100%;
margin: 0 auto;
height: 100%;
}
.btn {
flex: 1 1 auto;
margin: 10;
padding: 20px;
text-align: center;
transition: 0.5s;
background-size: 200% auto;
color: white;
box-shadow: 0 0 20px #eee;
border-radius: 1000px;
}
.btn:hover {
background-position: right center;
}
.btn-1 {
background-image: linear-gradient(to right, #f6d365 0%, #fda085 51%, #f6d365 100%);
}
</style>
<body>
<div class="container">
<a id="button1" class="btn btn-1">Hover me</a><br>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
var color1 = "#fdceaa";
var color2 = "#FFFFFF";
var color3 = "#FFFFFF";
var color = 'linear - gradient(to right, ' + color1 + ' 0 % , ' + color2 + ' 51 % ,' + color3 + ' 100 % )'
document.querySelector('.btn.btn-1')['background-image'] = color;
$('.btn.btn-1').css('background-image', "red");
</script>
</div>
</body>
【问题讨论】:
-
#1。空格是“线性渐变”CSS代码中的问题......但这可能不是你唯一的问题。我看看能不能解决
-
#2。你最好从 CSS 类“A”切换到 CSS 类“B”——而不是尝试在运行时应用样式。 .... 意味着您的算法应该删除 btn-1 并添加 btn-gradient。然后将渐变标记放入 CSS 文件中。除非颜色选择是动态的。
-
我不能有一个预定的类,因为 vars(color 1,2,3) 会改变,它们不会是静态的。
-
那么你仍然应该在应用新样式之前删除 btn1 类......并且
linear-gradient没有空格...... -
$('.btn.btn-1').css('background-image', color +"!important");试试这个
标签: javascript jquery html css