代码之家  ›  专栏  ›  技术社区  ›  Peter

撤消CSS规范

css
  •  4
  • Peter  · 技术社区  · 15 年前

    你能撤销css规范吗?如果可以,你怎么做?如果你想

    textarea { width: 500px; }
    

    然后需要一个包含70列的特定文本区域:

    <textarea class='email' cols=70></textarea>
    

    理想情况下,我会编写一个css规则

    textarea.email { width: revert_to_default_unspecified_value; }
    

    (但显然这个价值不存在。)

    你怎么做到的?我对这个特定的情况和如何撤销子级中的父级css规范都很感兴趣。这一点肯定被谈论得很多,但谷歌很难做到。

    4 回复  |  直到 15 年前
        1
  •  6
  •   Alin P.    15 年前

    您要查找的默认值是:

    首字母: 汽车

    http://www.w3.org/TR/CSS2/visudet.html#the-width-property

    注意设置 auto 将仅恢复某些CSS属性的默认值。其他有不同的初始值。

    这个 background-color 例如,属性的默认值为 transparent .

    首字母: 透明的

    http://www.w3.org/TR/CSS2/colors.html#background

    一些属性,比如 color ,无法还原为默认值,因为它们没有已知的默认值。

    首字母: 取决于用户代理

    http://www.w3.org/TR/CSS2/colors.html#colors


    关于撤消子级中继承的CSS。

    让我们使用font size属性,一个继承的属性。

    level0
    <div style="font-size:36px;">
        level1
        <div [style="font-size:medium;"]>
            level2
        </div>
    </div>
    

    默认情况下 level2 字体大小将继承自 level1 ,但如果我们加上 medium 值我们将其重置为 level0 文本。唯一不方便的是我们不能忽略一个继承级别,所以如果我们添加 level3 ,我们仍将重置为 级别0 ,而不是 级别1 .

        2
  •  6
  •   enobrev    15 年前
    textarea.email { width: auto; }
    
        3
  •  1
  •   Marcus Whybrow    15 年前

    我假设如果您不指定css width 对于这个文本区域,它的默认值是 width: auto . 因此,在特定情况下,我将尝试将其设置回默认值,在该值中,HTML属性应作为正常属性接管:

    textarea.email { width: auto }
    
        4
  •  0
  •   Olga    10 年前

    重置现在可以使用的样式 unset initial 特殊属性。支持 未设置 目前较低(56%)- http://caniuse.com/#search=CSS%20unset%20value 但是支持 最初的 相当高(80%)- http://caniuse.com/#search=CSS%20initial%20value .

    举个例子:

    http://codepen.io/anon/pen/OMROye

    <div class="outer">
      Foo
      <div class="middle">
        Bar
        <div class="inner">
          Baz
        </div>
      </div>
    </div>
    
    .outer {
      font-size: 50px;
      color: #f3f;
    }
    
    .middle {
      font-size: 25px;
      color: #33f;
    }
    
    .inner {
      font-size: 15px;
      color: #f33;
    }
    
    .inner {
      font-size: unset;
      color: unset;
    }
    

    内部文本的字体大小和颜色与其父文本相似。

    如果我们将上一个样式更改为:

    .inner {
      font-size: initial;
      color: initial;
    }
    

    内部文本将具有标准颜色和标准字体大小。

    现在是最好的时候指出这些属性比看起来要复杂一些,例如 未设置 有时表现得像 最初的 有时表现得像 inherit .

    文档链接:

    https://developer.mozilla.org/en-US/docs/Web/CSS/initial

    https://developer.mozilla.org/en-US/docs/Web/CSS/unset

    https://developer.mozilla.org/en-US/docs/Web/CSS/initial_value