html - CSS 规则 : Give style to all with children

标签 html css

<分区>

我正在尝试为所有 <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/

上一篇:css - Html <ul> 列表更改某些列表文本颜色和背景颜色

下一篇:css - 是否可以使用 css3 捕获属性的缺失?

相关文章:

javascript - 返回并从 HTML 字符串中删除元素

javascript - 字符串替换为参数值 Angular

html - 如何将比屏幕大的图像居中?

javascript - 在 Angular 中访问没有表单的输入的 $pristine 属性?

php - 您好,我正在尝试使用 mysql 在 php 中实现下拉菜单,但遇到了很多麻烦

javascript - Bootstrap 导航 - 手机

html - IE中如何让主div出现在中心?

html - 创建调色板时遇到问题

html - 在不影响 DOM 的情况下更改 div 大小

html - 试图让两个按钮保持在一个网格的状态栏中