Page 121 - css揭秘
P. 121

16 不规则投影







                                                背景知识
                                                box-shadow




                                              难题

                                                  当我们想给一个矩形或其他能用 border-radius 生成的形状(在“自
                                              适应的椭圆”一节中可以看到一些示例)加投影时,box-shadow 的表现都
                                              堪称完美。但是,当元素添加了一些伪元素或半透明的装饰之后,它就有些
                                              力不从心了,因为 border-radius 会无耻地忽视透明部分。这类情况包括:

                                                     „ 半透明图像、背景图像、或者 border-image(比如老式的金质像框);
                                                     „ 元素设置了点状、虚线或半透明的边框,但没有背景(或者当
                                                     background-clip 不是 border-box 时);
                                                     „ 对话气泡,它的小尾巴通常是用伪元素生成的;
                                                     „ 我们在“切角效果”一节中见过的切角形状;
                                                     „ 几乎所有的折角效果,包括“折角效果”一节将提到的例子;

                                                     „ 通过 clip-path 生成的形状,比如“菱形图片”一节中提到的菱形
                                                     图像。

                                                  如果我们打算对这类元素直接应用 box-shadow,那只能得到图 4-6 这
                                              样的结果。难道我们只能完全放弃投影效果吗?有没有办法可以解决这个
                                              难题?


                    图 4-6
                    通过 CSS 美化过的元素无法完美
                    地渲染 box-shadow;图中 box-
                    shadow 的值为 2px  2px  10px
                    rgba(0,0,0,.5)











                   90   第 4 章 视觉效果







          ඀ࠡ  JOEC
   116   117   118   119   120   121   122   123   124   125   126