0
点赞
收藏
分享

微信扫一扫

被低估的border-image属性


在很长一段时间内,border-image 属性就是个鸡肋属性,有着非常怪异的渲染机制,需要把图切成 9 块,分别填充到边框的 9 个区域。 几乎所有的 CSS 样式渲染属性,无论是渐变、圆角、盒阴影、滤镜还是混合模式,都可以从设计软件中找到对应的设置选项,唯一一个例外就是 border-image。 为什么会出现这种现象呢? 现在的小年轻肯定不知道背后的原因,容我来给大家讲讲。 在 CSS3 还没有出现的年代,那个时候,所有的彩色效果、所有的圆角效果一定是PNG小图片实现的,例如,一些渐变按钮,还有一些渐变选项卡。 当时,为了让这些图像可以适应足够多的文字,会通过特殊的切图,通过两层 HTML 标签嵌套,配合 background-position 属性实现。 比方说下图就是当年实现1-7个字符宽度自适应选项卡使用的 PNG 小图片,中间有一段镂空: 自适应选项卡 PNG 图 HTML 结构是这样的: <a href class="outer"> <span class="inner">选项卡</span> </a > 看起来 border-image 属性还有点用,但是大家仔细观察上面的效果图,很容易就会发现,这些所谓的自适应效果,圆角效果,特么直接 Gradient 渐变、box-shadow 盒阴影以及 border-radius 圆角就可以实现,代码简单易上手,关键是兼容性绝赞(IE10+支持),比 border-image 属性的兼容性(IE11+)还要好,资源开销也小,这就导致没有任何需要使用 border-image 的理由。 border-image 属性从此沦为了鸡肋,只在某些花里花哨的边框装饰场景还有一点使用价值(因为不得不使用图片)。 然而,故事在这里并没有结束,随着时间的流逝,从 2012 年开始,在接下来1-2年的时间内,随着某一些新特性的支持,border-image 属性迎来了新生,开始在特定的场景下绽放出别样的竞争力。 这个特性就是: 2012年7月 Firefox 和 Safari 紧随 Chrome 浏览器的步伐对 border-image 新语法支持,包括:border-image:fill 和 border-image-outset 属性; 2014年4月,Firefox 浏览器终于支持了 border-image 的渐变图像功能。 这两个新变化让 border-image 属性迎来了新生,成为了一个被远远低估的 CSS 属性。

举报

相关推荐

0 条评论