selectがそろえにくい理由
selectの本体はOSやブラウザが描画するネイティブUIに近い部品です。特に開いたときの選択肢リスト部分はCSSの自由度が低く、フォントや背景色の指定が一部しか効きません。これが環境差の根本原因です。
閉じている状態のボックス本体(高さ、枠線、背景)はある程度CSSで整えられますが、デフォルトの下向き矢印はブラウザごとに形も位置も異なります。完全な統一は難しいと割り切る視点が必要です。
矢印と本体をリセットして作り直す
標準の矢印を消すにはappearance:none;と-webkit-appearance:none;を指定します。すると矢印が消えるので、背景画像や擬似要素で自前の矢印を重ねて配置し直すのが定番の手法です。
矢印を自作するときは、右側にpadding-rightで余白を確保し、その領域に矢印を置きます。これで本体の見た目はブラウザ間でかなり近づけられます。
症状別チェック表
セレクトボックス(プルダウン)の見た目が環境で違うは、症状を分けずに直そうとすると原因探しが長引きます。まず「自分だけで起きるのか」「全員で起きるのか」「特定ブラウザだけか」「差し替え後だけか」を切り分けます。
確認順序を固定すると、相対パス、ファイル名、キャッシュ、認証、外部読み込みのどこで止まっているかが見えます。修正後はローカル確認だけで終わらせず、実際の共有URLで再表示して、相手と同じ条件で直ったことを確認します。
- 自分だけ表示されない: キャッシュ、ログイン状態、ブラウザ拡張、端末幅を確認する
- 全員で表示されない: ファイル構成、相対パス、大文字小文字、アップロード漏れを見る
- 一部だけ崩れる: CSS/画像/JSごとに読み込みエラーを分ける
- 差し替え後だけ古い: URL、キャッシュ、更新対象ファイルの取り違えを確認する
開いた選択肢リストは揃えきれない
ボックスを開いたときに出る選択肢のリストは、多くのブラウザでOSのネイティブ描画に委ねられます。option要素へのCSSは効く範囲が狭く、フォントや行間まで完全に揃えるのは現実的ではありません。
デザインの自由度を最優先したい場合は、selectをやめてdivとリストで独自に作るカスタムドロップダウンという選択肢もあります。ただしキーボード操作やアクセシビリティの実装コストが増えるため、要件に応じて判断してください。
見た目を近づける手順
ネイティブselectのまま整えるなら、本体に絞って作業するのが効率的です。次の順で進めます。
- appearance:none;と-webkit-appearance:none;で標準矢印を消す
- 本体にborder・border-radius・height・paddingを指定する
- padding-rightで矢印用の余白を確保する
- 背景画像か擬似要素で自前の矢印を配置する
- 複数のブラウザで本体の見え方を見比べる
ブラウザ間の差はレビューで共有して判断
どこまで揃えるかはチームで合意すべき論点です。手元の1ブラウザだけで判断すると、別環境で崩れていることに気づけません。複数環境のスクリーンショットを並べ、許容範囲をすり合わせるのが現実的です。
ギガサイト便を使えば、検証用ページをドロップして発行した〇〇.giga-site.comのURLを各メンバーが自分のブラウザで開き、それぞれの見え方を確認できます。アクセスログで誰がいつ見たかも追えるため、レビューの抜け漏れを減らせます。社外に出したくない検証なら認証を併用しましょう。
よくある質問
selectの矢印を自由な形に変えられますか
標準矢印はappearance:none;で消せます。その後、背景画像や擬似要素で好きな矢印を自前で重ねれば、本体側はかなり自由に作り込めます。
開いたときのリストのフォントや背景を揃えられますか
option部分はOSのネイティブ描画に依存し、CSSの効く範囲が狭いため完全な統一は困難です。厳密に揃えたい場合はdivベースのカスタムドロップダウンを検討します。
カスタムドロップダウンを自作するデメリットは何ですか
キーボード操作やスクリーンリーダー対応など、ネイティブselectが標準で持つ機能を自分で実装する必要があり、コストとバグのリスクが増えます。
環境ごとの見え方を効率よく比較する方法はありますか
確認用URLを発行して各メンバーが自分のブラウザで開けば、それぞれの実環境での見え方を集めて比較できます。誰が見たかをログで追える仕組みがあると確認漏れを防げます。
原因が分からないときはどこから確認すべきですか?
まず自分だけの問題か全員の問題かを分けます。次にシークレットウィンドウ、別ブラウザ、スマホで確認し、ファイル構成・相対パス・キャッシュ・認証設定を順に見ます。