所以我在一个元素上有一个线性渐变,当我悬停元素而不再次编写所有规则时,我想将渐变角度更改为倒置。这可能吗?
问问题
1192 次
2 回答
2
sass
您可以通过使用和 mixins使其更干燥。
@mixin gradient($angle) {
background: linear-gradient($angle , rgb(23,125,250) 28%, rgb(0,0,0) 80%);
}
#grad {
@import gradient("bottom");
}
#grad:hover {
@import gradient("right");
}
于 2012-05-22T09:21:48.940 回答
1
为什么不?hover
只需通过在 CSS 中指定伪类来为状态创建规则:
#grad {
background-image: linear-gradient(bottom, rgb(23,125,250) 28%, rgb(0,0,0) 80%);
}
#grad:hover {
background-image: linear-gradient(right , rgb(23,125,250) 28%, rgb(0,0,0) 80%);
}
如果您希望遵循 DRY 原则,请将这些规则创建为辅助类,而不是将它们附加和分离到元素。这是一个使用 jQuery 的示例:
CSS:
.grad {
background-image: linear-gradient(bottom, rgb(23,125,250) 28%, rgb(0,0,0) 80%);
}
.grad-rotated {
background-image: linear-gradient(right , rgb(23,125,250) 28%, rgb(0,0,0) 80%);
}
JS:
$('.grad').hover(
function() {
$(this).toggleClass('grad', false).toggleClass('grad-rotated', true);
},
function() {
$(this).toggleClass('grad', true).toggleClass('grad-rotated', false);
}
);
参考:
注意:为方便起见,此处仅显示属性值的基本形式linear-gradient
,为提供跨浏览器兼容性,请添加供应商特定的前缀属性值(例如-o-linear-gradient
, -moz-linear-gradient
)。
免责声明:由于用户代理将更有效地呈现 CSS,通常最好选择基于 CSS 的解决方案而不是基于 JS 的解决方案。
于 2012-05-22T08:39:00.507 回答