开发者

force absolute positioned div not to overlap

开发者 https://www.devze.com 2023-04-08 04:58 出处:网络
I have a header bar that is positioned using position:absolute; and I cannot seem to get it to not overlap my content.

I have a header bar that is positioned using position:absolute; and I cannot seem to get it to not overlap my content.

force absolute positioned div not to overlap

Here is the html i'm using for my example:

<div class="ui-page ui-page-active">
    <div class="ui-header">
        <div class="ui-title ui-title-h1">
            Page Title 1
        </div>
    </div>
    <div class="ui-content">
        <a href="#pg-two">Page Two</a>
    </div>
    <div class="ui-footer">
        <div class="ui-title ui-title-h3">
            Page Footer 1
        </div>
    </div>
</div>

and here is my css

html,body {
    height: 100%;
    width: 100%;
    margin: 0;
    padding: 0; 
}
.ui-page {
    background-color: #bbb;
    height: 100%;
    width: 100%;
    display: block;
    position开发者_如何学C: relative;
}
.ui-page-inactive {
    display: none;  
}
.ui-page-active {
    display: block; 
}
.ui-header {
    position: absolute;
    top: 0;
    background-color: #000;
    width: 100%;
    display: inline-block;
}
.ui-content {

}
.ui-footer {
    position: absolute;
    bottom: 0;
    background-color: #000;
    width: 100%;
    display: inline-block;
}
.ui-title {
    text-align: center;
    color: #fff;
    padding: 4px;
    line-height: 150%;
}
.ui-title-h1 {
    font-size: 1.5em;
    font-weight: 900;
}

My end goal is to have a header bar always at the top, a footer bar always at the bottom and for the content to fill the centre. The content div does not actually need to fill 100%, I just don't want it to be blocked by either the header or footer.


An easy way would be to have either padding-top or margin-top (I'm not sure which) on .ui-content set to the height of your header, that would push .ui-content down so there isn't overlap.


If the header and footer are a fixed-height (like, for example "80px") then you can make the content absolute with the top-and-bottom margins (position:absolute;overflow-y:scroll;top:80px;bottom:80px;) and make the header and footer fixed (position:fixed;height:80px;top:0;left:0;right:0;overflow:hidden; for the header and position:fixed;height:80px;bottom:0;left:0;right:0;overflow:hidden; for the footer)

Something like that might work.

0

精彩评论

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

关注公众号