Giá trị tối thiểu và tối đa của chỉ số z?


518

Tôi có một div trong trang HTML của tôi. Tôi đang hiển thị div này dựa trên một số điều kiện, nhưng div đang hiển thị đằng sau phần tử HTML nơi tôi trỏ con trỏ chuột.

Tôi đã thử tất cả các giá trị cho chỉ mục z từ 0 - 999999. Có ai có thể cho tôi biết lý do tại sao điều này xảy ra không?

Có bất kỳ giá trị tối thiểu hoặc tối đa nào của thuộc tính Z-INDEX của CSS không?

.divClass {
     position: absolute; 
     left: 25px; 
     top: 25px; 
     width: 320px;
     height: 300px; 
     z-index: 1000; 
}
<table cellspacing="0" cellpadding="0" width="100%">
  <tr>
    <td>
      <asp:HyperLink ID="lnkProgram" runat="server"></asp:HyperLink>
    </td>
  </tr>
  <tr>
     <td>
         <div class="divClass">
           Some Data
         </div>
     </td>
  </tr> 
</table>

Tôi đang hiển thị và ẩn div với .divClassonclick thông qua việc <asp:hyperlink>sử dụng jQuery.


Vấn đề có lẽ không liên quan đến chỉ số z. Bạn có thể đưa ra một số ví dụ HTML và CSS minh họa hành vi không? Những trình duyệt nào bạn gặp phải điều này trong?
roryf

Chỉ cần quan tâm bạn có thể thử điều tương tự mà không cần sử dụng bảng, chỉ cần một số nội dung, liên kết và div. Đồng thời đặt màu nền cho div chỉ để chắc chắn trong khi bạn đang phát triển.
roborourke

60
"đã thử tất cả giá trị cho thuộc tính Z-INDEX từ 0 - 999999". Tôi thấy khó tin.
sampathsris

4
@Krumia Tôi không, Anh ấy có thể thử tất cả các giá trị chỉ số z trong khoảng 0-999999 với JS ... Chỉ là một tùy chọn ...
FullHumanProgrammer 10/11/2015

4
Không ai thực sự đề cập đến display: nonetrong CSS của mình?
Đánh dấu Baijens

Câu trả lời:


386
┌──────────────────────┬───────────────────┬──────────────────────────────────┐
│ Browser              │ Max z─index value │ When exceeded, value changes to: │
╞══════════════════════╪═══════════════════╪══════════════════════════════════╡
│ Firefox 0 - 2        │ 2147483647        │ element disappears               │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Firefox 3            │ 2147483647        │ 0                                │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Firefox 4+           │ 2147483647        │ 2147483647                       │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Safari 0 - 3         │ 16777271          │ 16777271                         │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Safari 4+            │ 2147483647        │ 2147483647                       │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Internet Explorer 6+ │ 2147483647        │ 2147483647                       │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Chrome 29+           │ 2147483647        │ 2147483647                       │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Opera 9+             │ 2147483647        │ 2147483647                       │
└──────────────────────┴───────────────────┴──────────────────────────────────┘

4
Tôi tin rằng anh ấy có nghĩa là tiêu cực.
Gavin

41
Làm thế nào bạn đến trên những?
2540625

Bất kỳ số nào cho Safari / Chrome / Firefox di động?
2540625

30
Đối với những người quan tâm 2,147,483,647 = 2^31 - 1,. Đó là một nguyên tố Mersenne.
Reggie Pinkham

2
@BehnamMohammadi, hành vi tiêu chuẩn nên là gì?
Pacerier

306

http://www.w3.org/TR/CSS21/visuren.html#z-index

'chỉ số z'

Giá trị : tự động | <số nguyên> | thừa kế

http://www.w3.org/TR/CSS21/syndata.html#numbers

Một số loại giá trị có thể có giá trị nguyên (ký hiệu là <số nguyên>) hoặc giá trị số thực (ký hiệu là <số>). Số thực và số nguyên chỉ được chỉ định trong ký hiệu thập phân. Một <số nguyên> bao gồm một hoặc nhiều chữ số "0" đến "9". <Số> có thể là <số nguyên> hoặc có thể bằng 0 hoặc nhiều chữ số theo sau là dấu chấm (.) Theo sau là một hoặc nhiều chữ số. Cả số nguyên và số thực có thể được bắt đầu bằng dấu "-" hoặc "+" để biểu thị dấu hiệu. -0 tương đương với 0 và không phải là số âm.

