すごく地味な話ですが、セレクトボックスの矢印をデザイン通りにしようと思ったら、デフォルトの矢印では駄目な場合があります。
これは、CSSでカスタマイズすることが出来ます(画像にも出来ます)
今回はデフォルトの矢印を非表示にして、デザイン通りの矢印にする2つの方法についてコードとデモで解説していきます。
(有料になっていたらすいません🙇♂️)
CSSでselect(セレクトボックス)の矢印のデザインをカスタマイズする方法
セレクトボックスの矢印のデザインを変更する為には、デフォルトの矢印を非表示にした上で擬似要素や画像を使います。
ただしselectタグには擬似要素が使えないのでdivタグで囲ったり、画像を使うときには擬似要素は使わないなど微妙な違いがあるので、その辺をこれから詳しく解説していきます。
通常のセレクトボックス
まずは、通常のセレクトボックスの矢印を見てみます(コードを見るには左上のHTML、CSSをクリックして下さい)。
See the Pen
セレクトボックスの矢印のデザイン(デフォルト) by junpei (@junpei-sugiyama)
on CodePen.
右に下向きの矢印がありますね。
今回は、これをデザイン通りに出来るようにしたいと思います。
セレクトボックスの矢印のデザインを擬似要素を使って変える方法
次は矢印のデザインを変えたやつを見てみましょう。
See the Pen
セレクトボックスの矢印のデザイン変更 by junpei (@junpei-sugiyama)
on CodePen.
CSSのコード
追記した分だけですが、CSSの書き方はこちら。
select {
-webkit-appearance: none;
appearance: none; /* デフォルトの矢印を非表示 */
}
select::-ms-expand {
display: none; /* デフォルトの矢印を非表示(IE用) */
}
/* セレクトボックスの矢印デザイン変更 */
.container::before {
border-bottom: 4.5px solid red;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
content: "";
position: absolute;
right: 9px;
top: 10px;
width: 0;
}
.container::after {
border-left: 4px solid transparent;
border-right: 4px solid transparent;
border-top: 4.5px solid red;
content: "";
position: absolute;
right: 9px;
top: 21px;
width: 0;
}
ポイントとなるのは、最初の2つです。
select {
-webkit-appearance: none;
appearance: none; /* デフォルトの矢印を無効 */
}
select::-ms-expand {
display: none; /* デフォルトの矢印を無効(IE用) */
}
このコードで、デフォルトの矢印を非表示にしています。
また、IEではappearance
が使えない為、-ms-expand
を使って非表示にしています。
2022年6月16日にIEはサポート終了しているので、今は不要です。
あとは、擬似要素を使ってデザインすればOKですが、ここで注意点が1つあります。
それは、selectタグに ::before や ::after といった擬似要素は使えません
なので、今回はselectタグをdivタグで囲い、それに対して擬似要素を使っています。
セレクトボックスの矢印のデザインを画像に変える方法
先ほどはCSSで表現できるデザインだったので擬似要素を使いましたが、画像にしたい時もあるかと思います。
そういった場合はこのようになります。
See the Pen
セレクトボックスの矢印を画像に変更 by junpei (@junpei-sugiyama)
on CodePen.
デフォルトのデザインを非表示するのは先ほどと同じです。
CSSのコード
そして今回は擬似要素は使わず、background-image
を使います。
select {
background-image: url(画像のパス);
background-position: right 10px center;
background-repeat: no-repeat;
background-size: 13px 13px;
}
background-position
で画像の位置、background-size
で画像のサイズを調整します。
まとめ
今回は、セレクトボックスの矢印のデザインをカスタマイズする方法を解説しました。
ちなみに、画像はicooon-monoというサイトからダウンロードしました。
このicooon-monoの使い方については以下の記事を参照下さい。
【商用利用可】フリーアイコン素材サイト『icooon-mono』の使い方【色変更なども解説】
続きを見る
また、1行目を選択不可にさせる方法は以下の記事を参照下さい。
【HTML】セレクトボックスで1行目を選択不可にする方法
続きを見る
以上になります。