Page 192 - css揭秘
P. 192

我们可以给 <ul> 元素设置一些基本的样式,让它的高度略短于内容,
                    从而让其内容可以滚动:


                        overflow: auto;
                        width: 10em;
                        height: 8em;
                        padding: .3em .5em;
                        border: 1px solid silver;


                        接下来,有趣的事情即将发生。我们用一个径向渐变在顶部添加一条
                    阴影:

                        background: radial-gradient(at top, rgba(0,0,0,.2),
                                                   transparent 70%) no-repeat;
                        background-size: 100% 15px;

                        你可以在图 6-21 中看到结果。现在,当我们滚动列表时,这条阴影会
                    一直停留在相同的位置。这正是背景图像的默认行为:它的位置是相对于元
                    素固定的,不论元素的内容是否发生了滚动。这一点也适用于 background-
                    attachment:  fixed 的背景图像。它们唯一的区别是,当页面滚动时,后者
                    是相对于视口固定的。有没有办法让背景图像跟着元素的内容一起滚动呢?
                        在几年以前,这件看似简单的小事还是不可能完成的任务。由于这个问
                    题非常突出,背景与边框(第三版)(http://w3.org/TR/css3background/#-local0)
                    为 background-attachment 属性增加了一个新的关键字,叫作 local。

                        不过 background-attachment: local 并不能立竿见影地解决我们眼前
                                                                                         图 6-21
                    的这个需求。如果应用到这条阴影上,它会带给我们正好相反的效果:当我
                                                                                         顶部的阴影
                    们滚动到最顶端时,能看到一条阴影;但当我们向下滚动时,这条阴影就消
                    失了。方向明确了,但我们还得绕一点路。

                        问题的答案是我们需要两层背景:一层用来生成那条阴影,另一层基本
                    上就是一个用来遮挡阴影的白色矩形,其作用类似于遮罩层。生成阴影的那
                    层背景将具有默认的 background-attachment 值(scroll),因为我们希望
                    它总是保持在原位。我们把遮罩背景的 background-attachment 属性设置
                    为 local,这样它就会在我们滚动到最顶部时盖住阴影,在向下滚动时跟着
                    滚动,从而露出阴影。

                        我们会用一道线性渐变来生成这个矩形的遮罩,并让它的颜色与容器的
                    背景色保持一致(这里是白色):

                        background: linear-gradient(white, white),
                                    radial-gradient(at top, rgba(0,0,0,.2),
                                                    transparent 70%);
                        background-repeat: no-repeat;
                        background-size: 100% 15px;
                        background-attachment: local, scroll;





                                                                                               34 滚动提示        161







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