写css时,在对属性进行选值,经常遇到unset , initial,inherit三个值。这几个值的含义。

  • 1.inherit 可继承性

    继承的意思。

    每一个 CSS 属性都有一个特性就是,这个属性必然是默认继承的 (inherited: Yes) 或者是默认不继承的 (inherited: no)其中之一,我们可以在 MDN 上通过这个索引查找,判断一个属性的是否继承特性。

    譬如,以 background-color 为例,由下图所示,表明它并不会继承父元素的 background-color:

    可继承属性

    最后罗列一下默认为 inherited: Yes 的属性:

    • 所有元素可继承:visibility 和 cursor
    • 内联元素可继承:letter-spacing、word-spacing、white-space、line-height、color、font、 font-family、font-size、font-style、font-variant、font-weight、text- decoration、text-transform、direction
    • 块状元素可继承:text-indent和text-align
    • 列表元素可继承:list-style、list-style-type、list-style-position、list-style-image
    • 表格元素可继承:border-collapse

    还有一些 inherit 的妙用,合理的运用 inherit 可以让我们的 CSS 代码更加符合 DRY(Don‘’t Repeat Yourself )原则。

  • 2.initial 默认值
     关键字用于设置 CSS 属性为它的默认值,可作用于任何 CSS 样式。(IE 不支持该关键字)

  • unset  无设置(不设置)

    名如其意,unset 关键字我们可以简单理解为不设置。其实,它是关键字 initial 和 inherit 的组合。

    什么意思呢?也就是当我们给一个 CSS 属性设置了 unset 的话:

    1. 如果该属性是默认继承属性,该值等同于 inherit
    2. 如果该属性是非继承属性,该值等同于 initial

    举个例子,先列举一些 CSS 中默认继承父级样式的属性:

    • 部分可继承样式: font-sizefont-familycolortext-indent
    • 部分不可继承样式: borderpaddingmarginwidthheight

    使用 unset 继承父级样式:

    看看下面这个简单的结构:

    1
    2
    3
    4
    <div class="father">
        <div class="children">子级元素一</div>
        <div class="children unset">子级元素二</div>
    </div>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    .father {
        colorred;
        border1px solid black;
    }
     
    .children {
        colorgreen;
        border1px solid blue;
    }
     
    .unset {
        color: unset;
        border: unset;
    }
    1. 由于 color 是可继承样式,设置了 color: unset 的元素,最终表现为了父级的颜色 red

    2. 由于 border 是不可继承样式,设置了 border: unset 的元素,最终表现为 border: initial ,也就是默认 border 样式,无边框。

    CodePen Demo -- unset Demo;

    unset 的一些妙用

    例如下面这种情况,在我们的页面上有两个结构类似的 position: fixed 定位元素。

    区别是其中一个是 top:0; left: 0;,另一个是 top:0; right: 0;。其他样式相同。

    假设样式结构如下:

    1
    2
    3
    4
    <div class="container">
        <div class="left">fixed-left</div>
        <div class="right">fixed-right</div>
    </div>

    通常而言,样式如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    .left,
    .right {
        positionfixed;
        top0;   
        ...
    }
    .left {
        left0;
    }
    .right {
        right0;
    }

    使用 unset 的方法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    .left,
    .right {
        positionfixed;
        top0;   
        left0;
        ...
    }
    .right {
        left: unset;
        right0;
    }

    CodePen Demo -- unset Demo;

