2012-03-16 2 views
4

죄송합니다. 완전한 코드를 게시 할 수 없으며 독점적 인 작업을하고 있습니다. 기본적으로 나는 Z- 인덱스 6을 가진 DIV가 Z- 인덱스 5를 갖는 오버레이 DIV에 의해 차단되고있는 문제가 있습니다. 이런 일이 일어날 수있는 시나리오가 있습니까? 왜 이런 일이 일어나고 있는지 알아 내려고 노력하고 있습니다. 그것은 단지 말이되지 않습니다. 중첩 DIV와 관련이 있거나 CSS position 일 가능성이 있습니까?내가 알아야 할 z- 색인에 관한 이상한 규칙은 무엇입니까?

나는 모호한 점에 대해 사과드립니다. JSFiddle에서 다시 만들려고했지만 불행히도 예상대로 작동합니다. 실제 코드 만이 불안정합니다.

구조 :

<div id="window"> 
    <div id="wall"> 
     <div class="box" /><div class="box" /> .... many boxes 
    </div> 
</div> 
<div id="overlay" /> 

CSS :

 $('<div id="overlay"></div>').css({ 
      'left': $('#window').position().left + 'px', 
      'top': $('#window').position().top + 'px', 
      'width': $('#window').width() + 'px', 
      'height': $('#window').height() + 'px', 
      'opacity': 0.8 
     }).appendTo('body'); 

상자 중 하나가 Z-을 가지고 있지만 :

#window { 
    position: relative; 
    width: 960px; 
    height: 700px; 
    overflow: hidden; 
    background: #666; 
} 

#wall { 
    position: relative; 
    width: 1640px; 
    height: 1600px; 
    -webkit-perspective: 2000; 
} 

#overlay { 
    position: absolute; 
    z-index: 5; 
    background: #000; 
} 

.box { 
    left: 0px; 
    top: 0px; 
    position: absolute; 
    width: 228px; 
    height: 228px; 
    color: #fff; 
    font-family: Helvetica, Arial, sans-serif; 
    font-weight: bold; 
    font-size: 0.8em; 
    -webkit-transform-style: preserve-3d; 
    z-index: 4; 
    cursor: pointer; 
} 

오버레이 크기는 특정 이벤트에 jQuery를 통해 설정된다 인덱스 6, 오버레이 5 일 때, 오버레이는 여전히 상기 박스 위에있다.

오버레이는 창 위로 이동해야하지만 해당 상자 중 하나를 통과시킵니다.

왜이 일을 JSFiddle 작동하지만 내 실제 코드 않습니다! http://jsfiddle.net/csaltyj/2gzTc/

+0

z-index는 position이 정의 된 경우에만 작동합니다 ... 아마도 z- 인덱스 6이 적용되지 않은 것일 수 있습니다. html을 확인하십시오 –

+0

요소가 형제가 아닌 경우 작동하지 않을 수 있습니다. – gilly3

+0

익스플로러는 '절대'항목과 '상대'항목을 혼합 할 때 Z- 색인을 별개의 '집합'으로 구분하는 것으로 알려져 있습니다.모든 '절대'위치 요소는 하나의 z- 인덱스를 가지며 모든 '상대'위치 요소는 다른 요소를 무시하는 완전히 독립적 인 z- 인덱스를가집니다. 나는이 버크를 가진 다른 브라우저가 없다는 것을 알고 있으므로이 브라우저는 쉽게 분리 될 수 있어야합니다. – Sparky

답변

11

z-indexposition:relative, absolute, 또는 fixed와 요소에서 작동합니다. 그것은 많은 사람들을 여행하는 것처럼 보입니다.

또한 자녀는 부모보다 아래에있을 수 없습니다. This example 또한 Jsfiddle에 나와 있습니다.

z-index 대부분의 경우 문서 자체가 부모에 상대적 아니라 : 예를 바탕으로

당신은이 문제는 데있어 분명했다. 한 형제 자매의 z-index이 다른 형제 자매보다 낮 으면, 형제 자매의 첫 번째 형제 자매에 대해 변경 한 것은 형제 자매 형제보다 위 이동시킬 수 없습니다. 관심이 있으시면 stacking context에 대해 자세히 알아보십시오. 빨간색에서 크로스

z-index example

은 당신이 원하는 무엇이며, 마크 업, 그 작은 상자는 큰 상자의 자녀 고려 (CSS 불가능 : 여기

는 시각이다 이는 다음과 같습니다

<div class="one"> 
</div> 
<div class="two"> 
    <div> I can never be above "one", if my parent "two" isn't. </div> 
</div> 

해결책은 벽 내부의 "오버레이"를 이동하거나 더 나은 아직 (이에 적용되는 요소의 자식으로 렌더링되는) 의사 요소를 사용하는 것입니다, 오버레이가 오버레이 div가 아무런 의미 적 의미를 추가하지 않는다면 CSS의 영역에 남아 있어야합니다.

+0

확인. 이 경우에는 상대적이고 절대적인 것만 사용합니다. – CaptSaltyJack

+0

업데이트 된 질문보기 (more code) – CaptSaltyJack

+0

Safari에서 Dablet 표시가 완전히 비어 있습니다. jsFiddle을 대신 쉽게 사용할 수 있습니까? – Sparky

관련 문제