29

すべてのコンテンツを固定幅のコンテナ要素にラップしています。

しかし<div>、そのコンテナを「分割」して、ページの幅全体に広げたいということがあります。

http://dabblet.com/gist/3207168

ここに画像の説明を入力

その例でわかるように、私は<div>抜け出す必要がありますが、それは絶対に配置されているため、ページの流れには影響しません...これは私がやりたいことです.

ページの流れのように動作させたいのですが、ウィンドウの幅全体を広げてください。

4

7 に答える 7

37

もう 1 つのアイデアは、最新のブラウザー.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 がFull Width Containers in Limited Width Parentsについて説明していますが、これはいくぶん似ています。

于 2016-06-22T09:42:37.540 に答える
31

多分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>

于 2012-07-30T14:28:11.333 に答える
4

実際にはラッピング div から抜け出すことはできませんが、ラッピング div をページの全幅にし、そのページにあるはずのない他の要素をラッピングすることで、これと同じ効果をシミュレートできます。黄色の背景と 300 ピクセルの幅を持つ div 内の「ブレイクアウト」 div。

于 2012-07-30T14:26:20.783 に答える
1

これを達成するために負のマージンを使用できます。

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

唯一の問題は、両方の要素の幅を指定する必要があることです。

編集: voodoo417 のソリューションの方が良いでしょう...

于 2012-07-30T14:29:03.813 に答える
1

voodoo417 のソリューションの上に 2 つ目のラッパーを追加し、いくつかのわずかな変更を加えるだけで、これを適切に行うことができます。

    .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は次のとおりです。

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

于 2014-09-03T22:37:25.920 に答える
0

コンテナの幅を考慮したより良いバージョン。

.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);
}

https://jsfiddle.net/Lxnmr01h/

于 2021-01-06T00:27:37.820 に答える