在这个CodePen示例中,使用了一个过滤器将蓝色变成灰色:
filter: grayscale(100%);
如何使用CSS滤镜将颜色更改为蓝色/红色/绿色?
filter: grayscale(100%);
如何使用CSS滤镜将颜色更改为蓝色/红色/绿色?
使用hue-rotate()
滤镜非常容易。
将图像设置为红色,色相值为0,然后使用色相图表获取所需的色相旋转颜色。
使用filter:grayscale(1)
将所有图像设置为灰色,然后在悬停时将灰度设置为0并调整颜色值。
.colorRed,.colorBlue, .colorGreen {filter:grayscale(1);}
.colorRed:hover,.colorBlue:hover, .colorGreen:hover {filter:grayscale(0);}
.colorRed img:hover {filter:hue-rotate(0deg);}
.colorBlue img:hover {filter:hue-rotate(215deg);}
.colorGreen img:hover {filter:hue-rotate(100deg);}
<span class="colorGreen"><img src="https://i.imgur.com/ZbOHifU.png" width="100px";></span>
<span class="colorBlue"><img src="https://i.imgur.com/msjbI0M.png" width="100px";></span>
<span class="colorRed"><img src="https://i.imgur.com/tycbKyW.png" width="100px";></span>
<div class="colorRed"><img src="https://i.imgur.com/A7A9wec.jpg" width="500px";></div>
<div class="colorBlue"><img src="https://i.imgur.com/A7A9wec.jpg" width="500px";></div>
<div class="colorGreen"><img src="https://i.imgur.com/A7A9wec.jpg" width="500px";></div>
你可以使用滤镜hue-rotate(*x*deg)
来改变颜色,这里我附上代码。
body {
align-items: center;
display: flex;
font-family: Helvetica, sans-serif;
height: 100vh;
justify-content: center;
margin: 0;
}
body div {
font-size: 15px;
margin-top: 15px;
text-align: center;
}
form#smileys input[type="radio"] {
-webkit-appearance: none;
width: 90px;
height: 90px;
border: none;
cursor: pointer;
transition: border .2s ease;
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
margin: 0 5px;
transition: all .2s ease;
}
form#smileys input[type="radio"]:focus {
outline: 0;
}
form#smileys input[type="radio"].happy:hover,form#smileys input[type="radio"].happy:checked{
-webkit-filter: hue-rotate(300deg);
filter: hue-rotate(300deg);
}
form#smileys input[type="radio"].happy {
background: url("https://res.cloudinary.com/turdlife/image/upload/v1492864443/happy_ampvnc.svg") center;
background-size: cover;
}
form#smileys input[type="radio"].neutral:hover,form#smileys input[type="radio"].neutral:checked{
-webkit-filter: hue-rotate(10deg);
filter: hue-rotate(10deg);
}
form#smileys input[type="radio"].neutral {
background: url("https://res.cloudinary.com/turdlife/image/upload/v1492864443/neutral_t3q8hz.svg") center;
background-size: cover;
}
form#smileys input[type="radio"].sad:hover,form#smileys input[type="radio"].sad:checked{
-webkit-filter: hue-rotate(160deg);
filter: hue-rotate(160deg);
}
form#smileys input[type="radio"].sad {
background: url("https://res.cloudinary.com/turdlife/image/upload/v1492864443/sad_bj1tuj.svg") center;
background-size: cover;
}
.mtt {
position: fixed;
bottom: 10px;
right: 20px;
color: #999;
text-decoration: none;
}
.mtt span {
color: #e74c3c;
}
.mtt:hover {
color: #666;
}
.mtt:hover span {
color: #c0392b;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<form id="smileys">
<input type="radio" name="smiley" value="sad" class="sad">
<input type="radio" name="smiley" value="neutral" class="neutral">
<input type="radio" name="smiley" value="happy" class="happy" checked="checked">
<div>It looks like you're feeling <span id="result">happy</span> today..</div>
</form>
<a class="mtt" href="https://morningtrain.dk" target="_blank">
With <span>♥</span> from Morning Train
</a>
</body>
</html>
有一个名为hue-rotate
的滤镜可以实现类似的效果https://developer.mozilla.org/en-US/docs/Web/CSS/filter
你为什么要使用滤镜呢?你可以直接使用color
或background-color
属性来实现这个效果。