Fixed position Div ALWAYS appear on top?
If the content is obstructed by flash, even with a correct z-index, add wmode="transparent"
to the flash embed script.
div always on top of fixed element
You can use a wrapper <div>
for the content and let it scroll - so that the absolutely positioned sibling does not scroll along with it, as follows:
HTML
<div class="bottom">
<div class="top"></div>
<div class='contentWrap'>
<div class="content"></div>
</div>
</div>
CSS
.contentWrap{
height:100%;
overflow-y:auto;
}
* { margin: 0; padding: 0;}.bottom { padding: 20px; height: 253px; position: fixed; bottom: 0px; width: 100%; background-color: red; overflow: hidden;}.top { height: 50px; width: 100%; background-color: yellow; position: absolute; top: 0px;}.contentWrap { height: 100%; padding-top: 30px; /* .top height - .bottom padding*/ overflow-y: auto;}.content { height: 1500px; background: linear-gradient(green, blue);}
<div class="bottom"> <div class="top"></div> <div class='contentWrap'> <div class="content"></div> </div></div>
Fixed position but relative to container
Short answer: no. (It is now possible with CSS transform. See the edit below)
Long answer: The problem with using "fixed" positioning is that it takes the element out of flow. thus it can't be re-positioned relative to its parent because it's as if it didn't have one. If, however, the container is of a fixed, known width, you can use something like:
#fixedContainer {
position: fixed;
width: 600px;
height: 200px;
left: 50%;
top: 0%;
margin-left: -300px; /*half the width*/
}
http://jsfiddle.net/HFjU6/1/
Edit (03/2015):
This is outdated information. It is now possible to center content of an dynamic size (horizontally and vertically) with the help of the magic of CSS3 transform. The same principle applies, but instead of using margin to offset your container, you can use translateX(-50%)
. This doesn't work with the above margin trick because you don't know how much to offset it unless the width is fixed and you can't use relative values (like 50%
) because it will be relative to the parent and not the element it's applied to. transform
behaves differently. Its values are relative to the element they are applied to. Thus, 50%
for transform
means half the width of the element, while 50%
for margin is half of the parent's width. This is an IE9+ solution
Using similar code to the above example, I recreated the same scenario using completely dynamic width and height:
.fixedContainer {
background-color:#ddd;
position: fixed;
padding: 2em;
left: 50%;
top: 0%;
transform: translateX(-50%);
}
If you want it to be centered, you can do that too:
.fixedContainer {
background-color:#ddd;
position: fixed;
padding: 2em;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
Demos:
jsFiddle: Centered horizontally only
jsFiddle: Centered both horizontally and vertically
Original credit goes to user aaronk6 for pointing it out to me in this answer
Stack 2 Fixed Divs always top
Just add fixed
position to .message
and then add a margin-top
of 50px
to the nav like this:
.nav { background-color: #000; height: 76px; width: 100%; position: fixed; margin-top: 50px; z-index: 100; color:#fff;}
.message{ background-color: #ff0000; height: 50px; width: 100%; position: fixed;}
<div class="message">Global Message</div><div class="nav">Navigation</div><div id="hero" class="hero"> <div id="content"> <img src="images/icon.png"> </div></div><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
How can I make a div stick to the top of the screen once it's been scrolled to?
You could use simply css, positioning your element as fixed:
.fixedElement {
background-color: #c0c0c0;
position:fixed;
top:0;
width:100%;
z-index:100;
}
Edit: You should have the element with position absolute, once the scroll offset has reached the element, it should be changed to fixed, and the top position should be set to zero.
You can detect the top scroll offset of the document with the scrollTop function:
$(window).scroll(function(e){
var $el = $('.fixedElement');
var isPositionFixed = ($el.css('position') == 'fixed');
if ($(this).scrollTop() > 200 && !isPositionFixed){
$el.css({'position': 'fixed', 'top': '0px'});
}
if ($(this).scrollTop() < 200 && isPositionFixed){
$el.css({'position': 'static', 'top': '0px'});
}
});
When the scroll offset reached 200, the element will stick to the top of the browser window, because is placed as fixed.
CSS to keep element at fixed position on screen
You may be looking for position: fixed
.
Works everywhere except IE6 and many mobile devices.
How to make a Div appear on top of everything else on the screen?
z-index
is not that simple friend. It doesn't actually matter if you put z-index:999999999999
..... But it matters WHEN you gave it that z-index
. Different dom-elements take precedence over each other as well.
I did one solution where I used jQuery to modify the elements css, and gave it the z-index
only when I needed the element to be on top. That way we can be sure that the z-index
of this item has been given last and the index will be noted. This one requires some action to be handled though, but in your case it seems to be possible.
Not sure if this works, but you could try giving the !important
parameter too:
#desired_element { z-index: 99 !important; }
Edit: Adding a quote from the link for quick clarification:
First of all, z-index only works on positioned elements. If you try to set a z-index on an element with no position specified, it will do nothing. Secondly, z-index values can create stacking contexts, and now suddenly what seemed simple just got a lot more complicated.
Adding the z-index for the element via jQuery, gives the element different stacking context, and thus it tends to work. I do not recommend this, but try to keep the html and css in a such order that all elements are predictable.
The provided link is a must read. Stacking order etc. of html elements was something I was not aware as a newbie coder and that article cleared it for me pretty good.
Reference philipwalton.com
Related Topics
How to Display Only a Certain Div Within an Iframe
Twitter Bootstrap Modal Width Issues
Styling Input Range for Webkit with Pure CSS
What Is Meant by "Participate" in The Definition of "Normal Flow" in The CSS 2.1 Spec
Angular2 Height Animation - Same State Transition
How to Style The Default Placeholder Text on an HTML5 Input Type="Date" Element? in Chrome
Email Clients Ignoring Internal Style Sheet
What Version of Foundation Is Used in Cakephp3
Browser Not Recognizing Max-Device-Width
Which Way to Load a Huge Image (Canvas Vs Img Vs Background-Image)
CSS: Show Style on Hover Over Multiple Divs Placed One Over Another
Using Rem Units for a Div in a Web Page
Radio Button Show/Hide Content
5Px Extra Margin Getting Added to The Bottom of Each Div
Ie7 - Relatively Positioned Div Does Not Scroll in Its Container
How to Easily Change a Font-Sizing from Px to Em for a Big, Existing Site