【问题标题】:How can I bring a div above the current front-most (z-index: 0) div?如何将 div 放在当前最前面的(z-index:0)div 之上?
【发布时间】:2018-04-13 12:48:39
【问题描述】:

我正在构建一个使用纯 CSS 的仪表。它有一个背景,可以从显示中剪切剩余的进度颜色。我想在顶部添加另一个 div,它给出了进度的文本指示:“10%”。

似乎无论我做什么,我最终都会得到背景剪辑覆盖我的文本。

我这里有一个问题的例子:

https://svelte.technology/repl?version=1.60.3&gist=77e1b55c23e229dee8d45b5648610593

我的代码的一个非常精简的版本,证明问题如下:

<div class="gauge-wrap">
    <div class="gauge-core">
        <div class="gauge-bg" style="background-color: #fff;">
            <div class="gauge-bg-value">10 %</div>
        </div>
        <div class="gauge-cap" style="background-color: #000;"></div>
    </div>
</div>

<script>
.gauge-bg-value {
  position: relative;
  color: #f0f;
  top: 7px;
  z-index: 6;
}

.gauge-wrap {
  position:relative;
  margin:0 0 20px;
}

.gauge-bg {
  position: absolute;
  width: 200px;
  height: 200px;
  border-radius:100px;
  z-index:0;
}

.gauge-cap {
  position: absolute;
  top:16px;
  left:16px;
  width: 168px;
  height: 168px;
  z-index:5;
}
</script>

看起来 z-index: 0 仍然在我的文本 div (.gauge-bg-value) 之上,即使我给了它更高的索引。

更新 - 解决方案:

在构建我的示例时,我将文本移动到 .gauge-cap div 中,现在它位于顶部。也许是那个 div 一直覆盖它。很高兴听到不修改 html 结构的解决方案。

【问题讨论】:

标签: html css z-index svelte


【解决方案1】:

这与stacking context 有关。这种情况下……

<div class='foo'>
  <div class='bar'></div>
</div>

<div class='baz'></div>

...如果foobaz 都创建了堆叠上下文,并且baz 的z-index 比foo 高,那么bar 无论如何都不会出现在baz 之上。您必须将标记分成不同的层(尽管在您的示例中,我认为使用 SVG 而不是 HTML 会更容易)。

【讨论】:

  • 谢谢 - 当你这样说的时候,它很有意义!
猜你喜欢
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-14
相关资源
最近更新 更多