境界にz-indexを追加する方法を探していましたが、z-indexが見つからないので、ここで質問します。
親divを持つdivがあるとします。親に境界線があり、その境界線を子divに重ねたいが、親にそれを重ねたくない。
ボーダーでそれを行うことはできません。
興味深いことに、あなたはcanoutline
* {
box-sizing: border-box;
}
.parent {
width: 200px;
height: 200px;
margin: 25px auto;
position: relative;
background: #bada55;
border:12px solid #663399;
outline: 12px solid red;
padding:25px
}
.child {
width: 220px;
height: 100px;
background: lightblue;
}
<div class="parent">
<div class="child"></div>
</div>
その他のオプション
疑似要素の使用
1。ボーダー付きの疑似要素
Nudgeを所定の位置に変換するためにいくつかの追加の変換が必要です。
* {
box-sizing: border-box;
}
.parent {
width: 200px;
height: 200px;
margin: 25px auto;
position: relative;
background: #bada55;
padding: 25px;
}
.child {
width: 220px;
height: 100px;
background: lightblue;
}
.absolute::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 100%;
height: 100%;
border: 12px solid red;
}
<div class="parent absolute">
<div class="child"></div>
</div>
2。 box-shadowを使用した疑似要素
* {
box-sizing: border-box;
}
.parent {
width: 200px;
height: 200px;
margin: 25px auto;
position: relative;
background: #bada55;
padding: 25px;
}
.child {
width: 220px;
height: 100px;
background: lightblue;
}
.shadow::after {
content: '';
position: absolute;
top: 0%;
left: 0%;
width: 100%;
height: 100%;
box-shadow: 0 0 0 12px red;
}
<div class="parent shadow">
<div class="child"></div>
</div>
::before
pointer-events: none;
を使用します( spec を参照)コードの重要な部分:
.parent {
position: relative;
...
}
.parent::before {
pointer-events: none;
position: absolute;
border: 1px solid #000;
...
}
必須「ソリューションAでこれを解決したいと思います。ソリューションAは悪いです。代わりにソリューションBを使用します。」
要するに、私はお勧めします:
疑似要素:
A. .my-div searched-element:nth-of-type(1)
(つまり、searched-element
はp
またはh1
またはdiv
になります)
B. :first-child
C. :first-of-type
D. :last-child
margin-top: -10px
子が上に移動するように
そして、私がお勧めする実際のソリューションは、:first-child
疑似クラスのバリアントで子の負の上部マージンを使用しています。
具体的には、実際には、すべての子divでボーダーをborder-top
からborder-bottom
に切り替えてから、そのスコープ内で:last-child
を使用する方が簡単であることがわかりました。