2、多重边框

2017-03-30  本文已影响0人  Elevens_regret

1. box-shadow方案

box-shadow还接受第四个参数,表示扩张半径,可以使用第四个参数来模仿边框。

background: yellowgreen;
box-shadow: 0 0 0 10px #655; // 视觉效果上类似于 border: 10px solid #655;

因为box-shadow可以使用逗号分隔语法生成多个阴影,利用这一特点可以实现多重边框。

background: yellowgreen;
box-shadow: 0 0 0 10px #655,
            0 0 0 15px deeppink,
            0 0 0 20px blue;

使用多个阴影时,阴影之间层层叠加,第一层阴影位于最顶端,依次类推。需要注意的是:因为阴影不会影响布局,所以阴影生成的边框也不会影响布局,并且不会响应元素上的鼠标事件,如果想要阴影响应鼠标事件,可以将阴影改为内部阴影,再加上额外的内边距来保证盒子的大小不发生变化(在没有设置box-sizing属性时,只是视觉效果上的没有变化)。

box-shadow: 0 0 0 5px blue inset,
            0 0 0 10px deeppink inset,
            0 0 0 20px #655 inset;
padding: 20px;
// 由于阴影在盒子内部,加上额外的内边距之后,盒子视觉上总大小不变,但是阴影部分也会相应鼠标事件,注意外边框改内边框时颜色的顺序变化。

box-shadow方案只能生成实现的边框。


2. outline解决方案

当只需要两层边框时,可以使用outline属性。

background: yellowgreen;
border: 10px solid #655;
outline: 5px solid deeppink;

outline方案的优势在于可以生成虚线边框:

background: yellowgreen;
border: 10px solid #655;
outline: 5px dashed deeppink;

outline的另一个好处在于可以使用outline-offset属性来控制描边与边框之间的距离,并且可以为负值,可以利用这一特点来实现内部边框效果。

background: #655;
outline: 1px dashed white;
outline-offset: -10px;

需要注意的是outline目前不会贴合圆角,未来可能会改变这一现象。

    background: yellowgreen;
    border-radius: 10px;
    outline: 1px solid #655;
上一篇 下一篇

猜你喜欢

热点阅读