如何让div及其子代忽略其父样式?

Arv*_*ind 3 html css responsive-design twitter-bootstrap

假设我有以下标记: -

<div class="house">
  <p>...</p>
  <div class="room">
    <p>...</p>
  </div>
</div>

<div class="house">
  <p>...</p>
  <div class="room porch">
     <p>...</p>
  </p>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS: -

.house .room { /* Some styling done here */ }

.porch { /* Some different styling done here */ }
Run Code Online (Sandbox Code Playgroud)

现在,我想我与类的div roomporch只考虑阶级porch而忽略了风格houseroom.这可能吗?这只是一个简单的例子,我有一个案例,代替类porch,还有更多的类,所以只覆盖一个类是!important不行的,因为可能有很多具有各种样式的类.

怎么能实现这一目标?

fca*_*ran 5

你可以用 :not

.house .room:not(.porch) { 
      /* .room elements only when they have not .porch class */ 
}

.porch { 
      /* all .porch elements */
}
Run Code Online (Sandbox Code Playgroud)

浏览器支持:https://developer.mozilla.org/en-US/docs/Web/CSS/:not