2009-04-28 38 views
13

Tôi có điều hướng sau trong đó .topNav có vị trí: tương đối và subnav có vị trí: tuyệt đối. Tôi không thể đưa danh sách con xuất hiện trong danh sách chính do các vấn đề về chỉ mục z. Điều này có vẻ là một vấn đề đã biết.Lỗi liên quan/tuyệt đối của chỉ mục z z-index trong danh sách

<ul> 
<li class="topNav">About Us 
<ul class="subNav"><li> Subsection A</li><li>Subsection B</li></ul> 
</li> 
</ul> 

Có ai biết cách giải quyết không?


CẬP NHẬT http://brh.numbera.com/experiments/ie7_tests/zindex.html thể hiện sự cố mà tôi gặp phải. Bài đăng gốc của tôi nằm trong ngữ cảnh của danh sách nhưng tôi đã giảm vấn đề về việc chỉ mục z có vẻ không hoạt động khi có yếu tố với vị trí: tuyệt đối bên trong phần tử cha với vị trí: tương đối


+0

gì các phong cách trông như thế nào hoặc chúng có nghĩa là chỉ cần thiết lập vị trí? –

+0

ive tước tất cả mọi thứ từ các phong cách ngoài việc định vị như tôi đã chứng minh với bản thân mình rằng đây là nơi mà vấn đề nằm – AJM

+0

Bạn có thể giải thích một chút đầy đủ hơn những gì bạn đang cố gắng đạt được hiệu quả xin vui lòng. Bởi hơn làm bạn có nghĩa là ở trên hoặc phủ lên trên đầu trang của? – wheresrhys

Trả lời

16

Đây là một bài viết rất hay giải thích các vấn đề xếp chồng mà máy móc đề cập đến.

http://css-discuss.incutio.com/wiki/Overlapping_And_ZIndex

Những gì bạn có thể muốn xem xét (tùy thuộc vào lý do tại sao bạn đang muốn định vị trên nhiều yếu tố) sẽ bổ sung một selector di chuột để .base (sử dụng JavaScript cho IE6) có thêm lớp để cho nó thuyết tương đối rộng.

.base:hover{position:relative;} 

Điều này có nghĩa là thứ hai .base không có vị trí: tương đối.

+0

bài viết tuyệt vời, tôi nghĩ rằng tôi hiểu z-index vv nhưng tôi thực sự làm bây giờ và tôi đã giải quyết được vấn đề. – AJM

+2

Tôi biết đây là một bài viết cũ - nhưng AJM bạn sẽ nhớ chia sẻ giải pháp của bạn, như tôi không thể tìm thấy sửa chữa thích hợp cho thử nghiệm css trên .base trên trang web của Ben, trong khi vẫn giữ cả hai .base div như vị trí: tương đối . – TeckniX

+0

rực rỡ, rực rỡ bài viết! Cảm ơn bạn đã chia sẻ – Dogoku

1

Ok, tôi nghĩ rằng vấn đề của bạn có thể xuất phát từ sự thiếu hiểu biết về cách hoạt động của chỉ mục z. Thuộc tính z-index chỉ liên quan đến các phần tử ở cùng cấp trong phân cấp DOM. Nói cách khác, nếu bạn có:

<ul id="a"> 
    <li id="b">b</li> 
    <li id="c">c</li> 
</ul> 
<div id="d"></div> 

và "b" và "c" được tạo kiểu sao cho chúng trùng nhau, chỉ mục z sẽ xác định kết quả nào chồng lên trên cùng. Tuy nhiên, nếu "c" và "d" chồng lên nhau, "d" sẽ luôn ở trên cùng, bất kể chỉ mục z của c là gì, bởi vì các phần tử gần nút DOM gốc hơn sẽ luôn xuất hiện phía trên các phần tử được lồng sâu hơn

Vì vậy, miễn là "subnNav" là con của "topNav", tôi không nghĩ rằng có bất kỳ cách nào để làm cho nó bao gồm nội dung của phụ huynh. Nói cách khác, theo như tôi biết không có giải pháp cho vấn đề này, ngoại trừ việc làm cho "subNav" không phải là con của "topNav".

