Ich habe den folgenden Code 'b' (div) geht über 'Mehr Text' (Text-Knoten) zu machen:CSS z-index nicht funktioniert (relative Positionierung verwendet, oben und verwendete links)
JavaScript, HTML und Ausgang:
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("▼ ", "▶ ");
} else {
e.style.display = "block";
d.innerHTML = d.innerHTML.replace("▶ ", "▼ ");
}
}
<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>
Versuchen Sie, auf ‚einfügen Detailfenster‘ klicken, und dies würde Legen Sie einen Detailbereich (nicht mit nativen HTML <details/>
-Tag), dass der Benutzer bearbeiten kann. Ich möchte, dass die Details unter dem Feld "Zusammenfassung" (auf der Y-Achse) und über dem Textknoten "Mehr Text" (auf der Z-Achse) angezeigt werden.
Aber dann funktioniert es nicht. 'Mehr Text' wird nach unten verschoben, wenn das Fenster geöffnet ist. Ich möchte, dass mehr Text nicht verschoben wird, indem Sie das Detailfeld des Detailbereichs über den "Mehr Text" mit z-index
setzen. Es funktioniert nicht.
Ich habe viele ähnliche Fragen wie diese zu lesen, und haben herausgefunden, dass
‚top‘ mit und ‚left'attributes (CSS z-index not working with relative positioning)
mit relativen Positionierung auch ein anderes helfen kann helfen kann (Frage)
Aber dann habe ich diese beiden versucht, aber ohne Erfolg.
Kann mir bitte jemand helfen? Danke im Voraus.
mit Ihrem „Mehr Text "bewegt sich auf der ** Y ** -Achse nach unten - also natürlich ** z ** - Index tut nichts in dieser Hinsicht. Wenn du willst, dass es an Ort und Stelle bleibt, dann musst du deine "Details" _absolut_ positionieren, denn das wird es aus dem Fluss nehmen, so dass es die Position der folgenden Elemente nicht mehr beeinflusst. – CBroe
Wo ist Ihr oberer Z-Index definiert? Ich sehe einen Standardwert von '2' für das, was ich für den niedrigen Wert halte. Der obere Wert sollte 10 Stufen höher sein. – Sparky256
@ CBroe. Dieser Code muss mehrere Probleme behoben werden. Ich schlage vor, dass es von Grund auf neu codiert wird. Das DOM wird mit diesem Code nicht ordnungsgemäß funktionieren, und es gibt das Problem der Z-Index-Kollision. – Sparky256