Lưu ý rằng nhiều thuộc tính cho phép số nguyên hoặc số thực làm giá trị thực sự giới hạn giá trị trong một phạm vi nào đó, thường là giá trị không âm.

Vì vậy, về cơ bản không có giới hạn nào cho giá trị chỉ mục z trong tiêu chuẩn CSS, nhưng tôi đoán hầu hết các trình duyệt giới hạn ở giá trị 32 bit đã ký (−2147483648 đến +2147483647) trong thực tế (64 sẽ hơi vượt trội không có ý nghĩa để sử dụng bất cứ thứ gì dưới 32 bit ngày nay)


17
Điều quan trọng cần lưu ý là giá trị chỉ số z tối đa trên Safari 3 là 16777271. Điều này đã được nâng lên thành tiêu chuẩn 32 bit trong Safari 4, do đó, chỉ cần quan tâm nếu bạn nhắm mục tiêu các trình duyệt cũ hơn. Ngoài ra, ngay cả trong Safari 3, mọi thứ trên 16777271 đều bị giới hạn, vì vậy trừ khi bạn sử dụng các giá trị chỉ mục z lớn vô lý để đặt hàng nhiều yếu tố, bạn không nên gặp sự cố (nghĩa là đặt một yếu tố thành giá trị chỉ số z là 2147483647 sẽ đảm bảo rằng phần tử luôn ở vị trí cao nhất trong bất kỳ trình duyệt nào, trừ khi nó cạnh tranh với phần tử khác cũng có chỉ số z> 16777271).
Doktor J

6
@DoktorJ Có ai biết tại sao lại là 16777271 không? Có vẻ kỳ quái là nó nhiều hơn 56 so với giới hạn của số nguyên không dấu 24 bit.
Jools

2
@ Công cụ theo webkit dev Eric Seidel , đó là kết quả của việc sử dụng bitfield 24 bit -log base 2 (lg) = lg(16777271)
Janosch

2
@Janosch Xin lỗi, tôi không hiểu. lg (16777271) lớn hơn 24. Tôi có thể nghĩ rằng một bitfield 24 bit không đủ lớn.
Jools

@Janosch, 2 ^ 24 = 16777216. 16777271do đó sẽ cần 25 bit.
Pacerier

157

Các thử nghiệm của tôi cho thấy đó z-index: 2147483647là giá trị tối đa, được thử nghiệm trên FF 3.0.1 cho OS X. Tôi đã phát hiện ra lỗi tràn số nguyên: nếu bạn nhập z-index: 2147483648(là 2147483647 + 1) thì phần tử chỉ đứng sau tất cả các phần tử khác. Ít nhất là trình duyệt không bị sập.

Và bài học để học là bạn nên cẩn thận khi nhập các giá trị quá lớn cho z-indextài sản vì chúng bao quanh.


57
Bởi vì (2147483647) này là giá trị dương lớn nhất của số nguyên đã ký trên hệ điều hành 32 bit ...
Badr Hari

4
Tôi không nghĩ con số sẽ bao quanh nếu giá trị vượt quá 2147483647 ... Tôi nghĩ nhiều khả năng các trình duyệt sẽ chỉ coi bất kỳ số nào trên giá trị này là một giá trị không đổi, ví dụ: 0.
oliver-clare

3
Có thể giá trị của bạn trở nên tiêu cực ... Ví dụ -2147483647
Wahyu Fahmy

3
Trong các trình duyệt hiện đại, hơn 2147483648 không di chuyển các yếu tố đằng sau các yếu tố khác
Zach Saucier

25

Giá trị tối thiểu của chỉ số Z0 ; giá trị tối đa phụ thuộc vào loại trình duyệt.

nhập mô tả hình ảnh ở đây


4
Trên thực tế, chỉ số z có thể là một số âm. Các phần tử định vị có chỉ số z âm được sắp xếp trước trong bối cảnh xếp chồng, vì vậy chúng sẽ xuất hiện phía sau tất cả các phần tử khác. Đồng thời xem các tài liệu: w3.org/TR/CSS22/visuren.html#z-index
magikMaker

17
Dễ dàng sao chép và dán: 2147483647
nến

Chỉ mục Z có thể là số âm, nhưng ví dụ Safari cho iOS 11.0.2 có vấn đề với thuộc tính này.
kris_IV

