所以,我正在尝试使用纯CSS来制作一个覆盖标签的轻微阴影。我希望它在20%和80%的两端淡出。我已经尝试了一段时间来实现这一点,但发现自己对目前的结果并不满意。
这是我想要的图像:
HTML:
<button type="button" class="btn">
<span>Button Text</span>
<span class="buttonshadow"></span>
</button>
CSS:
.btn {
-webkit-border-radius: 0px;
-webkit-border-bottom-right-radius: 5px;
-webkit-border-bottom-left-radius: 5px;
-moz-border-radius: 0px;
-moz-border-radius-bottomright: 5px;
-moz-border-radius-bottomleft: 5px;
border-radius: 0px;
border-bottom-right-radius: 5px;
border-bottom-left-radius: 5px;
font-size: 24px;
padding: 6px 16px 7px;
line-height: 1;
position: relative;
color: #ffffff;
background-color: #5CBCEC;
border-color: #5CBCEC;
display: inline-block;
margin-bottom: 0;
background-image: none;
border: 1px solid transparent;
white-space: nowrap;
overflow: visible;
}
.buttonshadow {
width: 120%;
height: 100%;
position: absolute;
top: 0;
left: -10%;
}
.buttonshadow:before {
content: "";
position: absolute;
z-index: 1;
top: -1px;
left: 0;
width: 100%;
height: 5px;
background: -webkit-radial-gradient(50% -3%, ellipse cover, rgba(00, 00, 00, 0.2), rgba(97, 97, 97, 0.0) 40%);
background: radial-gradient(ellipse at 50% 0%, rgba(0, 0, 0, 0.4), rgba(97, 97, 97, 0) 70%);
}
到目前为止,这是我当前的小提琴:JSFiddle
显然这看起来不一样。非常感谢任何帮助!!!
答案 0 :(得分:3)
如果我正确理解了问题,你需要边缘按钮外的渐变。
问题在于.buttonshadow
和.buttonshadow:before
我把它改成了
.buttonshadow {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: -25px;
}
.buttonshadow:before {
content: "";
position: absolute;
z-index: 1;
top: -1px;
left: 0;
width: 130%;
height: 5px;
background: -webkit-radial-gradient(50% -3%, ellipse cover, rgba(00, 00, 00, 0.2), rgba(97, 97, 97, 0.0) 40%);
background: radial-gradient(ellipse at 50% 0%, rgba(55, 55, 55, 1), rgba(97, 97, 97, 0) 80%);
}
检查小提琴
然后你可以随意使用渐变来获得更多你想要的东西。 希望这有帮助!
注意:如果您想更改渐变的宽度,请更改.buttonshadow:before
中的宽度和.buttonshadow
中的左侧属性
答案 1 :(得分:2)
这是一个可能适合您的解决方案。
<强> Demo Fiddle 强>
为了在末端获得褪色,我不得不将径向渐变压缩一点,然后将其定位为正确。我将它添加到.btn
类而不是单独的元素。
CSS:
.btn:after {
content: '';
display: block;
position: absolute;
width: 120%;
height: 5px;
top: -2px;
left: -10%;
background: -webkit-radial-gradient(center, ellipse cover, rgba(0,0,0,0.45) 0%,rgba(0,0,0,0) 85%);
}
答案 2 :(得分:1)
[我,之前通过评论] 我尝试在按钮的整个宽度上使用跨度的线性渐变,然后通过两侧的椭圆渐变添加褪色阴影在跨度上使用
:before
/:after
元素...
好的,我现在就试着去了 - http://jsfiddle.net/rLsbC/3/
很抱歉,这只是Firefox现在,因为我没有打扰其他浏览器的供应商前缀 - 但添加这些应该不是什么大问题。 (对于那些实际上支持径向渐变的人来说。)
我用span
元素替换了线性渐变
background: linear-gradient(to bottom, rgba(0, 0, 0, 0.4) 0%,
rgba(97, 97, 97, 0) 100%);
然后添加定位:before
/ :after
,其中椭圆形径向渐变位于右上角。这些生成元素的左上角,如此
background: -moz-radial-gradient(top right, ellipse cover, rgba(0, 0, 0, 0.4),
rgba(97, 97, 97, 0) 50%);
必须使span元素本身高一点才能获得线性渐变,椭圆形元素粘在它的两侧以匹配。
如果你把它作为基础并使用渐变的特定值(以及生成元素的宽度/位置),你应该能够非常接近你想要的。