2016-04-08 14 views
0

I(DIV)「その他のテキスト」(テキストノード)上に行く「b」を作るために、次のコードを持っている:CSSのZインデックス機能しない(相対的な位置は、トップ、使用および使用左)

の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軸上)の上に詳細を表示することを希望します。

しかし、それは動作しません。ペインが開いているときに 'More text'が下にシフトします。詳細ペインの詳細ボックスをz-indexを使用して「その他のテキスト」の上に移動させることによって、「その他のテキスト」を移動させたくないということです。それは動作しません。

Iこれに似た多くの質問を読んでいると、「トップ」を使用して

ことを見出したと「left'attributesは助けることができる(CSS z-index not working with relative positioning

相対位置を使用することも(別のを助けるかもしれません質問)

しかし、私はこれらの2つを試みましたが、成功しませんでした。

誰かが私を助けてくれるかもしれませんか?前もって感謝します。

+1

あなたの「よりを使用して、暗いグレーのボタンの上に配置することができる方法を示してjsFiddleですテキストは "** Y **軸上を移動するので、自然に** z ** - インデックスはそれについて何もしません。それがその場にとどまるようにするには、 "Details" _を絶対的に配置する必要があります。これは、それがフローの外に出るため、後続の要素の位置には影響しません。 – CBroe

+0

上位Zインデックスはどこに定義されていますか?私は低い値であると仮定して、デフォルト値 '2'を参照します。上限値は10レベル高くする必要があります。 – Sparky256

+0

@CBroe。このコードにはいくつかの問題があります。私はそれをゼロから再コード化することを提案する。 DOMはこのコードでは正しく動作しません。また、z-index collisionの問題があります。 – Sparky256

答えて

0

にもかかわらずsome websites claimこの...

z屈折率のみ位置決め要素上の動作(位置:絶対、 位置:相対、又は位置:固定)

を... W3コードの例ではposition:absoluteしか使用していません。したがって、要素を互いに重ね合わせるためにposition:relativeを使用することはできません。

2015年10月からCSS 3 WG仕様で例16を参照してください:ここでhttps://drafts.csswg.org/css-position/#propdef-z-index

は、ライトグレーのボックスがposition:absolute;

+1

CSS3の本では、position:fixed; (ツールバーのような)、または位置:絶対; (ページがスクロールする際に次のページに移動)すると、divを移動または非表示にしたり、Z-インデックスを調整したりすることができます。オブジェクトが同じスペースとZインデックスを占める場合は、衝突が発生する可能性があります。何千ものCSSの10を書いた後、私はこれをよく知っています。 – Sparky256

+0

もちろん、z-indexは 'position:relative'の要素に作用します - 明示的に指定されています。 https://drafts.c​​sswg.org/css-position/#propdef-z-index:_ "対象:\t配置要素" _、https://drafts.c​​sswg.org/css-position/#box-offsets "_ – CBroe

+0

_" ... W3コードの唯一の例ではposition:absolute "_ - an _example_はカバーする必要はありませんすべての可能性;それは、エイリアンが地球に来たと言っているように、男性の人間を拉致します。そして、そのサンプル/例の推論から、地球の人口のすべてが男性だったということです。 – CBroe

関連する問題