首页 > 技术文章 > css多样边框

71yishen 2020-12-24 11:42 原文

半透明边框

div{
border: 10px solid rgba(255,255,255,.5); 
background: white; 
background-clip: padding-box;  /*关键代码*/
}

仅仅将边框颜色设为半透明是不能实现半透明边框的,因为默认情况下,背景会延伸到边框所在区域下层,也就是说边框以内的都是背景。

通过设置background-clip:padding-box(默认是border-box),让背景只延伸到padding下层,就是通过padding外沿来裁剪背景,达到半透明边框。

多重边框

/* box-shadow 实现方案 */
div {
    box-shadow: 0 0 0 10px #655,
            0 0 0 15px pink,
            0 2px 5px 15px rgba(0,0,0,.6);    
}

/* border/outline 实现方案 */
div {
    border: 10px solid #655;
    outline: 5px solid pink;
}

box-shadow:实现方案通过box-shadow 的第四个参数(扩张半径)。一个正值的扩张半径加上两个为零的偏移量以及为零的模糊值,得到的“投影”其实就像一道实线边框。而借助 box-shadow 支持逗号分割语法,可创建任意数量的投影,因此我们就可实现多重边框效果。

border/outline:border和outline各代表一层边框。这个方案可实现虚线边框,但它只能实现两层边框。

边框内圆角

div {
    outline: .6em solid #655;
    box-shadow: 0 0 0 .4em #655; /* 关键代码 */
    border-radius: .8em;
}

outline 不会跟着元素的圆角走(因而显示出直角),但 box-shadow 确实会的,因此,将两者叠加到一起,box-shadow(其扩张值大概等于 border-radius 值的一半) 会刚好填补 outline 和容器圆角之间的空隙,因此可达到我们想要的效果。

 

推荐阅读