可以基于VW(视口宽度)设置宽度.您也可以通过使用calc
函数使用该值来计算div的左边距.这样,您可以将其定位在流内部,但仍然突出在居中的固定宽度div的左侧和右侧.
支持很好.vw
等于supported by all major browsers, including IE9+.calc()
也一样.如果您需要支持IE8或Opera Mini,那么使用这种方法就不走运了.
-编辑-
正如 comments 中提到的,当页面内容高于屏幕时,这将导致水平滚动条.您可以使用body {overflow-x: hidden;}
取消该滚动条.虽然以不同的方式解决问题会很好,但是使用left
和right
的解决方案(就像在Width:100% without scrollbars中介绍的那样)在这种情况下是不起作用的.
-编辑2021-
滚动条的另一个解决方案,可能是可接受的,也可能不是,这取决于您的情况:
#wide-div {
width: calc(100vw - 20px);
margin-left: calc(-50vw + 50% + 10px);
div {
min-height: 40px;
box-sizing: border-box;
}
#container {
position: relative;
}
#parent {
width: 400px;
border: 1px solid black;
margin: 0 auto;
}
#something {
border: 2px solid red;
}
#wide-div {
width: calc(100vw - 20px);
margin-left: calc(-50vw + 50% + 10px);
border: 2px solid green;
}
<div id="container">
<div id="parent">
<div id="something">Red</div>
<div id="wide-div">Green
<br>Green
<br>Green
<br>Green
<br>Green
<br>Green
<br>Green
<br>Green
</div>
<div id="something-else">Other content, which is not behind Green as you can see.</div>
</div>
</div>