html - 如果其他元素隐藏在 CSS 中,则为元素设置样式

标签 html css

我有一个包含两个子项的 div(父项)。如果隐藏第二个 DIV,我想更改第一个 DIV 的颜色。

<div class="parent">
  <div class="col-lg-6" style="display: block;">
     11111111
  </div>
  <div id="xyz" class="col-lg-6" style="display: none;">
     222222
  </div>
</div>

我试过类似的方法:

.parent div:first-child:not(#xyz[hidden]) {
  background: #00ff00;
}

但它不起作用。那么,在 CSS3 中有可能吗?

最佳答案

不幸的是,您当前的 HTML 结构无法定位第一个 <div>使用原始 CSS。

但是,如果您交换这两个元素,那么您可以根据#xyz 的可见性定位可见的div。 :

#xyz[style*='display: none'] ~ div {
  background: #00ff00;
}
<div class="parent">
  <div id="xyz" class="col-lg-6" style="display: none;">
    222222
  </div>
  <div class="col-lg-6" style="display: block;">
    11111111
  </div>
</div>

~选择器以任何兄弟为目标 <div>元素在哪里 #xyz没有 styledisplay: none .不幸的是,虽然 ~选择 siblings, sibling 必须在目标 div 之后

不幸的是,反之则行不通:

div ~ #xyz[style*='display: none'] {
  background: #00ff00;
}
<div class="parent">
  <div class="col-lg-6" style="display: block;">
    11111111
  </div>
  <div id="xyz" class="col-lg-6" style="display: none;">
    222222
  </div>
</div>

不过,如果您使用 JavaScript,则可以坚持使用当前的 HTML 结构:

if (document.getElementById('xyz').style.display = 'none') {
  document.getElementsByClassName('parent')[0].childNodes[1].style.background = '#00ff00';
}
<div class="parent">
  <div class="col-lg-6" style="display: block;">
    11111111
  </div>
  <div id="xyz" class="col-lg-6" style="display: none;">
    222222
  </div>
</div>

<br /><br />

<div class="parent">
  <div class="col-lg-6" style="display: block;">
    11111111
  </div>
  <div id="xyz" class="col-lg-6" style="display: block;">
    222222
  </div>
</div>

希望对您有所帮助! :)

关于html - 如果其他元素隐藏在 CSS 中,则为元素设置样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45224530/

相关文章:

javascript - 如何仅使用单个 div 实现阅读更多功能

html - 如何在保持文本对齐的同时删除两个元素之间的空白?

Jquery 显示/隐藏多分区问题

javascript - 谷歌地图 api 不显示

css - 将 float <p> 拖放到 float 父级 <div> 的底部

c# - 发布网站并没有更新我的 CSS 包

javascript - onclick 显示 div,但单击另一个时隐藏

PHP上传多个文件名不同但文件夹相同的文件

javascript - 使用 Chrome Javascript 应用程序在本地驱动器上执行 HTML

javascript - 是否可以从粘贴在文本区域的 html 页面中找到此类标签​​,并将其标签替换为 javascript 代码中提到的其他标签?