Home  >  Article  >  Web Front-end  >  简单了解CSS3的all属性_html/css_WEB-ITnose

简单了解CSS3的all属性_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-21 08:53:161393browse

一、兼容性

一些CSS文章,或者CSS文档,兼容性什么的都是放在最后。

又不是什么见不得人的事情,来,直接开篇就亮刺刀。

兼容性还行, 除了IE不支持,其他浏览器基本上都绿油油,目前自娱自乐,内网项目什么的都是可以用用的。

二、all是干嘛用的

all 属性实际上是所有CSS属性的缩写,表示,所有的CSS属性都怎样怎样,但是,不包括unicode-bidi和direction这两个CSS属性。

为什么会有这个CSS属性呢?

我们可能知道,有些CSS属性值基本上所有CSS属性都有,比方说继承 inherit !

我们CSS reset输入框的时候,是不是有类似这样的代码(实际可能是具体值,作用类似):

input, textarea {    color: inherit;    font-size: inherit;    font-family: inherit;}

因为这类输入控件自身有内置的大小和字体,需要重置。

此时,大家就会发现,这些属性值都是 inherit , 要是可以合并就好了!

哟哟哟,说到点子上了,CSS all 属性就是用来合并的。

input, textarea {    all: inherit; }

喔噢,三合一,顿时一阵春风拂面之感。但是,这里仅仅是展示作用,实际上是不会这么用的,因为, all:inherit 会让背景色什么的,都继承父级,相信这不是你希望看到的。

三、语法和区别

语法如下:

all: initial;all: inherit;all: unset;/* CSS4特性,无视之 */all: revert;

支持三个CSS通用属性值, initial , inherit , unset . 这三个属性值分别表示什么意思呢?

您可以狠狠地点击这里:CSS3 all属性演示demo

默认的HTML和CSS是这样的,一个传统的标签内容,有标题有列表:

<article>    <h6>标题</h6>    <p>p变文字</p>    <ol>        <li>有序列表1</li>        <li>有序列表2</li>        <li>有序列表3</li>    </ol>    <textarea>文本域</textarea></article>
article {    background-color: #f0f3f9;    color: green;}article > textarea {    border: 1px solid #34538b;    background-color: #ffffe0;    color: red;}

这盛世,如你所见:

颜色啊,间距啊,以及文本域状态都是我们认为的样子显示。

现在,点击demo的下拉,选择对应的 all 属性值,实现下面CSS效果:

.initial > * {    all: initial;}.inherit > * {    all: inherit;}.unset > * {    all: unset;}

结果:

  • initial

    initial是初始值的意思,也就是, article 元素下面所有的第一级子元素都除了 unicode-bidi 和 direction 以外的CSS都使用初始值。

    例如,

    ,

    元素浏览器内置的 display:block 直接拜拜了,都变成了 inline 元素,因此在一行显示:

    font-size 也使用了浏览器软件本身设置的大小 16px , color 颜色也变成了浏览器软件本身的黑色。例如,在浏览器设置中改变字号,从中变成大:

    会看到显示的文字内容也变大了:

    由于我们只是对相邻层级子元素进行了 initial 设置,因此,

  • 元素不受影响,但是,由于在父元素不明的情况下,
  • 元素的默认是打点,因此,这里从数字变成了点, list-style-type 和 list-style-position 都变化了。
  • inherit

    inherit是继承的意思,也就是, article 元素下面所有的相邻子元素都除了 unicode-bidi 和 direction 以外的CSS都继承了

    元素的CSS。

    因此,

    ,

    元素还是块状的, background-color 都是

    元素的背景色, color 颜色也跟
    一样,是绿色(文本域的红色被干掉了)。

    不仅上面这些CSS, padding / margin 也都继承了,只是默认是 0 , 看不出来,我们稍微修改下,例如给

    元素来个 margin 值:

    结果,那些子元素都开花了:

  • unset

    unset是取消设置的意思,也就是, article 元素下面所有的相邻子元素除了 unicode-bidi 和 direction 以外的CSS都干掉都不要,不要了那用什么呢? unset 值的特性如下,当前元素浏览器或用户设置的CSS忽略,然后如果是具有继承特性的CSS,如 color , 则使用继承值;如果是没有继承特性的CSS属性,如 background-color , 则使用初始值。

    因此,

    ,

    元素的 display 属性值使用了initial初始值,因此变成了 inline 元素,两个同一行显示了;而这些元素的 color 颜色使用了inherit继承值,因此都是绿色,

三、结语

动手写文章之前,还以为这个CSS属性会有意想不到的妙用,最后结果是,表现确实意想不到,至于妙用,我只能科科一下。

all 所牵扯的CSS实在是太多了,我目前还是想不出有什么场景,就是要用这个CSS属性。或者说什么时候,希望特殊的元素一下子变成普通元素,例如, input 输入框外面一个 div ,来个 input{all:inherit;} ,貌似还真有这样的场景,输入框不需要 border 不需要 background 不需要 padding 不需要 margin , 恩,不错,不枉写此文了!

本文为原创文章,会经常更新知识点以及修正一些错误,因此转载(图片请勿直接外链)请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。

本文地址: http://www.zhangxinxu.com/wordpress/?p=5321

(本篇完)

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn