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

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

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

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

HTML5

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

Q&A

解決済

1回答

980閲覧

横幅を同じ%にしているのに表示が異なる

NDvP2OWLAoccEfQ

総合スコア24

CSS3

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

HTML5

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

0グッド

0クリップ

投稿2020/04/18 17:26

widthを68%でinputとselectの両方にあてているのですが
表示してみるとselectの方がinputと比べて、横幅が短く表示されます。
%は親要素の幅で決まるのであれば、両方ともliタグで差異が出ないはずなのですが、、
ディベロッパーツールでもwidth: 68%と両方に指定されています

原因が分かりません。
コードは以下の通りです。⇓

html

1 <!-- contact --> 2 <div class="outer" id="contact"> 3 <h1 class="title">Contact</h1> 4 <form action="post"> 5 <ul class="contact-ul"> 6 <li> 7 <label class="required" for="your-name">お名前</label> 8 <input class="name" id="your-name" type="text" name="name" placeholder="山田太郎"> 9 </li> 10 <li> 11 <label class="required" for="e-mail">メールアドレス</label> 12 <input class="name" id="e-mail" type="email" name="name" placeholder="text@example.com"> 13 </li> 14 <li> 15 <label>お問い合わせ種別</label> 16 <select name="select"> 17 <option value="none">ーーー</option> 18 <option value="phone">お電話</option> 19 <option value="e-mail">メール</option> 20 </select> 21 </li> 22  ・・・ 23</div>

scss

1// input 2.name { 3 appearance: none; 4 background-color: transparent; 5 background-image: none; 6 border-radius: 0; 7 border: 1px solid rgba(0, 0, 0, 0.16); 8 color: inherit; 9 font-family: inherit; 10 font-size: 1em; 11 &:focus { 12 border: 1px solid rgba(0, 0, 0, 0.32); 13 box-shadow: none; 14 outline: none; 15 } 16} 17 18// select 19select { 20 -webkit-appearance: none; 21 background: transparent url(https://haniwaman.com/wp-content/uploads/2018/12/form-css-arrow.png) no-repeat center 22 right 8px/16px 16px; 23 border: 1px solid rgba(0, 0, 0, 0.16); 24 border-radius: 0; 25 cursor: pointer; 26 font-family: inherit; 27 color: #dcdcdc; 28 font-size: 1em; 29 padding: 13px 8px; 30 &:focus { 31 border: 1px solid rgba(0, 0, 0, 0.32); 32 box-shadow: none; 33 outline: none; 34 } 35} 36 37input, 38select, 39textarea { 40 width: 68%; //ここです。 41 padding: 13px 8px; 42 resize: none; 43 &::placeholder { 44 color: #dcdcdc; 45 } 46} 47

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

こちらでいかがでしょうか?

CSS

1label { 2 display: inline-flex; 3 width: calc(100% - 68% - 0.5em); /* 10pxは余白、好きなように設定してください */ 4} 5input, 6select, 7textarea { 8 display: inline-flex; 9 width: 68%; 10 box-sizing: border-box; 11}
<li>か<li>の子要素に<div>を追加し、`display: flex;`を指定をするのもありだと思います。

追記:

表示してみるとselectの方がinputと比べて、横幅が短く表示されます。

box-sizing: border-box;により、サイズのズレはなくなりました。
paddingの指定をwidthに含めるかどうか、という設定なのですが、
おそらくselectとinputとでこの設定に差異があったのだと思います。

投稿2020/04/18 21:33

編集2020/04/19 06:16
new1ro

総合スコア4528

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

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

NDvP2OWLAoccEfQ

2020/04/19 03:08

ご回答ありがとうございます! これはflex-inlineのコンテナを二つ作って そのコンテナに幅を指定しているのですか? すみません、理解力がなくて、、
new1ro

2020/04/19 04:20 編集

> これはflex-inlineのコンテナを二つ作って 何か箱を作って、その中にlabelやinputなどを含めているわけではなく、 labelやinput自体に「display: inline-flex;」を指定しています。 「display: inline-block;」でも構いません。 横並びにするかつ、ブロック要素的にも扱いたいときは 「display: inline-flex;」「display: inline-block;」をよく使うので指定しました。 ------------------------------------------------------------ > そのコンテナに幅を指定しているのですか? 幅を指定しているのは、そのとおりです。 width: calc(100% - 68% - 0.5em); がややこしいと思うのですが、 width: calc(32% - 0.5em); でも構いません。
new1ro

2020/04/19 06:16

> 表示してみるとselectの方がinputと比べて、横幅が短く表示されます。 こちらについて、回答に追記いたしましたので、あわせてご確認ください。
NDvP2OWLAoccEfQ

2020/04/19 07:25

詳細な説明、本当にありがとうございます。 おかげで完璧に理解しました! inputがcontent-boxになってたんですね! flex-inlineの方も理解しました。
new1ro

2020/04/19 07:26

解決できたようで、よかったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問