Page 193 - css揭秘
P. 193

在图 6-22 中可以看到在不同的滚动距离下,效果分别是什么样子的。
                                              这好像已经达到我们想要的效果了,但还有一个很大的缺点:当我们只是滚
                                              动了一点距离时,阴影露出的方式非常生硬和突兀。有没有办法让它变得平
                                              滑一些?



                    图 6-22
                    在滚动的不同阶段,两层背景的
                    效果。左图:滚动到最顶部时;
                    中图:往下滚动一点时;右图:
                    往下滚动很长距离时








                    图 6-23
                    为了阴影实现平滑淡出效果,我
                    们首先尝试使用一道从 white 到
                    transparent 的渐变作为遮罩









                                                  别忘了我们的“遮罩层”是一层(逐渐淡化的)线性渐变,只要把它修改
                                              为一段从 white 到透明白色(hsla(0,0%,100%,0) 或 rgba(255,255,255,0))       1 ①
                                              的真正的渐变图案,就可以让阴影的显现过程变得平滑:

                                                  background: linear-gradient(white, hsla(0,0%,100%,0)),
                                                              radial-gradient(at top, rgba(0,0,0,.2),
                                                                              transparent 70%);

                                                  我们的路没有走错。在图 6-23 中可以看到,它可以逐渐地露出阴影,
                                              就像我们期望的那样。不过,它仍然有一个严重的缺陷:当我们滚动到最顶
                                              部的时候,这个“遮罩层”再也无法完整地遮住阴影了。这个问题也是可以
                                              解决的,我们只要把 white 色标向下移动一点(精确地说是 15px,与阴影
                                              的高度相等),就可以在淡化区域之前插入一段白色的实色区域。此外,我
                                              们还需要把遮罩层的尺寸增大,超过阴影的尺寸,否则这个遮罩层就没有由


                                              ①  为什么用透明白色,而不是直接用 transparent ?后者其实是 rgba(0,0,0,0) 的别名,因
                                                为渐变是从白色实色到透明黑色进行过渡的,所以渐变过程中可能会出现灰色色调。如果浏
                                                览器按照规范的要求以一种叫作“预乘 RGBA 空间”(premultiplied RGBA space)的算法进
                                                行颜色的插值计算,这种情况是不会发生的。各种插值算法的具体细节已经超出了本书的范
                                                畴,但网上有很多相关的资料可以参考。



                  162   第 6 章 用户体验







          ඀ࠡ  JOEC
   188   189   190   191   192   193   194   195   196   197   198