试图掩盖页面:绝对位置和固定废墟格式

Trying to Mask a Page: Postion Absolute & fixed ruin formatting

我正在尝试创建一个屏蔽页面的加载图像(当调用时)。

我正在使用车把,html、css 和 javascript。

我有一个看起来像这样的 .hbs 页面:

<div id="spinner"></div>
<div class="special-container"></div>
<div class="special-container"></div>

其中填充了一些 javascript,将内容放入上述每个容器、微调器和特殊容器中。 (虚构的名字如有错字请见谅)

推入微调器div的内容如下:

<div id="mask">
    <div id="spinner">
        Hello world I am the spinner page
        <span class="icon icon-house margin-right-10" ></span>
    </div>
</div>

我有一个包含我的 css 的 .less 文件。看起来像这样:

.special-container {
  max-width: 1170px;
  position:absolute; // I have also tried position:fixed;
}

#spinner {
  position: relative;
  z-index: 100;
}

当我用上面的代码呈现我的页面时,我得到第一个 div (微调器)在另外两个 div 之上,它们彼此重叠。如果我将 css 更改为:

.special-container {
  max-width: 1170px;
}

#spinner {
}

我得到特殊容器(1,第一个)上方的微调器,它位于第二个特殊容器上方。这是我想要的特殊容器设计,但不是我想要的微调器设计。我想要页面中间的微调器,我希望它可以随页面调整大小(如果我不需要这个,我想我可以通过设置顶部、底部和其他尺寸参数来解决我的问题css).

没有定位: 微调器 div2 div3

有定位 spinner/div2/div3 顶部的微调器以及 div2 和 div3 现在显着变小并且彼此重叠。

我看了这个:z-index not working with fixed positioning 其中指出我需要每个 div 都有一个位置。但是对那里的提问者有用的东西对我不起作用(一切最终都在彼此之上,而不是微调器在格式正确的 2 个其他 divs 之上)

只要微调器呈现在 div2 和 div3 之上,它就可以工作。问题是我似乎无法弄清楚为什么 div2 和 div3 停止一个接一个地渲染,而是它们的大小(大大)缩小并且一个接一个地重叠。

为什么位置会导致这个?我该怎么办?

如果我没有强制大小,为什么位置会改变它?我该怎么办?

解决方案:

关键是要从此页面中删除 z-index。相反,我将它插入到微调器 child 的 div 中。

所以在微调器里面我有 html 这样的:

<div id="mask">
     <div id="innerObj">
</div></div> 

我删除了以下内容css:

.special-container {
  max-width: 1170px;
  position:absolute; // I have also tried position:fixed;
}

#spinner {
  position: relative;
  z-index: 100;
}

并用 css 替换为内部 children

#mask {
  position: fixed;
  z-index: 1;
  background: rgba(192,192,192,0.3);

}
#innerObj {
  position: relative;
  z-index: 100;
}

效果很好。