2016-05-25 7 views
0

私は最近、この問題を発見しました。私としてボックスサイズ+ボーダー+絶対的な子

Check for demo on jsfiddle

、輪郭が間違った振る舞い、それはしないのですか? .outside要素のボックスモデルには枠線が含まれていないので、absolute子要素がそれらの枠線の輪郭線も囲むようにする必要がありますか?

これは既知の問題ですか?これは本当に正しい動作ですか?もしそうなら、誰かがなぜ私にそれを説明することができますか?

What I expected to have as result

問題を解決する方法についてはコメントしないでください。しかし、問題がなぜ発生するのか説明してください。予め

おかげ:)

よろしくphlips

position: absolute
+0

あなたは 'border'を設定しなかったが、' outline' ...つまり、問題 – jakob

+0

https://jsfiddle.net/2mytb43a/1/ - 今すぐ国境に - 同じ問題 – phlipsgeisler

+0

待っている..あなたは実際に何を求めているのですか? div内のボーダーをどこにしたいのですか? – jakob

答えて

0

コンテナに要素を位置決めなるので、これは、正常です。デフォルトでは、コンテナはブラウザウィンドウですが、親要素にposition: relativeまたはposition: absoluteが設定されている場合は、その子の座標がのの親として機能します。 top, right, bottom, leftが0(変化を見るためにそれを変更)です:あなたは4つの属性を設定しているため、あなたはそれを削除した場合

border-right: 50px #f5f solid; 
border-bottom: 50px #f5f solid; 

は、輪郭がフルサイズになります:親と

は、あなたは2つの属性を持っています。

+0

はい。しかし、境界線が 'box-sizing:border-box'のために親コンテナ内にあるべきではないでしょうか?したがって、子要素は親の境界線をカバーしますか? – phlipsgeisler

+0

私は間違っていると思います。このコード(https://jsfiddle.net/2mytb43a/)では、この結果(https://jsfiddle.net/2mytb43a/2)が期待されていました。 – phlipsgeisler

1

だけbox-sizing: border-boxが十分ではありません、あなたは親から幅と高さを継承する必要があります。

.inside { 
    position: absolute; 
    outline: #00f solid 2px; 
    width: inherit; 
    height: inherit; 
} 

チェックここhttps://jsfiddle.net/2mytb43a/3/

+0

ありがとうございます。しかし、なぜ「top/left/right/bottom:0」はここで動作しませんでしたか? – phlipsgeisler

+0

幅/高さを設定していないため、幅/高さが継承されていないため、新しいボックスサイズで設定されている親の新しいサイズがわからないことがあります。 – jakob

関連する問題