下記のコードはcssの擬似要素を用いて「+」を表現している様なのですが、
::beforeと::afterで位置が違うのに、何故同じ位置で表示できているのでしょうか?
position: absolute;で位置を動かしているのは理解できます。
しかし、::beforeは指定した要素の直前で、::afterは指定した要素の直後なはずですが、cssの指定の仕方が、
.aa::after,
.aa::before {}
としているので、両方同時に同じ分だけの距離動かしている、と私は理解してしまいます。
その場合だと、どうしても.aa::afterの位置と.aa::beforeの位置がずれてしまうのではないか?と思います。
それなのに、何故同じ場所に表示できているのでしょうか?
css詳しい方おりましたら、解説をいただきたいです。
よろしくお願いいたします。
下記、プレビュー画像になります。
html
1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="utf-8"> 5 <title>テスト</title> 6 <link rel="stylesheet" type="text/css" href="main.css"> 7 </head> 8 <body> 9 <div class="aaa"> 10 <p class="aa">テスト</p> 11 </div> 12 </body> 13</html>
css
1.aaa { 2 position: relative; 3} 4 5.aa::after, 6.aa::before 7{ 8 content: ""; 9 position: absolute; 10 top: 0; 11 bottom: 0; 12 right: 15px; 13 margin: auto; 14 height: 2px; 15 width: 12px; 16 background-color: #000; 17 transition: all .1s ease-out; 18} 19 20.aa::after { 21 transform: rotate(90deg); 22} 23
回答2件
あなたの回答
tips
プレビュー