根据您的建议原始建议(设置负边距),我尝试并提出了一种类似的方法,使用百分比单位作为动态浏览器宽度:
的HTML
<div class="grandparent">
<div class="parent">
<div class="child">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolore neque repellat ipsum natus magni soluta explicabo architecto, molestias laboriosam rerum. Tempore eos labore temporibus alias necessitatibus illum enim, est harum perspiciatis, sit, totam earum corrupti placeat architecto aut minus dignissimos mollitia asperiores sint ea. Libero hic laudantium, ipsam nostrum earum distinctio. Cum expedita, ratione, accusamus dicta similique distinctio est dolore assumenda soluta dolorem quisquam ex possimus aliquid provident quo? Enim tempora quo cupiditate eveniet aperiam.</p>
</div>
</div>
</div>
CSS:
.child-div{
margin: 0 -100%;
padding: 0 -100%;
}
.parent {
width: 60%;
background-color: red;
margin: 0 auto;
padding: 50px;
position:relative;
}
.grandparent {
overflow-x:hidden;
background-color: blue;
width: 100%;
position:relative;
}
负边距将使内容流出父DIV。因此,我将设置padding: 0 100%;
为将内容推回到Chlid DIV的原始边界。
负边距还会使.child-div的总宽度扩展到浏览器的视口之外,从而导致水平滚动。因此,我们需要通过应用overflow-x: hidden
祖母DIV(父父Div的父代):
这是JSfiddle
我曾尝试过尼尔斯·卡斯珀森的left: calc(-50vw + 50%)
;直到我发现Safari浏览器无法正常运行,它在Chrome&FF(还不确定IE)中都能正常工作。希望他们在我真正喜欢此简单方法后尽快解决此问题。
这也可以解决您的问题,其中父DIV元素必须是 position:relative
此替代方法的两个缺点是:
- 需要额外的标记(例如,祖父母元素(就像不错的ol'table垂直对齐方法是一样的...)
- 子DIV的左右边框永远不会显示,仅因为它们在浏览器的视口之外。
如果让您发现此方法有任何问题,请告诉我;)。希望能帮助到你。
position: relative
?您需要position: relative
什么?我想我要问的是:您要做什么?