CSS Secrect笔记

2017-04-27  本文已影响28人  debt

精简CSS

  1. 代码如何精简?

    • 从简单例子弹起,最简单的一个btn
    .btn{
        padding:4px 10px;
        border:1px solid #ddd;
        background:#59a linear-gradient(#77a0bb,#58a);
        broder-radius:5px;
        box-shadow:0 1px 5px gray;
        color: white;
        text-shadow: 0 -1px 1px #335166;
        font-size: 20px;
        line-height: 30px;
    }
    
    • 如果我们现在想改字体大小?面临的问题是什么?
    • 可能字体变大后,line-height也会变化,看起来并不是等比放大或缩小
    • 那么我们可以用比例来控制line-height:1.5
    • 如果我们想更好的扩展该如何做,那就要搬出em或者rem了,我们可以这么写
    padding: .3em .8em;
    border: 1px solid #446d88;
    background: #58a linear-gradient(#77a0bb, #58a);
    border-radius: .2em;
    box-shadow: 0 .05em .25em gray;
    color: white;
    text-shadow: 0 -.05em .05em #335166;
    font-size: 125%;
    line-height: 1.5;
    
  2. 合理使用简写

    • background和background-color的区别?其实我们上面已经看到了background-color属性可能会被background-image属性覆盖
  3. 背景与边框小知识,默认情况下,border的颜色是浮在background之上的

    尽管看起来并不像那么回事,但我们的边框其实是存在的。默认情况下,
    背景会延伸到边框所在的区域下层。这一点很容易验证,给一个有背景的元
    素应用一道老土的虚线边框,就可以看出来(参见图 2-3)。即使你使用的是
    不透明的实色边框,这个事实也不会有任何改变。只不过在上面的例子中,
    这个特性完全打破了我们的设计意图。我们所做的事情并没有让 body 的背景
    从半透明白色边框处透上来,而是在半透明白色边框处透出了这个容器自己
    的纯白实色背景,这实际上得到的效果跟纯白实色的边框看起来完全一样。
    在 CSS 2.1 中,这就是背景的工作原理。我们只能接受它并且向前看。
    谢天谢地,从背景与边框(第三版)(http://w3.org/TR/css3-background)开
    始,我们可以通过 background-clip 属性来调整上述默认行为所带来的不
    便。这个属性的初始值是 border-box,意味着背景会被元素的 border box
    (边框的外沿框)裁切掉。如果不希望背景侵入边框所在的范围,我们要做
    的就是把它的值设为 padding-box,这样浏览器就会用内边距的外沿来把背
    景裁切掉。

    默写三遍,background-clip:border-box/padding-box
    demo

  4. 多边框,我能想到的只有多个元素了,书中采用了 box-shadow,简直 666啊
    回忆一下 box-shadow:x y 模糊 扩张半径

    background: yellowgreen;
    box-shadow: 0 0 0 10px #655, 0 0 0 15px deeppink;
    

    box-shadow 是层层叠加的,第一层投影位于最顶
    层,依次类推。因此,你需要按此规律调整扩张半径。比如说,在前面的代
    码中,我们想在外圈再加一道 5px 的外框,那就需要指定扩张半径的值为

    15px(10px+5px)。

    box-shadow 使用技巧2,如何设置单阴影,第四个参数表示扩张半径,如果设置单负数,表示横向或者纵向压缩多少
    最终的解决方案来自 box-shadow 鲜为人知的第四个长度参数。它排在
    模糊半径参数之后,称作扩张半径。这个参数会根据你指定的值去扩大或
    (当指定负值时)缩小投影的尺寸。举例来说,一个 -5px 的扩张半径会把投
    影的宽度和高度各减少 10px(即每边各 5px)。
    从逻辑上来说,如果我们应用一个负的扩张半径,而它的值刚好等于模
    糊半径,那么投影的尺寸就会与投影所属元素的尺寸完全一致。除非用偏移
    量(前两个长度参数)来移动它,我们将完全看不见任何投影。因此,如果
    给投影应用一个正的垂直偏移量,我们就会在元素的底部看到一道投影,而
    元素的另外三侧是没有投影的,这正是我们一直苦苦追寻的效果

上一篇 下一篇

猜你喜欢

热点阅读