あなたの提案の元の提案(負のマージンの設定)に基づいて、動的ブラウザー幅のパーセント単位を使用して同様の方法を考え出しました:
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
、Grandparent DIV(親Divの親)にを適用して、押し出し幅をクリップする必要があります。
これがJSfiddleです
Nils Kasperssonを試してみましたleft: calc(-50vw + 50%)
。Safariブラウザーが正しく機能しないことが判明するまで、ChromeとFF(IEについてはまだわかりません)で完全に問題なく動作しました。私が実際にこの単純な方法を気に入ったら、すぐに修正してくれるといいのですが。
これにより、親DIV要素が position:relative
この回避策の方法の2つの欠点は次のとおりです。
- 追加のマークアップが必要です(つまり、祖父母の要素(良いol 'テーブルの垂直方向のalignメソッドと同じように...)
- Child DIVの左と右の境界は、ブラウザーのビューポートの外側にあるという理由だけで表示されることはありません。
この方法で問題が見つかった場合はお知らせください;)。それが役に立てば幸い。
position: relative
ますか?何が必要position: relative
ですか?私が求めているのは、おそらく何をしようとしているのでしょうか。