div 中的不同不透明度元素

Ayd*_*4ik 5 html css opacity

我需要更改 div 中元素的不透明度,使其比父元素的不透明度更高。在没有预处理器的情况下,如何提供.solid完全不透明度 ( ="1")?

.half-faded {
  opacity:0.3;
  border:1px solid black;
  width:200px;
  display:flex;
  justify-content:space-around;
}
.solid {
  opacity:1; /* doesn't help */
  opacity:2; /* twice doesn't help */
}
Run Code Online (Sandbox Code Playgroud)
<div class="half-faded">
  <span class="one">One</span>
  <span class="two">Two</span>
  <span class="solid">Solid</span>
  <span class="four">Four</span>
</div>
Run Code Online (Sandbox Code Playgroud)

Par*_*hal 4

如果.half-faded有多个元素(不仅仅是spans),你可以这样做:

.half-faded > * {
  opacity: .3;
}

.half-faded > .solid {
  opacity: 1;
}
Run Code Online (Sandbox Code Playgroud)

[编辑]

执行您在评论中要求的操作的唯一方法是将“Solid”文本包装在例如中<span>,如下面的代码片段所示。原因是该.half-faded > .solid规则将.solid元素的不透明度重新设置为 1,因此我们必须将元素外部文本的不透明度重新设置为.biz0.3但是没有 CSS 规则来匹配文本节点,因此您需要有元素内的文本。

如果您能够更改标记的构建方式,我认为更改其构建方式会更容易。

.half-faded > * {
  opacity: .3;
}

.half-faded > .solid {
  opacity: 1;
}
Run Code Online (Sandbox Code Playgroud)
.half-faded > * {
  opacity: .3;
  display: block;
}

.half-faded > .solid {
  opacity: 1;
}

.half-faded > .solid > span {
  opacity: .3;
}
Run Code Online (Sandbox Code Playgroud)