(LƯU Ý: Tất cả những gì được nói, CSS không đơn giản, vì vậy vẫn có thể có một số cách để có được hiệu ứng bạn muốn mà tôi không biết. Tất cả những gì tôi có thể nói là dựa trên sự hiểu biết của tôi về z-index và kiến ​​thức CSS chung khá tốt của tôi, không có cách nào mà tôi biết.)

+2

Tôi đã làm phát triển web trong 15 năm và tôi chưa bao giờ nghe nói rằng chỉ mục z chỉ áp dụng cho các phần tử ở cùng cấp trong Hệ thống phân cấp DOM. Bạn có thể trích dẫn nguồn hoặc thông số nêu rõ điều này không? Tôi rất tò mò. –

+0

Tôi không thể ... hoặc chính xác hơn, tôi dành một phút trên Google, lười biếng và bỏ cuộc :-) Tuy nhiên, tôi có thể làm ví dụ "chứng minh" điều này. Trong đoạn mã sau, nếu bạn loại bỏ các thuộc tính chỉ mục z, bạn sẽ thấy một hộp màu xanh lá cây ở góc trên bên trái, bởi vì a/b/c tất cả đều có cùng chỉ mục z (và c, màu xanh lá cây, đi kèm Cuối cùng). Tuy nhiên, với chỉ số z trong, bạn sẽ thấy ... một hộp màu xanh lá cây ... mặc dù b (màu vàng) có chỉ số z cao hơn c; c vẫn "trumps" b bởi vì nó cao hơn trong cây DOM. – machineghost

+0

machineghost

0

Stu Nicholls tại CSSplay có được CSS Based nav w/ 6 level drop down (Có thể được mở rộng đến nhiều hơn nếu cần). Điều này làm việc trong Internet Explorer IE5.5, IE6, IE7, Firefox, Opera và bây giờ là Safari, Netscape 8 và Mozilla.

1

thêm

background: url(blank.gif); 

cho elemnts hoàn toàn vị trí giải quyết vấn đề đối với tôi.Mybe nó có thể giúp u 2 :)

liên quan

0

Giải pháp: Sử dụng z-index để

<div class="base" style="z-index:2"> 
<div class="inside"> 
    This has some more text in it. This also has a background. This should obscure the second block of text since it has a higher z-index. 
</div> 
This has some text in it. This has some text in it. This has some text in it. This has some text in it. This has some text in it. 
</div> 

<div class="base" style="z-index:1"> 
This is the second div. You should not be seeing this in front of the grey box. This has some text in it. This has some text in it. This has some text in it. This has some text in it. This has some text in it. This second box should be obscured by the grey box. 
</div> 
+0

Điều này làm việc cho divs, nhưng op đang hỏi về tạo kiểu danh sách. Tôi đang chạy vào cùng một vấn đề hiện tại. – PeerBr

+0

giải pháp ở trên không hoạt động trong IE7 bằng cách sử dụng cùng một biểu định kiểu css như được tìm thấy trên http://brh.numbera.com/experiments/ie7_tests/zindex.html – TeckniX

1

giảm Tôi đã cùng một vấn đề và đã có thể sửa chữa nó Trong IE6 và 7. Kết hợp http://code.google.com/p/ie7-js/ với CSS sau vấn đề đã biến mất. Với vấn đề của tôi, tôi đã có một số mục bên trong một danh sách nổi bên trái và có một chú giải công cụ xuất hiện bất cứ khi nào người dùng di chuột qua li. Để khắc phục nó, tôi adde này:

.ul li:hover {position:relative;z-index:4;} .ul li:hover + li {position:relative;z-index:3;}

Cách nó hoạt động là bất cứ khi nào người dùng di chuột qua LI đầu tiên ví dụ, nó đặt LI thứ hai nổi bên cạnh nó một giá trị z-index thấp hơn. Tất nhiên bạn có thể thay đổi các giá trị z-index để phù hợp với nhu cầu của riêng bạn.

0

tương tự để trả lời bởi @Orhaan, thiết lập một tài sản nền để các yếu tố tuyệt đối là giải pháp duy nhất làm việc cho tôi ...

background-color: rgba(0,0,0,0); 

Thanks Alex Leonoard

Các vấn đề liên quan