html - css 不透明度影响同级不透明度

标签 html css

<分区>


这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助 future 的读者。

关闭 5 年前

[编辑:由于从基于 javascript 的原始问题创建此问题时出现错误,此问题已过时。 ]

我有一个 HTML 页面,其中显示了我们各种产品和多个版本的最新构建状态的矩阵。

在此矩阵中,通过分配一个额外的样式类 "stale" 来设置 opacity: .5 来淡化旧版本。
该矩阵还显示了所执行测试的结果。测试结果元素是构建元素的兄弟元素并部分覆盖它。

但是,我现在的问题是,如果“build”元素淡出,“test”元素也会淡出。首先,我想了解原因,其次,我不希望“测试”结果透明。

table { border: 1px solid darkgrey; }
td { border: 1px solid darkgrey; overflow: hidden; }
div { text-align: center; }
.build { 
    border: solid black 1px;
    width: 10em;
    margin: 0.2em;
    padding: 0.2em;
    font-size: 1.0em;
}
.test {
    float: right;
    border: solid lightgrey 1px;
    width: 3em;
    margin-top: -0.8em;
    margin-right: -0.4em;
    // opacity: .99;      // workaround
}
.fail { background-color: rgb(255, 150, 150); }
.ok { background-color: rgb(170, 255, 170); }
.red { background-color: rgb(255, 150, 150); }
.green { background-color: rgb(150, 255, 150); }
.stale { opacity: .5; }
<table>
  <tr>
    <th>Version</th>
    <th>Product A</th>
    <th>Product B</th>
  </tr>
  <tr>
    <td>1.1</td>
    <td>
      <div class="build ok">success</div>
      <div class="test green">100%</div>
    </td>
    <td>
      <div class="build ok">success</div>
      <div class="test red">98%</div>
    </td>
  </tr>
  <tr>
    <td>1.0</td>
    <td>
      <div class="build ok stale">success</div>
      <div class="test red">99%</div>
    </td>
    <td>
      <div class="build fail stale">failure</div>
    </td>
  </tr>
</table>

(使用 Firefox 52.1 ESR、Chrome 58 测试)

我做了一些研究并遇到了 SO 问题 css opacity affecting sibling image opacity但是添加 positionz-index (在样式类 buildtest 中的一个或两个上)没有解决我的问题。

到目前为止,我发现解决此问题的唯一方法是将 opacity: .99; 添加到我的 .test 样式定义中,但不要考虑这个一个干净的解决方案,并希望更好地理解这种行为的原因。

最佳答案

您需要关闭您的 <div>正确标记。

您遇到的问题是您的浏览器试图在运行时“修复”您的标记的结果,<div>元素错误地相互放置,因此它们不再是 sibling 。

修复您的标记即可解决您的问题。

table { border: 1px solid darkgrey; }
td { border: 1px solid darkgrey; overflow: hidden; }
div { text-align: center; }
.build { 
    border: solid black 1px;
    width: 10em;
    margin: 0.2em;
    padding: 0.2em;
    font-size: 1.0em;
}
.test {
    float: right;
    border: solid lightgrey 1px;
    width: 3em;
    margin-top: -0.8em;
    margin-right: -0.4em;
    // opacity: .99;      // workaround
}
.fail { background-color: rgb(255, 150, 150); }
.ok { background-color: rgb(170, 255, 170); }
.red { background-color: rgb(255, 150, 150); }
.green { background-color: rgb(150, 255, 150); }
.stale { opacity: .5; }
<table>
  <tr>
    <th>Version</th>
    <th>Product A</th>
    <th>Product B</th>
  </tr>
  <tr>
    <td>1.1</td>
    <td>
      <div class="build ok">success</div>
      <div class="test green">100%</div>
    </td>
    <td>
      <div class="build ok">success</div>
      <div class="test red">98%</div>
    </td>
  </tr>
  <tr>
    <td>1.0</td>
    <td>
      <div class="build ok stale">success</div>
      <div class="test red">99%</div>
    </td>
    <td>
      <div class="build fail stale">failure</div>
    </td>
  </tr>
</table>

关于html - css 不透明度影响同级不透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44438643/

上一篇:javascript - JQuery .addClass() 不应用 JQuery 中定义的样式

下一篇:html - 如何只在部分元素上获得悬停效果?

相关文章:

html - 在不使用 vh 的情况下获取带有 % viewport 的标题的最佳方法

javascript - 当发送的数据是html数据时发送ajax请求

html - 什么是现代的@font-face 声明?

asp.net - 如何从子页面更改母版页面中的 Div 类

html - 即使有 float ,输入也不会左对齐

html - 当它有焦点时如何在这个 div 周围添加外部颜色?

mysql - 从逗号分隔值获取特定值

css - 背景大小的 IE7 & 8 CSS hack

javascript - 检测 hammer.js 事件的方向变化

php - 从 PHP CSS 文件中取回 PHP 变量