通过 scss 悬停来减轻个人背景颜色 - 如何?
Lighten individual background-color with hover by scss - how?
我有一些具有不同背景颜色的块(在变量中设置),如果用户将鼠标悬停在其中一个块上,颜色应该 light/fade 一点。
所以我用这个:
.block1:hover,.block2:hover{
background-color:lighten($color1,40%);
}
但这只是将一种静态颜色 - $color1 - 淡化到 40%。如果 .block1 设置了 $color1 并且 .block2 设置了 $color2 作为背景颜色,我该怎么做?所以结果应该是
.block1:hover{
background-color:lighten($color1,40%);
}
.block2:hover{
background-color:lighten($color2,40%);
}
我需要用什么?
使用 mixin,像这样:
.block1 {
.backgroundsetup($color1);
}
.block2 {
.backgroundsetup($color2);
}
.backgroundsetup($color, $amt: 40%) {
background-color: $color;
&:hover {
background-color: lighten($color, $amt);
}
}
在 SCSS 中的示例中,没有特殊的方法来编写 CSS,您就是这样做的。但是如果你想优化和编写更少的代码,那么你可以利用 SASS' hashmaps 和 foreach 循环来为你做这件事。
SASS
$color1: #4e9bac;
$color2: #248cff;
$color3: #3b5998;
$blocks: (
block1: $color1,
block2: $color2,
block3: $color3,
);
@each $block, $color in $blocks {
.#{$block} {
background-color: $color;
&:hover {
background-color: lighten($color, 40%);
}
}
}
CSS输出
.block1 {
background-color: #4e9bac;
}
.block1:hover {
background-color: #d8eaee;
}
.block2 {
background-color: #248cff;
}
.block2:hover {
background-color: #f0f7ff;
}
.block3 {
background-color: #3b5998;
}
.block3:hover {
background-color: #bbc8e4;
}
我有一些具有不同背景颜色的块(在变量中设置),如果用户将鼠标悬停在其中一个块上,颜色应该 light/fade 一点。
所以我用这个:
.block1:hover,.block2:hover{
background-color:lighten($color1,40%);
}
但这只是将一种静态颜色 - $color1 - 淡化到 40%。如果 .block1 设置了 $color1 并且 .block2 设置了 $color2 作为背景颜色,我该怎么做?所以结果应该是
.block1:hover{
background-color:lighten($color1,40%);
}
.block2:hover{
background-color:lighten($color2,40%);
}
我需要用什么?
使用 mixin,像这样:
.block1 {
.backgroundsetup($color1);
}
.block2 {
.backgroundsetup($color2);
}
.backgroundsetup($color, $amt: 40%) {
background-color: $color;
&:hover {
background-color: lighten($color, $amt);
}
}
在 SCSS 中的示例中,没有特殊的方法来编写 CSS,您就是这样做的。但是如果你想优化和编写更少的代码,那么你可以利用 SASS' hashmaps 和 foreach 循环来为你做这件事。
SASS
$color1: #4e9bac;
$color2: #248cff;
$color3: #3b5998;
$blocks: (
block1: $color1,
block2: $color2,
block3: $color3,
);
@each $block, $color in $blocks {
.#{$block} {
background-color: $color;
&:hover {
background-color: lighten($color, 40%);
}
}
}
CSS输出
.block1 {
background-color: #4e9bac;
}
.block1:hover {
background-color: #d8eaee;
}
.block2 {
background-color: #248cff;
}
.block2:hover {
background-color: #f0f7ff;
}
.block3 {
background-color: #3b5998;
}
.block3:hover {
background-color: #bbc8e4;
}