2015-07-14 9 views
5

Ich mag ein Element (div) unter seiner festen Mutter geschichtet wird (header):Element unter seiner festen Mutter mit `z-index` in Chrome

header { 
 
    position: fixed; 
 
    width: 100%; 
 
    height: 100px; 
 
    
 
    background-color: #ccc; 
 
} 
 
header > div { 
 
    position: absolute; 
 
    height: 100%; 
 
    width: 100px; 
 
    z-index: -1; 
 
    
 
    transform: translateY(50%); 
 
    background-color: #aaa; 
 
}
<header> 
 
    <div> 
 
    </div> 
 
</header>

Dies funktioniert in Firefox aber nicht in Chrome. Um es zu beheben müssen Sie dies tun:

header { 
 
    position: fixed; 
 
    width: 100%; 
 
    height: 100px; 
 
} 
 
header > div { 
 
    position: relative; 
 
    width: 100%; 
 
    height: 100%; 
 
    
 
    background-color: #ccc; 
 
} 
 
header > div > div { 
 
    position: absolute; 
 
    height: 100%; 
 
    width: 100px; 
 
    z-index: -1; 
 

 
    transform: translateY(50%); 
 
    background-color: #aaa; 
 
}
<header> 
 
    <div> 
 
    <div> 
 
    </div> 
 
    </div> 
 
</header>

Aber das saugt! Wer stimmt nicht mit der Spezifikation Firefox oder Chrome? Und gibt es einen besseren Ansatz, um dies browserübergreifend zu erledigen?

+1

möglich Duplikat [Chrome: kann nicht eine absolute div über eine andere Position, wenn die Eltern fest ist] (http://stackoverflow.com/questions/13798669/chrome-cant- position-one-absolute-div-über-andere-when-the-parent-is-fixed) – Anonymous

Antwort

0

die Sie interessieren,

header { 
 
    position: fixed; 
 
    width: 100%; 
 
    height: 100px; 
 
    background-color: #ccc; 
 
    overflow: hidden; 
 
} 
 
header > div { 
 
    height: 100%; 
 
    z-index: -1; 
 
    transform: translateY(50%); 
 
    background-color: #aaa; 
 
    overflow: hidden; 
 
}
<header> 
 
    <div></div> 
 
</header>

Scheint, wie ich falsch verstehen Ihre Frage haben. Wie auch immer, die Antwort ist Chrome ist korrekt. Ich denke, die bessere Lösung dafür ist die Verwendung von zwei DIVs (wenn möglich).

header { 
 
    position: fixed; 
 
    width: 100%; 
 
    overflow: hidden; 
 
    
 
} 
 
header .header-inner { 
 
    position: relative; 
 
    height: 100px; 
 
    width: 100%; 
 
    z-index: 1; 
 
    background-color: #ccc; 
 
} 
 

 
header .under-layer { 
 
    position: absolute; 
 
    height: 100%; 
 
    z-index: -1; 
 
    transform: translateY(50%); 
 
    background-color: #aaa; 
 
    overflow: hidden; 
 
    top: 0px; 
 
    width: 100%; 
 
}
<header> 
 
    <div class="header-inner"></div> 
 
    <div class="under-layer"></div> 
 
</header>

+0

Ich glaube du hast mich falsch verstanden: 'overflow: hidden' versteckt das Element wenn es (teilweise) außerhalb seiner Eltern ist. Aber ich möchte es genauso wie die Beispiele, die ich gepostet habe. Diese Antwort könnte also nur in Bezug auf Chrome stimmen. Könnten Sie sich auf den Standard beziehen? – witrin