开发者

CSS: div expanding to window height, with margin-bottom fixed

开发者 https://www.devze.com 2023-02-28 02:35 出处:网络
I\'ve been trying to do something extremely simple, yet I can\'t make it work! Here\'s what I\'m trying:

I've been trying to do something extremely simple, yet I can't make it work!

Here's what I'm trying:

---margin top: 15 px

---VARIABLE HEIGHT DIV (imagine a box-like element)

---margin bottom: 15px

I basically want the box to resize based on the browser window height.

Here's what I've been trying:

CSS

 body {
    background-color: #D0CDC5;
    height:100%
}

 #info_box {
    background-color: rgba(40,40,40,0.5);
    border: rgba(34,34,34,0.9) 1px solid;
    width: 350px;
    height: 100%;
    margin: 15px 0px 15px 20px;
}

 #info_box p {
    color: red;
} 

HTML

<body>
<div id="info_box">
<p>Sample Content</p>
</div>
</body>

By the way, why is that the text appears 15px from the top of the div? Why isn't it flush?

开发者_如何学运维Thanks a lot guys,

**EDIT

See this link, very good answer for all browser but IE6 and 7. another HTML/CSS layout challenge Thanks to @Hristo!


UPDATE

Check out the fiddle...

Edit, Full Screen


Check out the fiddle... http://jsfiddle.net/UnsungHero97/uUEwg/1/

I hope this helps.
Hristo


if you don't need to support IE6, and this is not part of a bigger layout, there is an easy way:

#info_box {

position: fixed;
left: 0px;
top: 15px;
right: 0px;
bottom: 15px;

}

alternatively, you could make #info_box stretch the full height, and put a position: absolute div into it with the same data as above.

I'm not entirely sure whether there's a way to do this without absolute or fixed positioning, because no matter whether you use padding or margin, you'll always end up adding 30 pixels to what is already 100% of the height. I'm happy to be proven wrong though.


Elements get their height based on the content inside them. So you already have an element that is centered and that will have margin top and bottom of 15px from the top and bottom of you site's body.

But if you want an element that will always be centered middle of screen, filling all but 15px top and 15px bottom, it is not achievable with "conventional" means. It will either have to be an image or a re-sizable box that will have a scroll-bar if the content is bigger than screen size.

Anyways, if that is what you want, give it a fixed size and height, and use position:fixed.


If you always use a consistent browser resolution, then it is doable. But if your screen size changes, depending on the device you use (tablet, mobile etc.), then this cannot be accomplished though CSS alone.

I have done this dynamically using jQuery.

0

精彩评论

暂无评论...
验证码 换一张
取 消