我将所有内容都包裹在一个固定宽度的容器元素中。
但是我有一个<div>
我想“突破”该容器以跨越页面的整个宽度。
http://dabblet.com/gist/3207168
正如您在该示例中所看到的,我有<div>
突破,但由于它是绝对定位的,它不会影响页面的流动......这就是我希望它做的事情。
我希望它表现得像在页面流中一样,但会扩大窗口的整个宽度。
我将所有内容都包裹在一个固定宽度的容器元素中。
但是我有一个<div>
我想“突破”该容器以跨越页面的整个宽度。
http://dabblet.com/gist/3207168
正如您在该示例中所看到的,我有<div>
突破,但由于它是绝对定位的,它不会影响页面的流动......这就是我希望它做的事情。
我希望它表现得像在页面流中一样,但会扩大窗口的整个宽度。
另一个想法,在现代浏览器中确实将其.breakout
仅拉伸到浏览器窗口的宽度:
body, html {
overflow-x: hidden;
margin: 0;
padding: 0;
}
div {
padding:0.5em;
}
.container {
width:300px;
background-color:rgba(255,255,0,0.5);
margin:auto;
}
.breakout {
margin:1em -100%; /* old browsers fallback */
margin:1em calc(50% - 50vw);
background-color:rgba(255,0,255,0.5)
}
<div class="container">
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
<div class="breakout">
Break out of container
</div>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
</div>
编辑:唯一的 Chris Coyier 解释了 Limited Width Parents 中的 Full Width Containers,这有点相似。
也许http://jsfiddle.net/sYv9g/1/?
.wrapper {
width:300px;
margin:0 auto;
background:yellow;
}
.break {
text-align:center;
font-weight:bold;
background:rgba(255,0,0, 0.5);
margin-left:-100%;
margin-right:-100%;
}
<div class="wrapper">
<h1>Ipsum Dapibus Pellentesque Pharetra</h1>
<p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Etiam porta sem malesuada magna mollis euismod. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Sed posuere consectetur est at lobortis.</p>
<div class="break">This should be full width</div>
<p>Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Maecenas sed diam eget risus varius blandit sit amet non magna. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.</p>
<div class="break">This should be full width</div>
<p>Nullam id dolor id nibh ultricies vehicula ut id elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas faucibus mollis interdum. Donec id elit non mi porta gravida at eget metus. Donec ullamcorper nulla non metus auctor fringilla.</p>
<p>Vestibulum id ligula porta felis euismod semper. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur blandit tempus porttitor.</p>
</div>
您实际上无法使其脱离包装 div,但您可以通过将包装 div 设置为页面的全宽并包装该页面上不应该包含的其他元素来模拟相同的效果您在具有黄色背景和 300 像素宽度的 div 中的“突破” div。
我喜欢这种简单的技术(多亏了用一行 CSS 将 Bust 元素从它们的容器中取出):
margin: 0 calc(50% - 50vw)
您可以使用负边距来实现这一点。
.wrapper {
width:300px;
margin:0 auto;
}
.break {
width: 600px;
margin-left:-150px;
}
唯一的问题是您需要指定两个元素的宽度。
编辑:voodoo417 的解决方案会更好......
在 voodoo417 的解决方案之上构建,只需添加第二个包装器并进行一些细微的修改,这可以正确完成:
.outer-wrapper {
overflow:hidden;
min-width:300px;
}
.wrapper {
width:300px;
margin:0 auto;
background:yellow;
}
.break {
text-align:center;
font-weight:bold;
background:rgba(255,0,0, 0.5);
margin-left:-9999px;
margin-right:-9999px;
}
<div class="outer-wrapper">
<div class="wrapper">
<h1>Ipsum Dapibus Pellentesque Pharetra</h1>
<div class="break">This should be full width</div>
</div>
</div>
这是改编的jsfiddle:
考虑到容器宽度的更好版本。
.wrapper {
width:300px;
margin:0 auto;
background:yellow;
}
.break {
text-align:center;
font-weight:bold;
background:rgba(255,0,0, 0.5);
margin-left: calc((-100vw + 300px)*.5);
margin-right: calc((-100vw + 300px)*.5);
}