前端练习十一:视觉效果示例
1.单侧投影
box-shadow 的第三个参数为模糊半径,该值并不会影响到投影的大小,它是从投影的边缘开始计算,像内开始模糊。
box-shaodw 的第四个参数为拓展半径,该值设置为正值时,投影会在四个方向上加上该正值。如果该值为负值,则投影会在四个方向上减去该负值的绝对值。
box-shadow 可以指定 inset 关键字,将投影设置为内投影。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <style type="text/css"> .box { width: 240px; height: 160px; margin: 24px auto; background-color: #f07810; box-shadow: 0 5px 4px -4px #000; } </style> </head> <body> <div class="box"></div> </body> </html>
2.不规则投影

当我们为一些伪元素或者半透明的元素添加了 box-shadow 就会遇到以上问题,这类情况包括:
1. 半透明图像、背景图像、或者 border-image。
2. 元素设置了点状、虚线或者半透明的边框,但没有背景。
3. 对话气泡的小尾巴。切角效果。折角效果。利用 clip-path 生成的菱形图片。
解决以上问题的办法是使用 filter 的 drop-shadow 属性。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <style type="text/css"> .container { display: flex; flex-flow: row nowrap; justify-content: center; padding-top: 32px; } .shape { width: 120px; height: 120px; line-height: 120px; text-align: center; background-color: #ff5959; box-sizing: border-box; } .shape:not(:last-child) { margin-right: 36px; } .shape-1 { position: relative; border-radius: 8px; box-shadow: 0 0 4px 1px rgba(0,0,0,0.5) } .shape-1::after { content: ""; position: absolute; top: 50%; left: 100%; width: 0; height: 0; border: 12px solid #ff5959; border-color: transparent transparent transparent #ff5959; transform: translateY(-50%); } .shape-2 { border: 8px dashed #ff5959; background-color: #FFF; box-shadow: 0 0 4px 1px rgba(0,0,0,.5); } .shape-3 { background: linear-gradient(135deg, transparent 16px, #ff5959 0) left top, linear-gradient(-135deg, transparent 16px, #ff5959 0) right top, linear-gradient(45deg, transparent 16px, #ff5959 0) left bottom, linear-gradient(-45deg, transparent 16px, #ff5959 0) right bottom; background-size: 50% 50%; background-repeat: no-repeat; box-shadow: 0 0 4px 1px rgba(0,0,0,.5); } </style> </head> <body> <div class="container"> <div class="shape shape-1">Hello World</div> <div class="shape shape-2">Hello World</div> <div class="shape shape-3">Hello World</div> </div> </body> </html>
示例2:
drop-shadow 和 box-shadow 相比,它没有第四个参数拓展半径,也不支持以逗号分隔的多层设置语法。
drop-shadow 会给任何非透明的部分打上投影,包括文本(如果背景是透明的)。

https://hwaphon.github.io/WebProject/CSSSecrets/index.html#/
posted on 2018-12-29 18:05 myworldworld 阅读(152) 评论(0) 收藏 举报
浙公网安备 33010602011771号