Подтвердить что ты не робот

Извлечь элемент из контейнера

У меня есть все мое содержимое, заключенное в элемент контейнера с фиксированной шириной.

Но у меня есть <div>, который я хочу "разбить" этого контейнера, чтобы охватить всю ширину страницы.

http://dabblet.com/gist/3207168

enter image description here

Как вы можете видеть в этом примере, у меня есть <div>, чтобы вырваться, но поскольку он позиционируется абсолютно, это не влияет на поток страницы... это то, что мне бы хотелось сделать.

Я хочу, чтобы он работал как в потоке страницы, но расширял всю ширину окна.

4b9b3361

Ответ 1

Может быть, 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>

Ответ 2

Другая идея, которая в современных браузерах растягивает .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>

Ответ 3

Вы не можете заставить его вырваться из оберточного div, но вы можете имитировать этот же эффект, поскольку обертывание div является полной шириной страницы и обертыванием других элементов на этой странице, которые не предполагаются быть в вашем "разломе" div внутри div, который имеет желтый фон и ширину 300 пикселей.

Ответ 4

Для достижения этой цели вы можете использовать отрицательные поля.

.wrapper {
    width:300px;
    margin:0 auto;
}
.break {
    width: 600px;
    margin-left:-150px;
}

Единственная проблема заключается в том, что вам нужно будет указать ширину обоих элементов.

EDIT: решение voodoo417 будет лучше...

Ответ 5

Создавая верхушку решения 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>