假设一个元素的饱和度、不透明度等达到了100%,当悬停在上面时,如何让它的背景稍微变浅?
使用情景是我允许用户悬停在页面上的任何元素上。我不想确定每个颜色相当于80%的不透明度。
一种方法是改变
使用情景是我允许用户悬停在页面上的任何元素上。我不想确定每个颜色相当于80%的不透明度。
一种方法是改变
opacity: 0.4
,但我只想改变背景。opacity: 0.4
,但我只想改变背景。这里有一个简单的方法来做到这一点:
.myElement:hover {
filter: brightness(150%);
}
.v-image__image
,但如果这种方式可行,为什么还要费心呢,谢谢! - ajax333221虽然时间已经很久远,但您仍然可以像这样做:
.element {
background-color: red;
}
.element:hover {
box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.1);
}
您可以将100px更改为您想要的数字。我选择了一个大数字来覆盖整个元素。
虽然这不是一个非常优美的解决方案,但它确实起作用!
以下是一个示例:http://jsfiddle.net/6nkh3u7k/5/
inset
值应该在最后而不是在最前面。 - beercohol255
改为 0
,那么这也可以用来使元素变暗,从而将白色变成黑色。 - styfle示例:
.btn {
background-color: #0077dd;
display: inline-flex;
align-content: center;
padding: 1em 2em;
border-radius: 5px;
color: white;
font-size: 18px;
margin: 0.5em;
cursor: pointer;
}
.btn.brighten:hover {
box-shadow: inset 0 0 0 10em rgba(255, 255, 255, 0.3);
}
.btn.darken:hover {
box-shadow: inset 0em 0em 0em 10em rgba(0, 0, 0, 0.3);
}
<span class="btn brighten">Brighten on Hover</span>
<span class="btn darken">Darken on Hover</span>
你应该使用RGBa方法(background-color:rgba(R,G,B,alpha);
)来实现这一点:
.element{
background-color:rgba(0,0,0,1); /*where 1 stands for 100% opacity*/
}
.element:hover{
background-color:rgba(0,0,0,0.5); /*where 0.5 stands for 50% opacity*/
}
如果您强烈需要在IE8或更低版本中使其工作,以下是实现方法:
.element:hover{
background: transparent;
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#7F000000,endColorstr=#7F000000)"; /* IE8 */
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#7F000000,endColorstr=#7F000000); /* IE6 & 7 */
zoom: 1;
}
请注意,startColorstr
和endColorstr
的值应该按照这种方式构建:#AARRGGBB
(其中AA是Alpha通道),如果您不想要从一种颜色到另一种颜色的渐变效果,则这些值必须相同。
rgba()
在IE8中不受支持:http://caniuse.com/#search=rgba - user166560CSS3
。 - Roko C. Buljanrgba()
都包含在 CSS3 规范中。使用 CSS3 不一定排除对 IE8 的支持。我只是指出使用 rgba()
可能存在的缺点。 - user166560我建议使用:after
伪元素代替常规背景。它在IE8中得到支持,而rgba()
则不被支持。
HTML:
<div class="hoverme">
<p>Lorem ipsem gimme a dollar!</p>
</div>
.hoverme {
position: relative;
}
.hoverme:after {
content: "";
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
background-color: #fff;
z-index: -1;
}
.hoverme:hover:after {
background-color: #ddd;
}
或者类似的东西。
http://caniuse.com/#search=%3Aafter
为了获得更平滑的结果,请添加CSS3过渡效果:
.hoverme:after {
-webkit-transition: all 0.3s ease-out; /* Chrome 1-25, Safari 3.2+ */
-moz-transition: all 0.3s ease-out; /* Firefox 4-15 */
-o-transition: all 0.3s ease-out; /* Opera 10.50–12.00 */
transition: all 0.3s ease-out; /* Chrome 26, Firefox 16+, IE 10+, Opera 12.10+ */
}
前面的代码片段是从http://css3please.com复制并粘贴而来的。
您可以仅使用CSS来完成此操作,使用filter: brightness();
,但目前仅受WebKit浏览器支持。请参见http://jsfiddle.net/jSyK7/