border: 10px solid hsla(0,0%,100%,.5); background: white; background-clip: padding-box;
box-shadowcss
box-shadow: h-shadow v-shadow blur spread color inset;布局
h-shadow 水平偏移 负值表示阴影在左侧spa
v-shadow 垂直偏移 负值表示阴影在上方code
blur 模糊距离事件
spread 扩张半径ip
color 颜色animation
inset 外部阴影改成内部阴影it
一个正值的扩张半径加上两个为零的偏移量以及为零的模糊值
io
支持逗号分隔语法,能够建立任意数量的投影cli
注意:box-shadow 是层层叠加的,第一层投影位于最顶层,依次类推
投影的行为跟边框不彻底一致,由于它不会影响布局,并且也不会 受到 box-sizing 属性的影响,能够经过内边距或外边距(这取决于投影是内嵌和仍是外扩的)来额外模拟出边框所须要占据的空间。
建立出的假“边框”出如今元素的外圈,并不会响 应鼠标事件,好比悬停或点击。给 box-shadow属性加上inset关键字,来使投影绘制在元素的内圈。 图2-6 请注意,此时你须要增长额外的内边距来腾出足够的空隙。
background: yellowgreen; box-shadow: 0 0 0 10px #655, 0 0 0 15px deeppink, 0 2px 5px 15px rgba(0,0,0,.6);
outline
问题:
只须要两层边框
先设置一层常规边框,再加上 outline(描边) 属性来产生外层的边框
经过 outline-offset
属性来控制跟元素边缘之间的间距,能够接受负值(缝边效果)
边框不必定会贴合 border-radius 属性产生的圆角,所以若是元素是圆角的,它的描边可能仍是直角的
问题:
只要一个元素
background: tan; border-radius: .8em; padding: 1em; box-shadow: 0 0 0 .6em #655; outline: .6em solid #655;
描边不会跟着元素圆角走,box-shadow 会
投影扩张值不能小于 (√2 −1)r,(r为border-radius值)
蚂蚁行军边框
@keyframes ants { to { background-position: 100% } } .marching-ants { padding: 1em; border: 1px solid transparent; background: linear-gradient(white, white) padding-box, repeating-linear-gradient(-45deg,black 0, black 25%, white 0, white 50%) 0 / .6em .6em; animation: ants 12s linear infinite; }