我有一个元素.shake
,当它是:hover
动画开始时。我需要继承shake元素属性及其动画:hover
效果。
我有
.inherit-shake {
.shake;
}
它不起作用,因为.inherit-shake
只是继承了主.shake
属性,而是继承了:hover
动画。
有没有办法用Less?
来做到这一点答案 0 :(得分:3)
如果.shake
和.shake:hover
的规则与下面的代码段一样,那么您当前的代码应该按原样运行。
.inherit-shake {.shake;}
.shake{
a:a;
&:hover{b:b;}
}
但是,我认为它们的编写如下,这就是:hover
规则未应用于.inherit-shape
选择器的原因。
.inherit-shake {.shake;}
.shake{a:a;}
.shake:hover{b:b;}
最好的解决方案是使用第一个代码段中提到的模型。但是,如果您因任何原因无法更改源mixin,那么最好使用extend
函数和all
关键字,如下面的代码段所示:
.inherit-shake {&:extend(.shake all);}
.shake{a:a;}
.shake:hover{b:b;}
all
函数中的extend
关键字可确保.inherit-shake:hover
获得与.shake:hover
相同的属性。编译的CSS输出如下所示:
.shake, .inherit-shake {a: a;}
.shake:hover, .inherit-shake:hover {b: b;}
使用extend
函数的优势在于它会自动对选择器进行分组(如上面显示的输出中所示)。