CSS z-index不起作用(使用相对定位,使用顶部和左侧)

CSS z-index Not Functioning (relative positioning used, top and left used)

本文关键字:顶部 相对 z-index 不起作用 CSS 定位      更新时间:2024-04-12

我有以下代码使"b"(div)位于"更多文本"(文本节点)之上:

JavaScript、HTML和输出:

function InsertDetails() {
  document.getElementById("UI-Slide-Content").focus();
  var HTMLToInsert = "div";
  var sel, range, html;
  var text = HTMLToInsert;
  if (window.getSelection) {
    sel = window.getSelection();
    if (sel.getRangeAt && sel.rangeCount) {
      range = sel.getRangeAt(0);
      range.deleteContents();
      range.insertNode(document.createTextNode("More text"));
      var b = document.createElement("div");
      b.style.zIndex = "2";
      b.style.position = "relative";
      b.style.backgroundColor = "lightGray";
      b.appendChild(document.createTextNode("Details"));
      b.style.padding = "5px";
      range.insertNode(b);
      var a = document.createElement(text);
      a.setAttribute("onclick", "DetailsSwitch(this);");
      a.style.backgroundColor = "buttonFace";
      a.innerHTML = "▼ Summary";
      a.style.padding = "5px";
      range.insertNode(a);
    }
  } else if (document.selection && document.selection.createRange) {
    //MessageBox("Feature Not Supported", "This feature does not work in Internet Explorer.");
  }
}
function DetailsSwitch(a) {
  var allDivs = document.getElementsByTagName("div");
  var c = 0;
  var d = a;
  var e = null;
  while (c < allDivs.length) {
    if (allDivs[c] == d) {
      e = allDivs[c + 1];
    }
    c++;
  }
  if (e.style.display == "block") {
    e.style.display = "none";
    d.innerHTML = d.innerHTML.replace("▼&nbsp;", "▶&nbsp;");
  } else {
    e.style.display = "block";
    d.innerHTML = d.innerHTML.replace("▶&nbsp;", "▼&nbsp;");
  }
}
<div id="UI-Slide-Content" contenteditable style="border: 1px solid black; width: 100%; height: 100%;">UI-Slide-Content</div>
<button onclick="InsertDetails();">Insert Details Pane</button>

尝试单击"插入详细信息窗格"按钮,这将插入一个用户可以编辑的详细信息窗格(不使用本机HTML <details/>标记)。我希望详细信息显示在"摘要"框下方(y轴上)和"更多文本"文本节点上方(z轴上)。

但是,它不起作用当窗格打开时,"更多文本"会下移。我希望通过使用z-index使详细信息窗格的详细信息框位于"更多文本"上方,使"更多文本"不移动。它不起作用。

我读过很多类似的问题,发现

使用"顶部"answers"左侧"属性可以有所帮助(CSS z索引不适用于相对定位)

使用相对定位也可能有助于(另一个问题)

但后来,我尝试了这两种,但都没有成功。

有人能帮帮我吗?提前谢谢。

尽管一些网站声称。。。

z索引仅适用于已定位的元素(位置:绝对,位置:相对,或位置:固定)

唯一的W3代码示例使用CCD_ 3。因此,我们不能使用position:relative来让元素堆叠在一起。

参见2015年10月CSS 3 WG规范中的示例16:https://drafts.csswg.org/css-position/#propdef-z指数

这里有一个jsFiddle,它说明了如何使用position:absolute; 将浅灰色框放置在深灰色按钮上