罫線が表示され、強調表示されるように、指定された一般的なHTML要素の罫線に印を付けようとしています(そのCSSは自分の制御下にありません)ホバーオン。擬似要素の余白を無視する前または後:
私は現在、擬似要素を使用しています。これを達成するためにbeforeと:afterを使用していますが、余白に苦労しています。 JSではなく、CSSを使用する必要があります。
任意の2つの要素間に1行しかないのが目的ですが、余白があるため、段落「一部のコンテンツ」と「World」という見出しの間に罫線が重複して表示されます。
以下のスニペットに示すように、マーカークラスをラップdivに適用することも、クラス要素に直接適用することもできます。両方ともOKです。
.mark-borders:before,
.mark-borders:after
{
content: '';
position: absolute;
left: 0;
right: 0;
display: block;
height: 1px;
border-bottom: dashed 1px #ccc;
}
.mark-borders:hover:before,
.mark-borders:hover:after
{
border-bottom: solid 1px red;
z-index: 1;
}
<div class="mark-borders">
<h1>
Hello
</h1>
</div>
<div class="mark-borders">
<p>
Some content
</p>
</div>
<div class="mark-borders">
<h1>
World
</h1>
</div>
<br />
<hr />
<div class="mark-borders">
<h1>
Hello
</h1>
</div>
<p class="mark-borders">
Some content
</p>
<h1 class="mark-borders">
World
</h1>
境界線を配置するJSを使用せずにホバーハイライト効果を維持しながら、単一の1の間の境界を「マージ」する方法をいくつか方法はありますか?
私はすべての後に:と:最初の要素だけの前に、しかしその場合、上の境界のホバー効果を失っているか、間違った場所に表示されています元のボーダー)。
UPDATE:
私は、次の概念と一緒にほとんど作業溶液を入れることができました。また、国境前
- 各要素は、そのを表示その:境界の後ろ
- ホバーはアクティブになります:現在の要素とボーダーの境界の前その次の兄弟
でも...オリジナルよりもうまく動作していても、「マージン」の領域は応答していません。ホバー、どのように修正できたのでしょうか?
更新コード:
.mark-borders:before,
.mark-borders:last-child:after
{
content: '';
position: absolute;
left: 0;
right: 0;
display: block;
height: 1px;
border-bottom: dashed 1px #ccc;
}
.mark-borders:hover:before,
.mark-borders:hover:last-child:after,
.mark-borders:hover + *:before
{
border-bottom: solid 1px red;
z-index: 1;
}
<div>
<div class="mark-borders">
<h1>
Hello
</h1>
</div>
<div class="mark-borders">
<p>
Some content
</p>
</div>
<div class="mark-borders">
<h1>
World
</h1>
</div>
</div>
に
:after
境界線を与えます。右? – claudiosはい、各divの間に1つの境界線が表示され、最初と最後の間に境界線が表示されますが、境界線の前後に境界線が強調表示される必要があります。私はちょうど半分の解決策を考え出すことができたばかりです。 –
ああ。わかった。この '.mark-borders {overflow:hidden}'を入れ、それに応じて前後の位置を変更してください。 –