質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

解決済

2回答

17591閲覧

疑似要素を含めて中央寄せできるのか

NDvP2OWLAoccEfQ

総合スコア24

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

0クリップ

投稿2020/04/18 14:15

タイトルのままなのですが、疑似要素を含めた上で中央寄せができるのでしょうか?

after疑似要素で作ったチェックボックスの幅とそれ以下の文章の幅を加味した横幅をもって、画面中央(中央寄せ)に持っていきたいのですが
やはり疑似要素で作らず、ちゃんとしたタグをもってコーディングした方が良いのでしょうか?

コードは以下の通りです。(実装中途&コード汚いですがご了承ください)⇓

html

1 <li class="checkbox-list"> 2 <label><input class="checkbox" type="checkbox"><span><a>プライバシーポリシー</a>に合意する</span></label> 3 </li> 4

scss

1.checkbox-list { 2 text-align: center; 3 label { 4 display: block; 5 width: 100%; 6 input { 7 display: none; 8 } 9 span { 10 font-size: 1.6rem; 11 font-weight: normal; 12 cursor: pointer; 13 display: inline-block; 14 position: relative; 15 &::before { 16 content: ""; 17 position: absolute; 18 top: 50%; 19 left: -40px; 20 display: block; 21 width: 28px; 22 height: 28px; 23 background: #fff; 24 border: 1px solid rgba(0, 0, 0, 0.16); 25 border-radius: 2px; 26 transform: translateY(-50%); 27 } 28 a { 29 color: #000; 30 text-decoration: underline; 31 } 32 } 33 } 34}

ご回答いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

before疑似要素を left: -40px; でspanブロックの外に出しているのが、その分画面中央からずれます。これは left: 0; にして、spanブロックに padding-left: 40px; を付加して疑似チェックボックスと重ならないようにすれば、うまく中央に配置されます。

scss

1.checkbox-list { 2 text-align: center; 3 label { 4 display: block; 5 width: 100%; 6 input { 7 display: none; 8 } 9 span { 10 font-size: 1.6rem; 11 font-weight: normal; 12 cursor: pointer; 13 display: inline-block; 14 position: relative; 15 padding-left: 40px; /*追加*/ 16 &::before { 17 content: ""; 18 position: absolute; 19 top: 50%; 20 left: 0; /*修正*/ 21 display: block; 22 width: 28px; 23 height: 28px; 24 background: #fff; 25 border: 1px solid rgba(0, 0, 0, 0.16); 26 border-radius: 2px; 27 transform: translateY(-50%); 28 } 29 a { 30 color: #000; 31 text-decoration: underline; 32 } 33 } 34 } 35}

蛇足

疑似チェックボックスの配置ですが、現状は position: absolute;transform で位置決めしてますが、flex を使うとシンプルにできます。

scss

1 span { 2 font-size: 1.6rem; 3 font-weight: normal; 4 cursor: pointer; 5 display: inline-flex; /*横並び*/ 6 align-items: center; /*垂直位置中央配置*/ 7 &::before { 8 content: ""; 9 width: 28px; 10 height: 28px; 11 background: #fff; 12 border: 1px solid rgba(0, 0, 0, 0.16); 13 border-radius: 2px; 14 margin-right: 10px; /*a要素との間隔調整*/ 15 }

投稿2020/04/18 14:54

編集2020/04/18 15:49
hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NDvP2OWLAoccEfQ

2020/04/18 15:10

本日は2回目のご回答本当にありがとうございます! position(relative)プロパティはpaddingを基準に取るんでしたね! ありがとうございます。
NDvP2OWLAoccEfQ

2020/04/18 16:23 編集

蛇足までありがとうございます! 時間があればでよろしいのですが チェックマークをつけるにあたって疑似要素afterを使用しているのですが やはりそのときにpositionが必要になってくるのではないのでしょうか? &::after { content: ""; position: absolute; top: 10px; left: 5px; transform: translateY(-50%) rotate(-45deg); width: 1em; height: 0.6em; border-bottom: 3px solid rgba(0, 0, 0, 0.32); border-left: 3px solid rgba(0, 0, 0, 0.32); opacity: 0; transition: all 0.3s ease 0s; }
hatena19

2020/04/19 00:56

チェックマークはボックス(before疑似要素) に重ねる必要がありますので、position: absolute; は必要になりますね。
NDvP2OWLAoccEfQ

2020/04/19 02:32

ですよね!ご回答ありがとうございます。
guest

0

ご協力いただきありがとうございます。 回避策をたくさん探しましたが、今までこの投稿を見つけました。 この記事を知ることができたのも全てmr mineのおかげです。

投稿2023/09/05 03:27

JalonVandervort

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問