我想为按钮添加一个透明的黑色覆盖图':活动状态,所以当你点击它时,它是相同的渐变,但只有一个例如rgba(0,0,0,.3)
我认为这样做的方式是(在本例中使用webkit):
background:rgba(0,0,0,.3), -webkit-linear-gradient(top, #fcfcfc 0%,#bababa 100%);
或没有逗号,顺序反转......但根本没有任何显示!
我并不热衷于添加另一个div作为覆盖来实现它,所以有一种严格的CSS方式来做到这一点吗?我想也许它是:before
或:after
伪类,但我不知道如何使用它们!
非常感谢答案,这一直困扰着我。
答案 0 :(得分:3)
你做不到; rgba
定义颜色,而不是图像。您可以做的是使用不是渐变的渐变:
background: -webkit-linear-gradient(rgba(0, 0, 0, .3), rgba(0, 0, 0, .3)), -webkit-linear-gradient(top, #fcfcfc 0%,#bababa 100%);
这就是为什么我总是指定background-image
而不是在开发时使用速记 - 它使调试更容易。
答案 1 :(得分:2)
您可以使用::after
伪元素。
首先,您需要使用position: relative
定义按钮CSS,然后将::after
与position: absolute
一起使用,如下所示:
.button {
position: relative;
}
.button:active::after {
content: ' ';
position: absolute;
background: rgba(0, 0, 0, 0.3);
top: 0;
left: 0;
bottom: 0;
right: 0;
}
答案 2 :(得分:1)
设置background-color: black
并覆盖渐变,颜色从十六进制转换为rgba(最初设置为1
表示alpha),然后在:active
上将渐变淡化为0.7
(将显示30%黑色)alpha。
button {
background-color: black;
background-image: -webkit-linear-gradient(top, rgba(252, 252, 252, 1) 0%, rgba(186, 186, 186, 1) 100%);
background-image: -moz-linear-gradient(top, rgba(252, 252, 252, 1) 0%, rgba(186, 186, 186, 1) 100%);
}
button:active {
background-image: -webkit-linear-gradient(top, rgba(252, 252, 252, .7) 0%, rgba(186, 186, 186, .7) 100%);
background-image: -moz-linear-gradient(top, rgba(252, 252, 252, .7) 0%, rgba(186, 186, 186, .7) 100%);
}