CSSで×のアイコンを作り、それをボックスの上下左右の中央に配置したいと考えています。
そこで次のようなHTML・CSSを作りましたが、うまくいきません。
HTML <div class="cross-icon"> <div class="cross-line"></div> </div>
CSS .cross-icon { background-color: skyblue; width: 100px; height: 100px; } .cross-line { position: relative; } .cross-line::before, .cross-line::after { position: absolute; top: 45px; left: 50%; -webkit-transform: translateX(-50%); transform: translateX(-50%); height: 3px; width: 25px; background: #555; content: ""; } .cross-line::before { -webkit-transform: rotate(45deg); transform: rotate(45deg); } .cross-line::after { -webkit-transform: rotate(-45deg); transform: rotate(-45deg); }
うまくいかないのは、×アイコンがきちんと上下左右の中央に表示されない点です。
私が作成したコードでは.cross-line::beforeと.cross-line::afterの左右の中央ぞろえは
left: 50%;
transform: translateX(-50%);
と指定しているのに、少し右にずれます。
また.cross-line::beforeと.cross-line::afterの上下の中央ぞろえは、本当は
top: 50%;
transform: translateY(-50%);
と指定したかったのですが、なぜか%での指定が効かず、やむなく
top: 45px;
と指定しています。
そこで質問ですが、×のアイコンを中央ぞろえにするにはどうすればいいのでしょうか?
今回のアイコンが完成すれば、今後もこのコードを使いまわすことを考えています。
線の長さや太さ等は、作成するサイトごとに異なるため、数値入力は手動で行わなければなりませんが、
「中央にそろえる」という点に関しては、手動ではなく自動で行える設定にしたいのです。
そこで今回はpositionのtop、leftをあらかじめ50%に設定することで中央ぞろえの自動化を目指しました。
ですが、自動で中央ぞろえができるのであればpositionでなくてもかまいません。
ご教授、よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/08 05:17
2020/07/08 10:30
2020/07/09 12:25 編集