取消CSS声明

前端之家收集整理的这篇文章主要介绍了取消CSS声明前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有可能有一个基本上“撤销”先前规则的CSS规则?

一个例子:

<blockquote>
    some text <em>more text</em> other text
</blockquote>

让我们说这个CSS呢?

blockquote {
    color: red;
}

…但我想要< em>保持正常的文本颜色(您可能不一定知道)。

基本上,会有办法做这样的事情吗?

blockquote em {
    color: inherit-from-blockquote's-parent
}

编辑:我实际上试图让这个工作的代码实际上有点复杂。也许这会更好地解释:

This text should be *some unknown colour*
<ul>
    <li>This text should be BLUE
        <ul>
            <li>Same as outside the UL</li>
            <li>Same as outside the UL</li>
        </ul>
    </li>
</ul>

ul {
    color: blue;
}
ul ul {
    color: ???;
}

解决方法

单独使用CSS,您不能参照父母的父母。

您可以做的事情是尝试混合使用特定的CSS选择器和标记,以便出现所需的效果

<td>
  This is the enclosing element.
  <ul>
    <li>This is the first level UL,direct child of TD
      <ul>
        <li>This is the second level UL</li>
        <li>Same as outside the UL</li>
      </ul>
    </li>
  </ul>
</td>

CSS:

td > ul
  color: blue; /* this affects the "direct child" UL only */
}

您将限制风格继承的深度到一个级别,因此内部UL在颜色方面是未分级的,并从封闭文本获取其设置。

阅读更多关于CSS Child Selector,并且请注意旧版浏览器可能与他们的怪癖。

编辑

对于Internet Explorer 6,子选择器可以在一定程度上被伪造。使用前请确保安全带(条件注释等):

td ul {
  color: expression(/TD/.test(this.parentNode.tagName)? "blue" : "black");
}

这假设“黑色”为外部颜色。如果这个颜色值有变化的话,恐怕就不幸了。除非你可以定义一个能够从上下文中获取颜色值的表达式()(例如检查父元素的其他属性)。或者您放弃使用JS框架,就像其他人已经建议的那样。

无需使用JS的这种简单的解决方案当然是:

td ul.first {
  color: blue;
}

但是我可以看到你为什么要避免这种情况。

猜你在找的CSS相关文章