使用background-clip实现透明边框

你有没有在网页上见过具有透明边框的元素?我觉得正是因为Facebook使用了类似于Facebox的灯箱插件,才使得透明边框这一技术发扬光大。但我并不认为Facebook现在还觉得这种样式依旧很时髦,不过至少还是十分明晰整洁的。

你可能觉得实现这样的效果非常简单,只需要以下CSS代码:


#lightbox {
    background: white;
    border: 20px solid rgba(0, 0, 0, 0.3);
}


但是如果这样写的话,元素的透明边框就会透出边框下面给该元素本身设置的背景。

在上面的截图中,边框已经用了RGBa设置为透明,但是边框却显示为不透明的灰色,这是因为该元素的白色背景透过边框显示了出来。

幸运的是,CSS3有个属性拯救了我们!这个属性就是background-clip,它正式用来指定在一个盒模型中,究竟哪一部分能够用来显示背景。它做的事儿正如它的名字一样:background-clip(背景剪裁)。它可以将盒子的指定部分的背景裁去。这一属性可以有三个值,而且也可以加上供应商前缀。一下就是该属性的三种设置。你不用同时使用如下代码,这里仅是为了显示方便而已:


#lightbox {
-moz-background-clip: border; /* Firefox 3.6 */
-webkit-background-clip: border; /* Safari 4? Chrome 6? */
background-clip: border-box; /* Firefox 4, Safari 5, Opera 10, IE 9 */

 

-moz-background-clip: padding; /* Firefox 3.6 */
-webkit-background-clip: padding; /* Safari 4? Chrome 6? */
background-clip: padding-box; /* Firefox 4, Safari 5, Opera 10, IE 9 */

 

-moz-background-clip: content; /* Firefox 3.6 */
-webkit-background-clip: content; /* Safari 4? Chrome 6? */
background-clip: content-box; /* Firefox 4, Safari 5, Opera 10, IE 9 */}


以下是图示:

我确信写道这里你已经明白透明边框如何设置了:如果我们将background-clip设置为padding-box的话,白色背景就会在边框处被裁掉,然后透明边框就可以透出该元素下面的内容了,这也正是我们想要的效果!

 

 

原文链接:http://article.yeeyan.org/view/211428/378443

posted @ 2015-07-07 16:54  半前端半设计的四不像  阅读(853)  评论(0)    收藏  举报