Reputation: 13099
I have a div in my HTML page. I am showing this div based on some condition, but the div is displaying behind the HTML element where I pointed the mouse cursor.
I have tried all values for z-index from 0 - 999999. Can anyone tell me why this is happening?
Is there any minimum or maximum value of Z-INDEX property of CSS?
.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>
I am showing and hiding the div with .divClass
onclick via the <asp:hyperlink>
using jQuery.
Upvotes: 610
Views: 489316
Reputation: 385
As other answers state, there doesn't seem to be a humanly-practical limit for z-index--even if there may be a strict numerical one. Without viewing the other divs in the querent's HTML, another likely cause was lack of position declaration, which has zinged me as well.
The W3 page for z-index states that z-index only works on positioned elements (position: absolute, position: relative, position: fixed, or position: sticky) and flex items (elements that are direct children of display:flex elements).
Upvotes: 0
Reputation: 3143
A more modern and proper approach would be to use this:
.lowest {
z-index: calc(-infinity);
}
.highest {
z-index: calc(infinity);
}
This is supported in all major browsers: https://caniuse.com/mdn-css_types_calc-constant_infinity
Upvotes: 2
Reputation: 472
There are two super easy ways to write maximal and minimal value for z-index
using calc()
.
To write maximal value, do this:
.my-element {
z-index: calc(9e999);
}
To write minimal value, do this:
.my-element {
z-index: calc(-9e999);
}
calc()
Browser compatibility (<number>
value support) tableBrowser | Minimal Version |
---|---|
Firefox | 49 |
Safari | 7 |
IE | 9 |
Opera | 18 |
Chrome | 31 |
Edge | 12 |
Upvotes: 5
Reputation: 640
Topic | Bad | Good |
---|---|---|
Desc | Use z-index to organize stacking order |
Use original order of HTML tags to organize stacking order |
Screenshot | ||
Online DEMO | https://jsbin.com/zanijac/edit?html,output | https://jsbin.com/gakeqix/edit?html,output |
Topic | Bad | Good |
---|---|---|
Desc | Use z-index: max || min to override the other tag |
Use fixed z-index: 0 to isolate The stacking context |
Screenshot | ||
Online DEMO | https://jsbin.com/lavofef/edit?html,output | https://jsbin.com/qakegup/edit?html,output |
z-index is dangerous:
z-index: 1
;, more tags will have to use z-index: 2;
, z-index: 3;
... z-index: max || min;
, Boom!.Use z-index: max || min;
is especially dangerous. If one tag gets z-index: max , it will be hard to override by others, the whole project will out of control gradually.
Upvotes: 1
Reputation: 6440
It depends on the browser (although the latest version of all browsers should max out at 2147483638), as does the browser's reaction when the maximum is exceeded.
Upvotes: 21
Reputation: 7418
Out of experience, I think the correct maximum z-index
is 2147483647.
Upvotes: 30
Reputation: 6459
Conclusion Maximum z-index value is 2,147,483,647 and more than this convert to 2,147,483,647
Browser | Maximum | More Than Maximum |
---|---|---|
Chrome >= 29 | 2,147,483,647 | 2,147,483,647 |
Opera >= 9 | 2,147,483,647 | 2,147,483,647 |
IE >= 6 | 2,147,483,647 | 2,147,483,647 |
Safari >= 4 | 2,147,483,647 | 2,147,483,647 |
Safari = 3 | 16,777,271 | 16,777,271 |
Firefox >= 4 | 2,147,483,647 | 2,147,483,647 |
Firefox = 3 | 2,147,483,647 | 0 |
Firefox = 2 | 2,147,483,647 | Bug: tag hidden |
All Values tested in BrowserStack.
Upvotes: 25
Reputation: 5597
It's the maximum value of a 32 bits integer: 2147483647
Also see the docs: https://www.w3.org/TR/CSS22/visuren.html#z-index (Negative numbers are allowed)
Upvotes: 25
Reputation: 7669
My tests show that z-index: 2147483647
is the maximum value, tested on FF 3.0.1 for OS X.
I discovered a integer overflow bug: if you type z-index: 2147483648
(which is 2147483647 + 1) the element just goes behind all other elements. At least the browser doesn't crash.
And the lesson to learn is that you should beware of entering too large values for the z-index
property because they wrap around.
Upvotes: 186
Reputation: 843
I have found that often if z-index isn't working its because its parent/siblings don't have a specified z-index.
So if you have:
<div id="1">
<a id="2" style="z-index:2"></a>
<div id="3" style="z-index:1"></div>
<button id="4"></button>
</div>
item #3, or even #4, may be contesting #2 for the click/hover space, though if you set #1 to z-index 0, the siblings who's z-index put them in independant stacks now are in the same stack and will z-index properly.
This has a helpful and fairly humanized description: http://foohack.com/2007/10/top-5-css-mistakes/
Upvotes: 7
Reputation: 121294
http://www.w3.org/TR/CSS21/visuren.html#z-index
'z-index'
Value: auto | <integer> | inherit
http://www.w3.org/TR/CSS21/syndata.html#numbers
Some value types may have integer values (denoted by <integer>) or real number values (denoted by <number>). Real numbers and integers are specified in decimal notation only. An <integer> consists of one or more digits "0" to "9". A <number> can either be an <integer>, or it can be zero or more digits followed by a dot (.) followed by one or more digits. Both integers and real numbers may be preceded by a "-" or "+" to indicate the sign. -0 is equivalent to 0 and is not a negative number.
Note that many properties that allow an integer or real number as a value actually restrict the value to some range, often to a non-negative value.
So basically there are no limitations for z-index value in the CSS standard, but I guess most browsers limit it to signed 32-bit values (−2147483648 to +2147483647) in practice (64 would be a little off the top, and it doesn't make sense to use anything less than 32 bits these days)
Upvotes: 358
Reputation: 483
While INT_MAX
is probably the safest bet, WebKit apparently uses doubles internally and thus allows very large numbers (to a certain precision). LLONG_MAX
e.g. works fine (at least in 64-Bit Chromium and WebkitGTK), but will be rounded to 9223372036854776000.
(Although you should consider carefully whether you really, really need this many z indices…).
Upvotes: 0
Reputation: 51
A user above says "well, you'll never really need to go above 10 for most designs."
Depending on your project, you may only need z-indexes 0-1, or z-indexes 0-10000. You'll often need to play in the higher digits...especially if you are working with lightbox viewers (9999 seems to be the standard and if you want to top their z-index, you'll need to exceed that!)
Upvotes: 5
Reputation: 12217
Z-Index only works for elements that have position: relative;
or position: absolute;
applied to them. If that's not the problem we'll need to see an example page to be more helpful.
EDIT: The good doctor has already put the fullest explanation but the quick version is that the minimum is 0 because it can't be a negative number and the maximum - well, you'll never really need to go above 10 for most designs.
Upvotes: 17