2017-10-28 15 views
0

なぜ選択要素の幅が入力要素の幅よりも短いのか分かりません。両方を100%に設定していますが、入力何らかの理由でグリッド境界をオーバーレイします。入力要素の幅が選択要素の幅よりも短い

HTML:

<div class="gridView"> 
    <input type="text" placeholder="Name" /> 
    <input type="text" placeholder="Last Name" /> 
    <select></select> 
    <input type="text" placeholder="Birth Date" /> 
    <select> </select> 
    <select> </select> 
    <input type="text" placeholder="Passport Number" /> 
    <span> 
    <input placeholder="Passport Expiry Date"/> 
    <span class="dateFormat">YYYY-MM-DD</span> 
    </span> 
</div> 

CSS:

input { 
    width: 100%; 
    padding: 6px; 
    height: 25px; 
} 
select { 
    height: 41px; 
    width:100%; 
} 
.gridView { 
    display: grid; 
    grid-template-columns: 1fr 1fr; 
    grid-column-gap: 25px; 
    grid-row-gap: 10px; 
    font-family: sans-serif; 
    margin: auto; 
    width: 50%; 
} 
.dateFormat { 
    color: red; 
    font-size: small; 
    display: block; 
    margin-left: 15px; 
    margin-bottom: 5px; 
    font-weight: bold; 
} 

JSFIDDLE
https://jsfiddle.net/AlexLavriv/oxmq71sn/1/

+0

あなたのフィドルはここのソースと同じではありません。 'select'幅は設定しません。 –

+0

追加:* {余白:0;パディング:0;ボックスサイズ:border-box} – VXp

答えて

1

あなたがのために追加のパディングを適用していますinputであるが、selectではそうではない。等しい幅にそれらを取得するには、サイズの計算方法を更新する必要があります。ここでは

input, select { 
    width: 100%; 
    box-sizing: border-box; 
} 
-2

.registerForm { 
 
    font-family: sans-serif; 
 
    margin: auto; 
 
    width: 50%; 
 
} 
 
input { 
 
    width: 100%; 
 
    padding: 6px; 
 
    height: 25px; 
 
} 
 

 
    
 

 
select { 
 
    height: 41px; 
 
    width: 110%; 
 
} 
 
.gridView { 
 
    display: grid; 
 
    grid-template-columns: 1fr 1fr; 
 
    grid-column-gap: 25px; 
 
    grid-row-gap: 10px; 
 
} 
 
.dateFormat { 
 
    color: red; 
 
    font-size: small; 
 
    display: block; 
 
    margin-left: 15px; 
 
    margin-bottom: 5px; 
 
    font-weight: bold; 
 
}
<div class="registerForm"> 
 
    <div class="gridView"> 
 
     <input type="text" placeholder="Name" /> 
 
     <input type="text" placeholder="Last Name" /> 
 
     <select></select> 
 
     <input type="text" placeholder="Birth Date" /> 
 
     <select> </select> 
 
     <select> </select> 
 
     <input type="text" placeholder="Passport Number" /> 
 
     <span> 
 
     <input placeholder="Passport Expiry Date"/> 
 
     <span class="dateFormat">YYYY-MM-DD</span> 
 
     </span> 
 
    </div> 
 
</div>

Fiddleを解決している実際に選択の幅は、その入力いとこに10%低いデフォルトであります.. あなたの場合a

style = "width:110%;

はギャップ

<div class="registerForm"> 
    <div class="gridView"> 
     <input type="text" placeholder="Name" /> 
     <input type="text" placeholder="Last Name" /> 
     <select style="width:110%;"></select> 
     <input type="text" placeholder="Birth Date" /> 
     <select style="width:110%;"> </select> 
     <select style="width:110%;"> </select> 
     <input type="text" placeholder="Passport Number" /> 
     <span> 
     <input placeholder="Passport Expiry Date"/> 
     <span class="dateFormat">YYYY-MM-DD</span> 
     </span> 
    </div> 
</div> 
+0

このステートメントのソースはありますか? –

+0

あなたの提案は間違っている理由が異なるので、スタイルの更新があなたの解決策を破るでしょう – Flying

+0

@NAVINROYあなたの失礼な言葉にもかかわらず、あなたはあなたの仮定に間違っています。 12pxの差は10%とどのように計算されましたか?コンテナの幅が広い/狭い場合はどうなりますか? – Flying

0

を埋めるいっぱいになったあなたは、パディングトップとパディング下にパディング変更してみてください。あなたはあなたの入力を大きくする入力の周りに6 pxを置いています。シフトを止めるために、パディングを左右からずらします。本質的には、入力を100%+ 6px + 6pxにすると、結果は選択の100%よりも大きくなります。

input { 
width: 100%; 
padding-top: 6px; 
padding-bottom: 6px; 
height: 25px; 
} 
+0

です。埋め込みは必要な視覚的外観の一部とすることができます。問題の原因は、ボックスサイズによる不適切なサイズ計算です – Flying

+0

パディングiveが答えに追加されたためにサイズ計算がオフになりました – Jonny

+0

入力から水平パディングを削除しましたが、わかりませんもしそれが留まるべきかどうか。したがって、あなたのソリューションは特定のシナリオに限られています。 – Flying