41

绝对定位(侧面黄色广告)的 div 在调整窗口大小(尺寸减小)超出它们时会导致不需要的水平滚动条。只有当 window 小于 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>

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;
}

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

4

4 回答 4

62

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

这是一个工作示例:http: //jsfiddle.net/8UkQA/1/

于 2013-10-11T00:21:29.857 回答
16

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

overflow-x: hidden;

这只会隐藏右侧突出的内容(如果网站是 RTL,则隐藏左侧)而不是垂直内容。

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

@media (min-width: 1500px) {
    body {
        overflow-x: hidden;
    }
}
于 2015-03-26T04:21:44.063 回答
5

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

于 2017-10-05T13:19:34.317 回答
-5

// 需要先禁用AutoScroll,否则禁用水平滚动条不起作用

flowLayoutPanel.AutoScroll = false;

// 禁用horizontal scrollbar

flowLayoutPanel.HorizontalScroll.Enabled = false;

// 恢复AutoScroll

flowLayoutPanel.AutoScroll = true;

希望这能解决您的问题。

于 2018-03-16T11:38:41.913 回答