2017-06-06 12 views
0

親の親と同じ幅になるようにdivを拡張したいと思います。したがって、このようなHTML構造で:余裕を持たない親にDivを拡張する

<div class="pp"> 
    <div class="p"> 
    <p> 
    Some text 
    </p> 
    <div class="c"> 
     This is the thingy! 
    </div> 
    <p> 
    Some more text 
    </p> 
    </div> 
</div> 

私はdiv.ppの国境に拡張するdiv.cをしたいと思います。

これは負のマージンで可能ですが、私の状況では、あらかじめdiv.ppのマージンを認識していません。私はこれを行うためのJavaScriptを書くことができたことを知っていますが、私はCSSのみのソリューションに興味があります。また、HTMLの構造を変更することでこの問題を解決できることも認識していますが、これもオプションではありません。

https://jsfiddle.net/y37mLkzu/1/

が負のマージンでこれを固定する例があります:ここでは

はHTMLといくつかの有用なCSSを示すフィドルです。

+0

残念ながら、あなたの場所に持ってcontraints与えられ、JSは唯一の答え(余談CSSカスタムプロパティAKA CSS変数)です。 –

+0

** **これは純粋に視覚効果のためのものでない限り、疑似要素で何かを偽造することができます。私は、誰かがそのオプションを指摘したことを知っている。これらの線に沿ったもの - https://stackoverflow.com/questions/28565976/css-how-to-overflow-from-div-to-full-width-of-screen?lq=1 –

+0

@Paulie_Dそれは完全にはないこの場合の予期しない結果。見ていただきありがとうございます。 – thatidiotguy

答えて

2

これがあなたの状況ではうまくいくかどうかはわかりませんが、固定マイナスマージンを使用せず純粋なCSSのみを使用している唯一の方法です。私は:before:after~.cを追加し、.c要素のいずれかの側に絶対配置しました。また、余分な絶対配置要素を切り取るために、オーバーフロー隠しを.ppラッパーに追加しました。

p { 
 
    margin:0; 
 
} 
 
.pp { 
 
    padding: 0 6px 0 6px; 
 
    width: 100px; 
 
    background-color: black; 
 
    overflow: hidden; 
 
} 
 
.p { 
 
    background-color:white; 
 
} 
 
.c { 
 
    background-color:red; 
 
    position: relative; 
 
} 
 
.c:before, .c:after { 
 
    content:""; 
 
    position: absolute; 
 
    top:0; 
 
    background: red; 
 
    height:100%; 
 
    width:100%; 
 
} 
 
.c:before { 
 
    left:-100%; 
 
} 
 
.c:after { 
 
    right:-100%; 
 
}
<div class="pp"> 
 
    <div class="p"> 
 
    <p> 
 
    Some text 
 
    </p> 
 
    <div class="c"> 
 
     This is the thingy! 
 
    </div> 
 
    <p> 
 
    Some more text 
 
    </p> 
 
    </div> 
 
</div>

+0

これはまさに私が探していたソリューションのタイプです。擬似要素を使うとは思っていませんでした。素晴らしい仕事、ありがとう。 – thatidiotguy

-1

あなたはポジションを使用しますか?ちょうど興味があることを知っている。 position:absoluteを使用しても動作します。

+0

例を教えてください。これは答えよりもコメントのようです。この問題を正確に解決するために私はどのように 'position'を使うでしょうか? – thatidiotguy

+0

私はこのようにしていました:.c {position:absolute;左:8px} – Archana

+0

これはいくつかの理由で全く機能しません。1).ppの境界を超えて右に伸びます。 2)私が概説した要件に反する.ppのパディング値に基づいて量をハードコードする必要があります。 https://jsfiddle.net/y37mLkzu/2/ – thatidiotguy

関連する問題