写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. java中的==、equals()、hashCode()源码分析(转载)

    在java编程或者面试中经常会遇到 == .equals()的比较.自己看了看源码,结合实际的编程总结一下. 1. ==  java中的==是比较两个对象在JVM中的地址.比较好理解.看下面的代码: ...

  2. CSS的下拉菜单被挡住,修改Z-INDEX也不成功

    CSS的下拉菜单被挡住,修改Z-INDEX也不成功 做了一个鼠标放上去就出现的下拉菜单,但是这个下拉的内容被挡住了. Z-INDEX 是设置不同块的层次的,我修改了问题还是有. 后来发现是必须要把该便 ...

  3. Android深入四大组件(五)Android8.0 根Activity启动过程(后篇)

    前言 在几个月前我写了Android深入四大组件(一)应用程序启动过程(前篇)和Android深入四大组件(一)应用程序启动过程(后篇)这两篇文章,它们都是基于Android 7.0,当我开始阅读An ...

  4. pmp心得

    我报名比较晚,等缴费最后期限,才缴费,下定决心,开始正式的备考. 我的工作比较忙,备考时间特比较短,从拿到书到考试只有二个月了,心理慌慌的,期间还有一门其他的考试,在5月底,实际时间只能有20来天. ...

  5. ORACLE 数据找回

    -- 找回一个小时前的数据 select * from sys_system_dictionary as of timestamp sysdate - 1/24order by id AS OF TI ...

  6. Linux telnet命令详解

    telnet命令通常用来远程登录.telnet程序是基于TELNET协议的远程登录客户端程序.Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户 ...

  7. 点开无线显示"已连接 安全",但是点击下面无线图标却显示"无法连接internet",解决方案

    管理员权限运行“命令提示符” 输入:netsh winsock reset 然后重启电脑即可

  8. 二进制安装mariaDB

    1.获取二进制安装包 获取二进制格式MariaDB安装包,可去官网下载. 因为是实验环境,所以选择了最新版. mariadb-10.2.12-linux-x86_64.tar.gz 2.解压 解压到 ...

  9. 最新php环境搭建,2017年最新PHP环境搭建

    使用PHPWAMP8.8.8.8IN纯绿色集成环境搭建php网站很方便,哪怕你系统没安装vc.系统dll丢失或者损坏的时候,phpwamp也可以正常启动,是个很强大的php套件. php环境搭建,支持 ...

  10. 深入浅出SharePoint——定制保存Item按钮

    <script type="text/javascript" src="/_layouts/style/jquery-1.4.4.min.js">& ...