css 中的 initial inherit unset 意思的更多相关文章

  1. css样式关键字(initial,inherit,unset,revert,all)

    关键字 在CSS中,有4个关键字理论上可以应用于任何的CSS属性,它们是initial(初始).inherit(继承).unset(未设置).revert(还原).而all的取值只能是以上这4个关键字 ...

  2. CSS 中的 initial、inherit、unset、revert

    在css中,initial(初始).inherit(继承).unset(未设置).revert(还原)这四个关键字可以应用于所有的CSS属性. initial - 初始默认值.IE不支持 inheri ...

  3. CSS继承控制:inherit、initial和unset

    CSS里有三种常用的属性值继承方式:inherit,initial和unset.我们用一个简单的例子来演示一下: <ul style="color: green;"> ...

  4. The inherit, initial, and unset values

    The  inherit, initial, and unset keywords are special values you can give to any CSS property. Tests ...

  5. CSS中的display属性(none,block,inline,inline-block,inherit)

    css中的display属性(none,block,inline,inline-block,inherit) display属性是我们在前端开发中常常使用的一个属性,其中,最常见的有: none bl ...

  6. CSS中inherit指定继承的使用方法和auto的区别

    CSS中的每个属性都有一个特定值"inherit",其含义是指定继承父元素的相应属性,使用inherit一方面在代码上能地表明要继承于父元素的样式属性,另一方面也使子元素继承了那些 ...

  7. CSS中line-height继承问题

    在CSS中,line-height属性用于设置多行元素的空间量,比如文本.对于块级元素,它指定元素行盒的最小高度.对于非替代的inline元素,它用于计算行盒的高度. 语法 /* Keyword va ...

  8. css中margin重叠和一些相关概念(包含块containing block、块级格式化上下文BFC、不可替换元素 non-replaced element、匿名盒Anonymous boxes )

    平时在工作中,总是有一些元素之间的边距与设定的边距好像不一致的情况,一直没明白为什么,最近仔细研究了一下,发现里面有学问:垂直元素之间的margin有有互相重叠的情况:新建一个BFC后,会阻止元素与外 ...

  9. 深入理解css中vertical-align属性

    一.为什么要写这篇文章 今天看到一个问题: 两个div 都设置 display:inline-block,正常显示:但是在第二个div中加一个块级元素或者内联元素,显示就变了个样,为什么? <m ...

随机推荐

  1. Mybatis学习第四天——Mybatis与Spring整合

    主要介绍mapper配置与mapper的扫描配置,使用dao层的配置这里不多说. 1.导包 1.1 Mybatis的jar包 1.2 Spring的jar包 1.3 Spring与Mybatis整合包 ...

  2. Bitmap到底占多少内存

    转至:Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存? Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟 ...

  3. Event percentages解析

    Event percentages: 0:--pct-touch//touch events percentage触摸事件百分比(触摸事件是一个在屏幕单一位置的按下-抬起事件) 1:--pct-mot ...

  4. IT之路如何走得更远

    作者:石头2075链接:http://www.jianshu.com/p/8c6417e16505著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 首先,你需要在合适的年纪进入了这 ...

  5. String,StringBuffer和StringBuilder三者的讲解

     对于java的学习者而言,无论是初学者,还是java大师,String对于大家而言,也绝对不会陌生.下面本人就从 自己学习的角度大致分析一下String,StringBuffer和StringBui ...

  6. Ajax学习---Ajax基础学习 180128

    AJAX AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传输的数据为 ...

  7. 申请MVP奖励时的小Tips

    大家新年好,今天MSPrecious为大家带来一些申请MVP奖励时的小Tips.   本文分为三个部分 MVP是什么 如何申请MVP 申请MVP需要注意的事项 MVP是什么? 我想,点进来看这篇文章的 ...

  8. MapReduce Design Patterns(chapter 2 (part 3))(四)

    Inverted Index Summarizations Pattern Description 反向索引模式在MapReduce分析中经常作为一个例子.我们将会讨论我们要创建的term跟标识符之间 ...

  9. 开闭原则(OCP)

    开闭原则具有理想主义的色彩,它是面向对象设计的终极目标.因此,针对开闭原则的实现方法,一直都有面向对象设计的大师费尽心机,研究开闭原则的实现方式.后面要提到的里氏代换原则(LSP).依赖倒转原则(DI ...

  10. Queue<T>队列与Stack<T>堆栈

    一.概述: Queue<T>队列,对象的先进先出集合("FIFO").Stack<T>栈,对象的后进先出集合("LIFO"). Queu ...