CSSグリッドレイアウトを試していて、現在問題が発生しています。グリッドに配置されたdivの子にposition: absolute
を使用したいと思います。下記(コードスニペット)に示すように、赤いボックスはposition: absolute
で設定され、子は.left
です。グリッドに配置されたdiv内の絶対配置
赤いボックスは視覚的にオレンジ色のdiv(左側)に残り、茶色のdiv(右側)では「オーバーフロー」しないようにするにはどうすればよいですか?
私は結果なしでposition: relative
を親要素に設定しようとしました。以下は
次が問題のGIFです
html,
body,
section {
height: 100%;
margin: 0px;
padding: 0px;
}
.window {
display: grid;
grid-template-areas: "first seperator last";
grid-template-columns: 100px 10px auto;
/* | this one */
}
.left {
background: #ff9e2c;
grid-area: first;
position: relative;
}
.right {
background: #b6701e;
grid-area: last;
}
.separator {
background: white;
}
.abs-pos {
width: 100px;
height: 100px;
background-color: red;
position: absolute;
top: 100px;
left: 75px;
}
<section class="window">
<div class="left">
<div class="abs-pos"></div>
</div>
<div class="separator"></div>
<div class="right"></div>
</section>
(あなたは、セパレータの動きを見るために値を変更することができます)問題を示す簡略版である: PS:実際のファイルでは、
.separator
divを水平に動かして2つのdiv
のサイズを変更できるJSスクリプトがあります。.left
と.right
です。基本的にプロパティgrid-template-columns: 100px 10px auto
を.window
に変更し、グリッドのサイズを変更します。
ありがとうございました!私が 'position:relative'を持っていないと' overflow:hidden'がうまくいかない理由が分かりますか? – Ivan
私は100%確信していませんが、 'position:absolute'が' .left'コンテナよりも高いレベルに流れてしまうからです。したがって、絶対値で左のコンテナは 'position:relative'ではないので、'
'に基づいて位置付けられ、隠されません。 – Don本質的に 'position:relative'は、' .left'ペインに赤いボックスに "私に基づく位置、それより高いものはありません"と言うようにします。その要素に基づいて配置されたものだけが隠されます。 – Don