边框渐变与border-radius是否兼容?
P粉824889650
2023-08-21 20:39:38
<p>我正在为一个具有圆角边框(border-radius)的输入框添加样式,并尝试为该边框添加渐变效果。我可以成功地创建渐变和圆角边框,但两者不能同时生效。要么是有圆角但没有渐变,要么是有渐变但没有圆角。</p>
<pre class="brush:php;toolbar:false;">-webkit-border-radius: 5px;
-webkit-border-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b0bbc4), to(#ced9de)) 1 100%;</pre>
<p>是否有办法让这两个CSS属性同时生效,或者这是不可能的?</p>
这是可能的,并且不需要额外的标记,而是使用了一个
::after
伪元素。它涉及在下方放置一个带有渐变背景的伪元素,并对其进行裁剪。这在所有当前浏览器中都可以工作,无需供应商前缀或hack(甚至是IE),但如果您想要支持旧版本的IE,您应该考虑使用纯色回退、javascript和/或自定义的MSIE CSS扩展(即
filter
,类似CSSPie的矢量技巧等)。这是一个实时示例(jsfiddle版本):
上面的额外样式是为了展示:
box-shadow
一起工作得很好,无论是否使用inset
再次强调,这适用于IE、Firefox和Webkit/Blink浏览器。
可能不可能,根据W3C规范:
这可能是因为
border-image
可以采用一些可能复杂的图案。如果你想要一个圆形的图像边框,你需要自己创建一个。