Page 96 - css揭秘
P. 96

linear-gradient(-45deg, transparent 15px, #58a 0),
                            linear-gradient(45deg, transparent 15px, #655 0);

                        可是,我们在图 3-26 中可以发现,这样写是行不通的。默认情况下,
                    这两层渐变都会填满整个元素,因此它们会相互覆盖。需要让它们都缩小一
                    些,于是我们使用 background-size 让每层渐变分别只占据整个元素一半
                    的面积。

                        background: #58a;
                        background:                                                      图 3-26
                            linear-gradient(-45deg, transparent 15px, #58a 0)            尝试给底部的两个角设置切角样
                                right,
                            linear-gradient(45deg, transparent 15px, #655 0)             式,但失败了
                                left;
                        background-size: 50% 100%;

                        我 们 可 以 在 图 3-27 中 看 到 结 果。 如 你 所 见, 尽 管 我 们 已 经 用 了
                    background-size,但这两层渐变仍然是相互覆盖的。原因在于,我们忘记
                    把 background-repeat 关掉了,因而每层渐变图案各自平铺了两次。这导
                    致我们的两层渐变背景仍然是相互覆盖的,只不过这次是因为背景平铺。改
                    进后的代码是这样的:
                                                                                         图 3-27
                        background: #58a;
                        background:                                                      只用 background-size 还是不够
                            linear-gradient(-45deg, transparent 15px, #58a 0)            的
                                right,
                            linear-gradient(45deg, transparent 15px, #655 0)
                                left;
                        background-size: 50% 100%;
                        background-repeat: no-repeat;

                        你可以在图 3-28 中看最终效果——我们终于成功了!看到这里,你应
                    该已经猜到怎样把四个角都做出切角效果了。你需要四层渐变图案,代码如
                    下所示:

                        background: #58a;                                                图 3-28
                        background:                                                      左下角和右下角的切角效果终于
                            linear-gradient(135deg,  transparent 15px, #58a 0)
                                top left,                                                实现了
                            linear-gradient(-135deg, transparent 15px, #58a 0)
                                top right,
                            linear-gradient(-45deg, transparent 15px, #58a 0)
                                bottom right,
                            linear-gradient(45deg, transparent 15px, #58a 0)
                                bottom left;
                        background-size: 50% 50%;
                        background-repeat: no-repeat;

                        你可以在图 3-29 中看到结果。上面这段代码有一个问题,它的可维护                               图 3-29
                    性并不理想。我们在改变背景色时需要修改五处;而在改变切角尺寸时需要
                                                                                         通过四层渐变图案,就可以给四
                    修改四处。使用预处理器的 mixin 可以帮助我们减少代码的重复度。如果用                                个角都加上切角效果



                                                                                               12 切角效果         65







          ඀ࠡ  JOEC
   91   92   93   94   95   96   97   98   99   100   101