[解決済み] Firefoxでselect要素から矢印を削除する方法
質問
をスタイル化しようとしています。
select
要素をCSS3を使って作成しました。WebKit (Chrome / Safari) では望む結果が得られますが、Firefox ではうまくいきません (IE にも迷惑をかけません)。私はCSS3の
appearance
プロパティを使用していますが、なぜかFirefoxからドロップダウンのアイコンを振り払うことができません。
以下はその例です。 http://jsbin.com/aniyu4/2/edit
#dropdown {
-moz-appearance: none;
-webkit-appearance: none;
appearance: none;
background: transparent url('example.png') no-repeat right center;
padding: 2px 30px 2px 2px;
border: none;
}
見てわかるように、私は何も派手なことをしようとしているわけではない。ただ、デフォルトのスタイルを削除して、独自のドロップダウン矢印を追加したいだけなのです。言ったように、WebKit では素晴らしいが、Firefox ではそうではない。どうやら
-moz-appearance: none
は、ドロップダウン項目を取り除かない。
何か思い当たることはありますか?いいえ、JavaScriptはオプションではありません
解決方法を教えてください。
さて、この質問が古いことは分かっていますが、2年経ってもモジラは何もしてくれません。
簡単な回避策を思いつきました。
これは基本的に、Firefox のセレクト ボックスからすべての書式を削除し、セレクト ボックスをカスタム スタイルで囲むものですが、Firefox にのみ適用できます。
これがセレクトメニューだとします。
<select class='css-select'>
<option value='1'> First option </option>
<option value='2'> Second option </option>
</select>
そして、cssクラス'css-select'を仮定してみましょう。
.css-select {
background-image: url('images/select_arrow.gif');
background-repeat: no-repeat;
background-position: right center;
padding-right: 20px;
}
Firefox では、選択メニューが表示され、次に醜い Firefox の選択矢印が表示され、次にあなたの素敵なカスタム外観の矢印が表示されることになります。理想的ではありません。
Firefoxでこれを実現するには、クラス 'css-select-moz' で span 要素を囲んで追加します。
<span class='css-select-moz'>
<select class='css-select'>
<option value='1'> First option </option>
<option value='2'> Second option </option>
</select>
</span>
次に、モジラの汚い矢印を隠すCSSを -moz-appearance:window で修正し、カスタム矢印をスパンのクラス 'css-select-moz' に放り込んで、でもモジラにだけ表示させるようにします、こんな感じです。
.css-select {
-moz-appearance:window;
background-image: url('images/select_arrow.gif');
background-repeat: no-repeat;
background-position: right center;
padding-right: 20px;
}
@-moz-document url-prefix() {
.css-select-moz{
background-image: url('images/select_arrow.gif');
background-repeat: no-repeat;
background-position: right center;
padding-right: 20px;
}
}
3時間前にこのバグに遭遇しただけなのに、かなりクールです(私はウェブデザインの初心者で、完全に独学です)。しかし、このコミュニティは間接的に私に多くの助けを与えてくれたので、そろそろ何かお返しをする時だと思いました。
firefox(mac)のバージョン18、そして22(アップデート後)でしかテストしていません。
すべてのフィードバックを歓迎します。
関連
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み] textareaのresizableプロパティを無効にするにはどうしたらよいですか?
-
[解決済み] 要素を水平方向にセンタリングする方法
-
[解決済み] ページを再読み込みせずにURLを変更するにはどうすればよいですか?
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] セレクトボックスのプレースホルダーを作成するにはどうすればよいですか?
-
[解決済み] How can I set the default value for an HTML <select> element?
-
[解決済み] Firefox または Chrome ブラウザから HTTP POST リクエストを手動で送信する方法
-
[解決済み] inline/inline-block要素間のスペースを削除するにはどうすればよいですか?
-
[解決済み] Do I use <img>, <object>, or <embed> for SVG files?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
iframeフレームワークの使用
-
[解決済み] HTMLとCSSによるテーブルスクロール [重複]について
-
[解決済み] <meta charset="utf-8"> vs <meta http-equiv="Content-Type">.
-
[解決済み] How do I style a <select> dropdown with only CSS?
-
[解決済み] CSSだけでリンクを無効化する方法
-
[解決済み] ラジオボタンをデフォルトで選択するには?[重複しています]
-
[解決済み] 入力フィールドに :before や :after 疑似要素を使用できますか?
-
[解決済み] 検索エンジンはAngularJSアプリケーションをどのように扱っているのか?
-
[解決済み] localStorage、sessionStorage、session、cookieの違いは何ですか?
-
[解決済み] ドロップダウンリスト(select要素)からデフォルトの矢印アイコンを削除する方法は?