开发者

CSS position absolute and full width problem

I want to change the <dl id="site_nav_global_primary"> below to take up the full screen width without changing the wrap and the header elements containing it.

When I try to position the <d开发者_运维百科l> element (see the /* problematic code */ section) below, the navigation gets the 100% of the wrapper which has a max width of 1003px. I want it to stretch to the maximum without changing the wrap and header divs.

#wrap {
    margin:0 auto;
    width:100%;
    min-width:760px;
    max-width:1003px;
    overflow:hidden;
    background-color: lightgray; /* for illustrative purposes */
}

#header {
    width:100%;
    position: relative;
    float:left;
    padding-top:18px;
    margin-bottom:29px;
    background-color: rebeccapurple; /* for illustrative purposes */
}

#site_nav_global_primary {    
    float:right;
    margin-right:18px;
    margin-bottom:11px;
    margin-left:18px;
    background-color: salmon; /* for illustrative purposes */
}

/* Problematic code */
#site_nav_global_primary {    
    position: absolute;
    width:100%;
    top:0px;
    left:0px;
}
<div id="wrap">
    <div id="header">
        <dl id="site_nav_global_primary">Lorem Ipsum</dl>
    </div>
<div>

Is this possible?


You could set both left and right property to 0. This will make the div stretch to the document width, but requires that no parent element is positioned (which is not the case, seeing as #header is position: relative;)

#site_nav_global_primary {    
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
}

Demo at: http://jsfiddle.net/xWnq2/, where I removed position:relative; from #header


You need to add position:relative to #wrap element.

When you add this, all child elements will be positioned in this element, not browser window.


I have similar situation. In my case, it doesn't have a parent with position:relative. Just paste my solution here for those that might need.

position: fixed;
left: 0;
right: 0;


Adding the following CSS to parent div worked for me

position: relative;
max-width: 100%


Make #site_nav_global_primary positioned as fixed and set width to 100 % and desired height.


This one also works. With this method, there is no need to interfere with positioning of parent divs. I have checked

#site_nav_global_primary {    
  position: absolute;
  width: 100vw;
}


I don't know if this what you want but try to remove overflow: hidden from #wrap

0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