属性名 | appearance |
---|---|
値 | none | auto | base | <compat-auto> | <compat-special> | base-select |
値の詳細 | <compat-auto> = searchfield | textarea | checkbox | radio | menulist | listbox | meter | progress-bar | button <compat-special> = textfield | menulist-button |
初期値 | none |
適用可能要素 | 全要素 |
継承 | 継承しない |
サポート | https://caniuse.com/?search=appearance |
フォーム部品(ウィジェット)等に対してブラウザのデフォルトのデザインを変更します。
チェックボックスのデザインを appearance: none で無効化し、好みのデザインを適用します。
.my-example-1 { input[type="checkbox"] { appearance: none; outline: 1px solid #999; width: 12px; height: 12px; line-height: 12px; text-align: center; vertical-align: top; &:checked::before { content: "✔"; } } }
<div> <input id="cb1" type="checkbox"> <label for="cb1">標準のチェックボックス</label> </div> <div class="my-example-1"> <input id="cb2" type="checkbox"> <label for="cb2">見栄えをカスタマイズしたチェックボックス</label> </div>
セレクトボタンのデザインを appearance: none で無効化し、標準の選択矢印が表示されないようにし、独自デザインの矢印を表示しています。
.my-example-2 { select { margin-bottom: .3rem; width: 20rem; height: 2rem; padding: .2rem; } .my-select { position: relative; select { appearance: none; } .arrow { position: absolute; top: 7px;; left: 300px; } } }
<div class="my-example-2"> <div> <select> <option>通常のセレクトボックス</option> <option>...</option> </select> </div> <div class="my-select"> <select> <option>カスタマイズしたセレクトボックス</option> <option>...</option> </select> <span class="arrow">⇩</span> </div> </div>
Chrome 134 からは appearance
および ::picker(select)
に base-select
を指定することで、セレクトボックスに画像やリンクや様々なスタイルを埋め込めるようになりました。
.my-example-3 { select, ::picker(select) { appearance: base-select; } option { img { width: 24px; height: 24px; } } }
<div class="my-example-3"> <select> <option><img src="img/japan.png" alt=""> 日本</option> <option><img src="img/america.png" alt=""> 米国</option> <option><img src="img/germany.png" alt=""> ドイツ</option> </select> </div>
下記の様に <button>
と <selectedcontent>
を記述することで、選択されたテキストに対するスタイルを指定することもできます。下記の例では <option>
に表示する際は注釈を表示し、選択された時点で注釈を非表示にしています。
.my-example-4 { select, ::picker(select) { appearance: base-select; } option { display: flex; flex-direction: column; align-items: flex-start; .description { font-size: 80%; color: #888; } } selectedcontent { .description { display: none; } } }
<div class="my-example-4"> <select> <button> <selectedcontent></selectedcontent> </button> <option> <div class="title">選択肢A</div> <div class="description">選択肢Aでは...</div> </option> <option> <div class="title">選択肢B</div> <div class="description">選択肢Bでは...</div> </option> </select> </div>