<分区>
<分区>
我正在尝试为所有 <div>
赋予一种风格有 child 的,而不是没有 child 的。
或者,给所有人一种风格,给没有 child 的人一种不同的风格。
结构类似这样
<div>
<div>
<div>
<div>Don't style me</div>
<div>Don't style me</div>
</div>
<div>Don't style me</div>
<div>Don't style me</div>
<div>
<div>
<div>Don't style me</div>
</div>
</div>
</div>
</div>
最佳答案
CSS 级别 4 正在开发中,将包含可以满足您要求的选择器。
当它可用时,语法将如下所示:
.myclass! div { ... }
这将选择具有 div 元素的 .myclass
元素作为子元素。它基本上是一个普通的 CSS 选择器,但是带有感叹号来告诉它要选择哪个元素。 (尽管请注意,首选语法在起草过程中已经更改了几次,而且他们还没有最终确定!)
如果您有兴趣跟进此事,可以在此处阅读当前形式的完整规范:http://dev.w3.org/csswg/selectors4/
不过那是以后的事了。对于当前的浏览器,使用纯 CSS 无法真正实现您想要实现的目标。
那么你有什么选择呢?
最明显的解决方法是使用 javascript 来实现您想要的效果。 jQuery 完全能够按照您描述的方式选择元素,如下所示:
$('.myclass:has(div)');
同样明显的是向您想要设置样式的元素添加一个类,然后使用它。这可以在 Javascript 或服务器端代码中完成。可能是最明显的答案,实际上,在没有您可以使用的实际 CSS 选择器的情况下。
根据您要执行的操作,您可以尝试重新安排 HTML 结构;在某些情况下,一些横向思维可以帮助您获得看起来像这样做的结果,即使使用当今可用的 CSS 选择器也是如此。特别是,悬停效果通常可以通过这种方式解决。
同样,根据您的代码的外观以及您尝试使用它执行的操作,您可以尝试使用一些更深奥的 CSS 选择器。例如,div:empty
将选择没有内容的 div。这不适用于您给出的示例(因为您在“空”div 中有文本),但在它们确实为空的其他情况下会起作用。
关于html - CSS 规则 : Give style to all with children,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15418238/