将任何 class 的 &:hover 扩展到 SASS 或 SCSS 中任何其他 class 的悬停
Extend &:hover of any class to any other class's hover in SASS or SCSS
有没有办法将任何 class 的 &:hover
扩展到任何其他 class 的悬停?
我的代码是这样的,它停止了两个 classes:
的悬停
HTML
<a href="#" class="button1">Button 1</a>
<a href="#" class="button2">Button 2</a>
SCSS
.button1 {
background: black;
padding: 5px 10px;
text-decoration: none;
color: white;
&:hover {
background: red;
}
}
.button2 {
background: blue;
padding: 5px 10px;
text-decoration: none;
color: white;
&:hover {
@extend .button1:hover
}
}
您可以使用占位符。
%hover {
background: red;
}
.button1 {
background: black;
padding: 5px 10px;
text-decoration: none;
color: white;
&:hover {
@extend %hover;
}
}
.button2 {
background: blue;
padding: 5px 10px;
text-decoration: none;
color: white;
&:hover {
@extend %hover;
}
}
或者,也许更好的解决方案是为您的按钮使用更通用的 class:
.btn {
padding: 5px 10px;
text-decoration: none;
color: white;
&:hover {
background: red;
}
}
.btn--1 {
background: black;
}
.btn--2 {
background: blue;
}
处理所有这些东西的一个好方法是也使用变量,
例如,如果您定义如下内容:
$buttons-hover-color: #somecolor;
然后你可以在任何按钮中调用它,如果将来你想改变它,只需改变变量,所有按钮都会更新。
另一个重要的事情是 extend 在媒体查询中不起作用,所以也许将来当你针对移动设备时,你不想在移动设备上使用红色,所以你只需要为其创建另一个 var。
像这样:
$btn-hover-color: red;
$btn-hover-mobile: black;
.button1 {
background: black;
padding: 5px 10px;
text-decoration: none;
color: white;
&:hover {
background-color: $btn-hover-color;
}
}
.button2 {
background: blue;
padding: 5px 10px;
text-decoration: none;
color: white;
&:hover {
background-color: $btn-hover-color;
}
@media (max-width: 800px) {
&:hover {
background-color: $btn-hover-mobile;
}
}
}
希望对您有所帮助
试试这个解决方案。它对我有用
http://jsbin.com/lezuwalida/edit?html,css,output
生成的 css 看起来一样
.demon:hover, .demon.demo {
outline: 3px solid red;
}
.demon2:hover, .demon2.demo2 {
outline: 3px solid red;
}
您可以使用mixin
@mixin hoverStyle {
&:hover{
background: red;
}
}
.button1 {
background: blue;
padding: 5px 10px;
text-decoration: none;
color: white;
@include hoverStyle;
}
.button2 {
background: blue;
padding: 5px 10px;
text-decoration: none;
color: white;
@include hoverStyle;
}
有没有办法将任何 class 的 &:hover
扩展到任何其他 class 的悬停?
我的代码是这样的,它停止了两个 classes:
的悬停HTML
<a href="#" class="button1">Button 1</a>
<a href="#" class="button2">Button 2</a>
SCSS
.button1 {
background: black;
padding: 5px 10px;
text-decoration: none;
color: white;
&:hover {
background: red;
}
}
.button2 {
background: blue;
padding: 5px 10px;
text-decoration: none;
color: white;
&:hover {
@extend .button1:hover
}
}
您可以使用占位符。
%hover {
background: red;
}
.button1 {
background: black;
padding: 5px 10px;
text-decoration: none;
color: white;
&:hover {
@extend %hover;
}
}
.button2 {
background: blue;
padding: 5px 10px;
text-decoration: none;
color: white;
&:hover {
@extend %hover;
}
}
或者,也许更好的解决方案是为您的按钮使用更通用的 class:
.btn {
padding: 5px 10px;
text-decoration: none;
color: white;
&:hover {
background: red;
}
}
.btn--1 {
background: black;
}
.btn--2 {
background: blue;
}
处理所有这些东西的一个好方法是也使用变量, 例如,如果您定义如下内容:
$buttons-hover-color: #somecolor;
然后你可以在任何按钮中调用它,如果将来你想改变它,只需改变变量,所有按钮都会更新。 另一个重要的事情是 extend 在媒体查询中不起作用,所以也许将来当你针对移动设备时,你不想在移动设备上使用红色,所以你只需要为其创建另一个 var。
像这样:
$btn-hover-color: red;
$btn-hover-mobile: black;
.button1 {
background: black;
padding: 5px 10px;
text-decoration: none;
color: white;
&:hover {
background-color: $btn-hover-color;
}
}
.button2 {
background: blue;
padding: 5px 10px;
text-decoration: none;
color: white;
&:hover {
background-color: $btn-hover-color;
}
@media (max-width: 800px) {
&:hover {
background-color: $btn-hover-mobile;
}
}
}
希望对您有所帮助
试试这个解决方案。它对我有用 http://jsbin.com/lezuwalida/edit?html,css,output
生成的 css 看起来一样
.demon:hover, .demon.demo {
outline: 3px solid red;
}
.demon2:hover, .demon2.demo2 {
outline: 3px solid red;
}
您可以使用mixin
@mixin hoverStyle {
&:hover{
background: red;
}
}
.button1 {
background: blue;
padding: 5px 10px;
text-decoration: none;
color: white;
@include hoverStyle;
}
.button2 {
background: blue;
padding: 5px 10px;
text-decoration: none;
color: white;
@include hoverStyle;
}