如何排除CSS格式?

如何排除CSS格式?,css,Css,可能的重复项: 我有这样的CSS .div1 img { // ... } .myimg { // ... } 我的HTML代码是这样的 <div class="div1"> ... <img src="..." class="myimg"> // image html ... </div> ... //图像html ... .div1 img中定义的css格式显然应用于图像html代码。然而,我实际上不

可能的重复项:

我有这样的CSS

.div1 img {
  // ...
}

.myimg {
  // ...
}
我的HTML代码是这样的

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

...
//图像html
...
.div1 img
中定义的css格式显然应用于图像html代码。然而,我实际上不希望它发生。我该怎么做才能使图像html代码不受“.div1 img”影响?我不想修改
div1 img
或相关html代码的内容,因为它已经在其他地方使用过(这是一个我不想弄乱的模板代码)

另外,我无法删除或修改
,因为周围还有其他模板代码

谢谢。

您可以:

.div1 img:not(.myimg) {
  // ...
}
:未解释选择器

您有两个选项:

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

  • 你需要中和你给“.div1 img”的所有样式,例如,如果你在那里说“width:100px”,你需要在另一个里面说“width:auto”

    虽然如果你在第一组中有很多规则,那么这样会非常脏,你需要更改布局。

    有一点不错的方法可以奏效,但不幸的是,它不适用于所有浏览器

    一个确定的方法是在子类
    .mying
    中重新定义所有
    .div1
    样式,以便覆盖父类

    下面是JSFIDLE中的一个小演示:


    把它弄得乱七八糟,看看什么对你最好

    如果你在class.div1的容器div中有img标记,它们当然会得到你在
    .div1 img
    中定义的样式,但是如果你想让该div中8个图像中的2个有另一个样式(我相信这就是为什么你制作class
    .myimg
    ),你需要把!重要信息
    .myimg
    中定义的样式之后,如下所示:

    .div1 img
    {
        height: 125px;
        width: 125px;
    }
    .myimg
    {
        height: 150px !important;
        width: 150px !important;
    }
    
    这只是在你没有使用CSS 3.0的情况下,是的,“非选择器”可以工作,但我更喜欢一些同时支持IE的解决方案。所以我想覆盖它可能是唯一的解决方案