位置:绝对导致水平滚动条

Bik*_*ohn 30 html css

当窗口调整大小(大小减小)超出它们时,绝对定位(侧面黄色广告)div会导致不需要的水平滚动条.仅当窗口小于main时,滚动条才会出现#container,这些广告div不应影响布局.它们被覆盖并不重要.

HTML:

<div id='topbar'>
    <div id='menu'> <a href='#'>Link1</a>
 <a href='#'>Link2</a>
 <a href='#'>Link3</a>
 <a href='#'>Link4</a>

    </div>
</div>
<div id='container'>
    <div id='pushfix'></div>
    <div id='ad_container'>
        <div id='ad1'>ad</div>
        <div id='ad2'>ad</div>
    </div>
Lorem ipsum placeholder text
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

body, html {
    height:100%;
}
body {
    margin:0;
}
#topbar {
    width:100%;
    background-color:#DCDCDC;
    height:40px;
    position:absolute;
}
#menu {
    width:250px;
    background-color:#B3B3B3;
    margin:0 auto;
    height:100%;
    text-align:center;
    line-height:40px;
}
#menu a {
    color:#fff;
}
#container {
    height:100%;
    background-color:#808080;
    width:240px;
    padding:0 5px;
    margin:0 auto;
}
#pushfix {
    height:40px;
}
#ad_container {
    position:relative;
    width:240px;
}
#ad_container div {
    width:100px;
    background-color:yellow;
    height:300px;
    position:absolute;
}
#ad1 {
    left:-105px;
}
#ad2 {
    right:-105px;
}
Run Code Online (Sandbox Code Playgroud)

精确布局副本:http://jsfiddle.net/8UkQA/

Aar*_*ron 47

body由于某种原因,超出界限的绝对定位元素似乎会导致滚动条出现.您可以通过简单地将body标签内的所有内容包装在一个相对定位的div中来解决这个问题overflow: hidden;.超出此容器边界的绝对定位内容不会导致窗口上的滚动条.

这是一个有效的例子:http://jsfiddle.net/8UkQA/1/

  • 只是为了澄清,如果绝对位置元素超过*top*或*left*上的`body`的边界,它们将不会导致滚动条. (11认同)

Moh*_*jib 15

我想进一步补充一点,如果遇到同样的问题,并且使用@Aaron建议的解决方案,页面似乎不滚动,那么你可以使用轴特定版本的" overflow"属性,如下所示,

overflow-x: hidden;
Run Code Online (Sandbox Code Playgroud)

这样只会隐藏右侧(或网站为RTL时左侧)而不是垂直内容的内容.

如果突出内容仅以特定分辨率出现(如我的情况),为了进一步增强此方法,您可以使用css媒体查询来限制行为.

@media (min-width: 1500px) {
    body {
        overflow-x: hidden;
    }
}
Run Code Online (Sandbox Code Playgroud)


Jim*_*are 5

你需要给孩子坐标又名 top: 0; left: 0;