Set width of a "Position: fixed" div relative to parent div
I'm trying to give a div (position: fixed) the width of 100% (relating to it's parent div). But I've got some problems...
EDIT: The first problem is sovled by using inherit, but it still doesn't work. I think the problem is that I'm using multiple divs that take the 100%/inherit width. You can find the second problem on the jsfiddle update: http://jsfiddle.net/4bGqF/7/
Fox example
#container {
width: 800px;
}
#fixed {
position: fixed;
width: 100%;
}
and the html
<div id="container">
<div id="fixed">Sitename</div>
<p>
blaat
</p>
</div>
Or you can try it out: http://jsfiddle.net/4bGqF/
The problems seems to be that the fixed element is always taking the width of the window/document. Does anyone know how the fix this?
I can't give my fixed element a fixed with, because I'm using the jScrollPane plugin. It depends on the content whether there's a scrollbar or not.
Thanks a lot!
PS: The text of the 2 divs are on top of each other. This is just an example so that doesn't really matter.
Solution 1:
I´m not sure as to what the second problem is (based on your edit), but if you apply width:inherit
to all inner divs, it works: http://jsfiddle.net/4bGqF/9/
You might want to look into a javascript solution for browsers that you need to support and that don´t support width:inherit
Solution 2:
As many people have commented, responsive design very often sets width by %
width:inherit
will inherit the CSS width NOT the computed width -- Which means the child container inherits width:100%
But, I think, almost as often responsive design sets max-width
too, therefore:
#container {
width:100%;
max-width:800px;
}
#contained {
position:fixed;
width:inherit;
max-width:inherit;
}
This worked very satisfyingly to solve my problem of making a sticky menu be restrained to the original parent width whenever it got "stuck"
Both the parent and child will adhere to the width:100%
if the viewport is less than the maximum width. Likewise, both will adhere to the max-width:800px
when the viewport is wider.
It works with my already responsive theme in a way that I can alter the parent container without having to also alter the fixed child element -- elegant and flexible
ps: I personally think it does not matter one bit that IE6/7 do not use inherit