フォームのデザインで、type=number
のformをカスタマイズするケースがあったので記事に残しておきます。下記記事を参考にして作成しています。
参考 : Customizing Increment Arrows on Input of Type Number Using CSS
Type NumberのFormのカスタマイズ方法
下記サンプルになります。デフォルトの右側にある上下矢印を消し、左右にプラスとマイナスボタンを追加しています。
左右のボタンを押すとフォームの数字が上下します。
HTML
<div class="form-type-number"> <input id="quantity" max="10" min="1" name="quantity" type="number" /> <div class="btn-minus">-</div> <div class="btn-plus">+</div> </div>
SASS
.form-type-number { position: relative; height: 50px; input { appearance: none; /* Initialize the appearance */ position: absolute; top: 0; display: block; width: 100%; height: 50px; padding: 0 50px; text-align: center; background-color: lightblue; border-radius: 4px; border: none; &::-webkit-inner-spin-button { -webkit-appearance: none; /* Clear default arrow */ } &::-webkit-outer-spin-button { -webkit-appearance: none; /* Clear default arrow */ } } .btn-minus, .btn-plus { position: absolute; top: 10px; width: 30px; height: 30px; border: none; background-color: lawngreen; text-align: center; } .btn-minus { left: 10px; } .btn-plus { right: 10px; } }
解説すると、appearance
を設定している箇所が3箇所あります。クロスブラウザを考慮した場合、下記三箇所に設定することをお勧めします。
・inputタグのappearance
・::-webkit-inner-spin-button
の-webkit-appearance
・::-webkit-outer-spin-button
の-webkit-appearance
これで、デフォルト表示の矢印がType Numberのフォームから消えると思います。
カスタマイズ可能なボタンを設置
サンプルでは上下の代わりに、プラスマイナスのボタンを設置しています。
(Sassの.btn-minus
.btn-plus
)
CSS的には、position
を使用して浮かしているだけです。このボタンに、今度はjQueryでフォームの内容を変更する機能を追加します。
type numberのformをコントロールするjQuery
$('.btn-minus').on('click', function(e) { var input = $(e.target).closest('.form-type-number').find('input'); input[0]['stepDown'](); }); $('.btn-plus').on('click', function(e) { var input = $(e.target).closest('.form-type-number').find('input'); input[0]['stepUp'](); });
input[0]['stepDown']();
input[0]['stepUp']();
を使うことで、フォームの中身を変更しています。こんなことができるんですね。ちなみに、inputをconsole.logで確認すると、他にもさまざまな使い方ができそうです。使う機会があればまた紹介したいと思います。
おまけ
一応CSSも。
.form-type-number { position: relative; height: 50px; } input { appearance: none; position: absolute; top: 0; display: block; width: 100%; height: 50px; padding: 0 50px; text-align: center; background-color: lightblue; border-radius: 4px; border: none; } input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button { -webkit-appearance: none; } .btn-plus { position: absolute; top: 10px; width: 30px; height: 30px; border: none; background-color: lawngreen; text-align: center; } .btn-plus { position: absolute; top: 10px; width: 30px; height: 30px; border: none; background-color: lawngreen; text-align: center; }
CSS/SASSのおすすめ書籍
CSSやSCSSは基本がわかればあとはGoogle先生で調べた方が早いと思います。CSSの仕組みやSASSの使い方だけわかれば基本はOKです。
1冊ですべて身につくHTML & CSSとWebデザイン入門講座
htmlの基礎から学べるのでおすすめ
Web制作者のためのSassの教科書
SASSの基本が学べます。