Page 68 - css揭秘
P. 68

@mixin polka($size, $dot, $base, $accent) {             SCSS
                            background: $base;
                            background-image:
                                radial-gradient($accent $dot, transparent 0),
                                radial-gradient($accent $dot, transparent 0);
                            background-size: $size $size;
                            background-position: 0 0, $size/2 $size/2;
                        }

                        以后在创建波点图案时,我们就可以像这样调用它:
                                                                                SCSS
                        @include polka(30px, 30%, #655, tan);


                    棋盘


                        棋盘图案在很多场景下都会用到。比如说,相对于单调的纯色背景来
                    说,具有细微对比度的棋盘图案可能就是一个有趣的替代品。在各种应用程
                    序的界面中,灰色的棋盘图案已经是用于表示透明色的事实标准。在 CSS 中
                    创建棋盘图案是可能的,只不过实现过程可能比我们想像中的要“绕”一些。
                        棋盘图案是可以通过平铺生成的,平铺成这个图案的典型贴片包含两种
                    不同颜色的方块,且相互间隔,就像图 2-44 中所标示出的那样。它貌似可
                    以在 CSS 中很容易地重现出来:只需要创建两个不同背景定位的方块就可
                    以了,没错吧?然而并非如此。是的,在技术上,我们可以用 CSS 渐变来
                    创建平铺的方块,但每个方块的周围是不会有空隙的,因此最终的结果看起
                    来就是一片实色。总的来说,只用一层 CSS 渐变无法创建四周有空隙的方
                    块。如果你对此还怀有疑议,不妨找找看有没有一种渐变可以在重复平铺时                                    图 2-44
                    产生如图 2-45 所示的图像。                                                     一个灰色的棋盘图案通常用来表
                                                                                         示透明色;如果我们通过图片的
                        这里的窍门在于用两个直角三角形来拼合出我们想要的方块。我们已经                                  重复平铺来实现它,那么单个贴
                    知道了如何创建直角三角形。 (还记得我们在图 2-29 中尝试实现斜向条纹时                               片应该就是虚线框所标示的范围
                    所遭遇的失败吗?)为了唤起你的记忆,我们再来看看当时的代码(这里换
                    用了另一种颜色和透明色):

                        background: #eee;
                        background-image:
                            linear-gradient(45deg, #bbb 50%, transparent 0);
                        background-size: 30px 30px;
                                                                                         图 2-45
                        你可能还不明白这个方法是怎么发挥作用的。没错,如果我们尝试直接
                                                                                         四周有空隙的方块在平铺之后得到
                    用两个三角形组合出图 2-29 中那样的正方形,可能只会得到一片实色。但                                 的结果;单个贴片用虚线框标示
                    是,如果我们把这些三角形的直角边缩短到原来的一半,从而只占据贴片面
                                  1
                        1
                    积的 ,而不是 ,会怎么样?要满足这一点,我们只需简单地把色标的位
                        8         2
                    置值从 50% 改为 25% 就可以了。然后我们得到的效果会如图 2-46 所示。
                        与此类似,如果我们把色标的顺序反转,就可以创建相反方向的三角形



                                                                                          6 复杂的背景图案            37







          ඀ࠡ  JOEC
   63   64   65   66   67   68   69   70   71   72   73