html - 如何在父元素和父元素的兄弟元素之上显示子元素?

标签 html css parent-child siblings

我的问题与这个问题有关:

Show child element above parent element using CSS

该问题的答案是设置 overflow: visible,仅适用于一个 child 的一位 parent 。但是,我有一排这些元素;我需要 child 显示在 parent 之上的 parent 行。我可以让 child 在原来的 parent 身上展示,但我不能让 child 在 parent 的 sibling 身上展示。为了让您了解我在说什么,这里有一个屏幕截图:

screenshot

我想要的是选项弹出窗口,即隐藏在接下来两行后面的元素,显示在这两行之上,就像它显示在其直接父级之上一样。我一直在弄乱它,还没有弄清楚,所以希望这里有人能够提供帮助。

基本结构如下:

.row,
.selector {
  position: relative;
}

.label,
.selector {
  display: inline-block;
}

.selector {
  overflow: visible;
}

.selector-inner {
  display: block;
}

.selector-arrow {
  float: right;
  width: 21px;
  height: 21px;
  background: url(arrow.png) no-repeat center center;
}

.selector-caption {
  display: inline-block;
}

.options-popup {
  position: absolute;
  z-index: 100;
  top: 0px;
  right: 0px;
}

.options-item {
  /* only for fonts and sizes */
}
<div class="row">
  <div class="label">Color Scheme:</div>
  <div class="selector">
    <div class="selector-inner">
      <div class="selector-arrow"></div>
      <div class="selector-caption">Standard</div>
    </div>
    <div class="options-popup">
      <div class="options-item">Standard</div>
      <div class="options-item">Dark</div>
      <div class="options-item">Light</div>
    </div>
  </div>
</div>

我可以对 CSS 做些什么来让选项弹出窗口显示在所有其他元素之上?我需要对 HTML 做些什么吗?

最佳答案

position: relative 为元素创建一个新的定位上下文。此元素的子元素位于此本地上下文中。他们不能离开这个背景。如果要将子元素定位在其父元素的兄弟元素之上,则应将其父元素的 z-index 设置为比其兄弟元素的 z-index 更高的值。

如果元素相对于其兄弟元素的有效 z-index 位置仅取决于它们的 DOM 树顺序,则将元素移动到其所有兄弟元素之后的位置在 DOM 树中(如果语义合适)也有帮助。

请注意,您始终可以通过 JavaScript 动态更改 z-index(只是,就 Unobtrusive JS 而言,不要忘记提供合理的纯 CSS 替代方案,这样内容就不会被隐藏如果 JS 被禁用)。

关于html - 如何在父元素和父元素的兄弟元素之上显示子元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11175833/

相关文章:

javascript - 在 table 上创建抽屉效果

html - 为什么 flex 元素不缩小过去的内容大小?

php - 无法解决 cakephp 3 中的子父关联

jQuery:仅在父链接上防止默认

父子关系的 MySql 查询优化

html - 如何用CSS将div放在前台?

php - 使用 PHP 的 HTML 5 多文件上传

javascript - 下拉菜单打乱其他标签

javascript - CSS加载不正确

javascript - 不知道如何编写这个 jQuery