Santosh, bạn đã lấy những con số này ở đâu? Bạn đã sao chép từ câu trả lời của Behnam và thêm IE7 và IE8 chưa?
CPHPython

21

Nó phụ thuộc vào trình duyệt (mặc dù phiên bản mới nhất của tất cả các trình duyệt nên tối đa là 2147483638), cũng như phản ứng của trình duyệt khi vượt quá mức tối đa.

http://www.puidokas.com/max-z-index/



21

Theo kinh nghiệm, tôi nghĩ mức tối đa chính xác z-indexlà 2147483638.


7
Có vẻ như bạn đã sai. Theo các thử nghiệm được thực hiện vào năm 2009 bởi Eric Poidokas, giá trị chỉ số z tối đa (không có nguy cơ giảm các yếu tố khi tràn) là 2147483647.
Martin

14

Z-Index chỉ hoạt động cho các yếu tố có position: relative;hoặcposition: absolute; áp dụng cho chúng. Nếu đó không phải là vấn đề, chúng ta cần xem một trang ví dụ để hữu ích hơn.

EDIT: Bác sĩ giỏi đã đưa ra lời giải thích đầy đủ nhất nhưng phiên bản nhanh là tối thiểu là 0 vì nó không thể là số âm và tối đa - tốt, bạn sẽ không bao giờ thực sự cần phải vượt quá 10 cho hầu hết các thiết kế.


5
Tôi đã sử dụng "z-index: -1;" trước để "chìm" một phần tử để nó không thể được nhấp vào. Nó có thể không phải là một giải pháp phổ biến, nhưng nó hoạt động. : P
Ty.

17
Tôi biết điều này hơi muộn, nhưng nó hoạt động với vị trí: cố định là tốt.
TCCV

7
AFAIK, bạn có thể có các số nguyên âm cho giá trị z-index.
d -_- b

Tôi tự hỏi tại sao tôi chỉ định z-index: 1000, nhưng trình duyệt cho tôi biết chỉ số z thực tế là tự động. vị trí thực hiện các mẹo.
Will Wu

6

Tôi đã thấy rằng thường thì nếu chỉ số z không hoạt động vì cha mẹ / anh chị em của nó không có chỉ số z được chỉ định.

Vì vậy, nếu bạn có:

<div id="1">
    <a id="2" style="z-index:2"></a>
    <div id="3" style="z-index:1"></div>
    <button id="4"></button>
</div>

mục số 3, hoặc thậm chí số 4, có thể đang cạnh tranh # 2 cho không gian nhấp / di chuột, mặc dù nếu bạn đặt # 1 thành z-index 0, các anh chị em có chỉ số z đặt chúng vào ngăn xếp độc lập giờ đây sẽ nằm trong cùng một ngăn xếp và sẽ chỉ số z đúng.

Điều này có một mô tả hữu ích và khá nhân bản: http://foohack.com/2007/10/top-5-css-mistakes/  


4
Trong khi chúng ta đang ở trong chủ đề này, một vấn đề phổ biến khác là không có position: relative;hoặc một cái gì đó tương tự.
Ryan Taylor

1
Trên thực tế, chỉ cần đọc lại bài gốc. Bạn nói đúng, đây có lẽ là vấn đề của anh ấy.
Ryan Taylor

5

Một người dùng ở trên nói "tốt, bạn sẽ không bao giờ thực sự cần phải vượt quá 10 cho hầu hết các thiết kế."

Tùy thuộc vào dự án của bạn, bạn có thể chỉ cần chỉ mục z 0-1 hoặc chỉ mục z 0-10000. Bạn thường sẽ cần chơi ở các chữ số cao hơn ... đặc biệt nếu bạn đang làm việc với người xem hộp đèn (9999 dường như là tiêu chuẩn và nếu bạn muốn đứng đầu chỉ số z của họ, bạn sẽ cần phải vượt quá!)


0

Mặc dù INT_MAXcó lẽ là đặt cược an toàn nhất, WebKit rõ ràng sử dụng gấp đôi nội bộ và do đó cho phép số lượng rất lớn (với độ chính xác nhất định).LLONG_MAXví dụ: hoạt động tốt (ít nhất là trong Chromium 64-bit và WebkitGTK), nhưng sẽ được làm tròn thành 9223372036854776000.

(Mặc dù bạn nên cân nhắc kỹ xem bạn có thực sự, thực sự cần nhiều chỉ số z này không).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.