【问题标题】:How to exclude a CSS formatting? [duplicate]如何排除 CSS 格式? [复制]
【发布时间】:2011-07-06 00:47:17
【问题描述】:

可能的重复:
How do I prevent CSS inheritance?
is there a way to exclude a tag from css class

我有这样的 CSS

.div1 img {
  // ...
}

.myimg {
  // ...
}

而我的HTML代码是这样的,

<div class="div1">
    ...
    <img src="..." class="myimg">      // image html
    ...
</div>

.div1 img 中定义的 css 格式显然适用于图像 html 代码。但是,我实际上不希望它发生。我该怎么做才能不对该图像 html 代码产生“.div1 img”效果?我不想修改div1 img的内容或相关的html代码,因为它已经在其他地方使用(而且它是我不想乱用的模板代码)。

附:我也无法删除或修改&lt;div class="div1"&gt;,因为周围还有其他模板代码。

谢谢。

【问题讨论】:

  • 是的,“非选择器”有效,但我更喜欢一些也支持 IE 的解决方案。所以我想覆盖它可能是唯一的解决方案

标签: css


【解决方案1】:

你有两个选择:

  1. 您可以用.myimg 中应有的样式显式覆盖.div1 img 中定义的所有样式
  2. 第一条规则可以写.div1 img:not(.myimg)

【讨论】:

    【解决方案2】:

    你可以这样做:

    .div1 img:not(.myimg) {
      // ...
    }
    

    :不是选择器解释here

    【讨论】:

      【解决方案3】:

      有一个不错的小not selector 可以工作,但不幸的是它不适用于所有浏览器。

      做到这一点的一个可靠方法是在您的子 .mying 类中重新定义您的所有 .div1 样式,以便它覆盖父类。

      这是 jsfiddle 中的一个小演示:http://jsfiddle.net/u6MnN/1/

      弄乱它,看看什么最适合你。

      【讨论】:

        【解决方案4】:

        你需要中和你赋予“.div1 img”的所有样式,例如,如果你说“width:100px”,你需要在另一个中说“width:auto”。

        虽然如果你在第一组中有很多规则,这样会很脏,你需要改变你的布局。

        【讨论】:

          【解决方案5】:

          如果您在具有类 .div1 的容器 div 中有 img 标签,它们当然会获得您在 .div1 img 中定义的样式,但如果您想让该 div 中的 8 个图像中的 2 个图像具有另一种样式(我相信这就是为什么你要上课 .myimg),你需要把 !important 放在 .myimg 中定义的样式之后,如下所示:

          .div1 img
          {
              height: 125px;
              width: 125px;
          }
          .myimg
          {
              height: 150px !important;
              width: 150px !important;
          }
          

          这仅适用于您不使用 CSS 3.0

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-06-17
            • 2011-04-03
            • 2013-07-11
            • 1970-01-01
            • 2016-09-15
            • 2017-09-09
            • 2018-08-30
            • 2013-10-25
            相关资源
            最近更新 更多