it-swarm.com.de

Element aus dem Behälter brechen

Ich habe meinen gesamten Inhalt in einem Containerelement mit fester Breite verpackt.

Ich habe jedoch einen <div>, den ich aus diesem Container "ausbrechen" möchte, um die gesamte Breite der Seite zu überspannen.

http://dabblet.com/Gist/3207168

enter image description here

Wie Sie in diesem Beispiel sehen können, habe ich den <div>, um ausbrechen zu können, aber da er absolut positioniert ist, hat er keinen Einfluss auf den Seitenfluss.

Ich möchte, dass es sich so verhält, als würde es sich im Fluss der Seite befinden, aber es wird die gesamte Breite des Fensters erweitert.

26
Shpigford

Vielleicht 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>

31
voodoo417

Eine andere Idee, die in modernen Browsern den .breakout nur auf die Breite des Browserfensters ausdehnt:

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>

Edit: Der einzige Chris Coyier erklärt Full Width Containers in Limited Width Parents , was in etwa ähnlich ist.

32
fboes

Sie können es nicht wirklich aus dem Wrapping-Div herausbrechen lassen, aber Sie können den gleichen Effekt simulieren, indem Sie das Wrapping-Div auf die gesamte Breite der Seite setzen und die anderen Elemente auf dieser Seite, die sich nicht in diesem Bereich befinden, umschließen Ihr "Break Out" div innerhalb eines Divs mit gelbem Hintergrund und 300px Breite.

4
Zachary Kniebel

Sie können negative Margen verwenden, um dies zu erreichen.

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

Das einzige Problem ist, dass Sie die Breite beider Elemente angeben müssen.

EDIT: Die Lösung von voodoo417 wäre besser ...

1
smilledge

Aufbauend auf der Lösung von voodoo417, indem nur ein zweiter Wrapper und einige geringfügige Änderungen hinzugefügt werden, kann dies ordnungsgemäß durchgeführt werden:

    .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>

Hier ist das angepasste jsfiddle:

http://jsfiddle.net/v53vv78d/2/

1
kraftner