すごく地味な話ですが、セレクトボックスの矢印をデザイン通りにしようと思ったらデフォルトの矢印では駄目な場合があります。
これは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.
今回追記されたコードはこちらです。
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
を使って非表示にしています。
あとは擬似要素を使ってデザインすればOKですが、ここで注意点が1つ
selectタグに ::before や ::after といった擬似要素は使えません
なので今回はselectタグをdivタグで囲い、それに対して擬似要素を使っています。
セレクトボックスの矢印のデザインを画像に変える
先ほどはCSSで表現できるデザインだったので擬似要素を使いましたが、画像にしたい時もあるかと思います。
そういった場合はこのようになります。
See the Pen
セレクトボックスの矢印を画像に変更 by junpei (@junpei-sugiyama)
on CodePen.
デフォルトのデザインを非表示するのは先ほどと同じです。
そして今回は擬似要素は使わず、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行目を選択不可にする方法
続きを見る
以上になります。