《CSS揭秘》读书笔记(三):视觉效果
投影效果
可以通过box-shadow
生成投影,但是通常在设置了模糊半径后投影的最外圈会向四周扩散,如果通过设置一个大于模糊半径的偏移量,则会导致外露的阴影太过浓重,视觉效果不是很完美
1 | div { |
那么如何在元素的一侧或者两侧生成美观的投影呢?
单侧及两侧投影
单侧投影
通过设置一个负的且与模糊半径相等的扩张半径来“抵消”侧面的模糊效果
1
2
3div {
box-shadow: 0 5px 4px -4px black;
}邻边投影
将扩张半径设置为模糊半径的一半,偏移量设置为大于或等于模糊半径的一半
1
2
3div {
box-shadow: 5px 5px 6px -3px black;
}对边投影
在对边使用两次单侧投影
1
2
3
4div {
box-shadow: 5px 0px 5px -5px black,
-5px 0px 5px -5px black;
}
不规则投影
使用box-shadow
无法对伪元素或者元素中透明的部分做很好的调整
1 | div { |
可以使用filter
中的drop-shadow()
效果
1 | div { |
染色效果
基于滤镜的方案
将多个滤镜组合可以实现染色效果
1 | img { |
基于混合模式的方案
luminosity
混合模式会保留上层元素的HSL亮度信息,并从它的下层吸取色相饱和度
mix-blend-mode
可以为整个元素设置混合模式,需要把图片包裹在一个容器中,并把容器的背景色设置为想要的主色调
1 | <div id="color-mix-blend-mode"> |
1 | #color-mix-blend-mode { |

折角效果
45°折角
可以通过增加一层渐变来生成一个暗色的三角形,需要注意的是要使用勾股定理正确计算尺寸
Some of us get dipped in flat, some in satin, some in gloss.... But every once in a while you find someone who's iridescent, and when you do, nothing will ever compare
1 | div { |
其他角度及效果
通过对伪元素添加旋转、阴影等方法可以使效果更逼真
Some of us get dipped in flat, some in satin, some in gloss.... But every once in a while you find someone who's iridescent, and when you do, nothing will ever compare
1 | div { |