LoginSignup
1
0

More than 5 years have passed since last update.

foundation-rails で select 要素の▼が二重に表示される場合の解決方法

Last updated at Posted at 2017-06-17

現象

foundation-rails で select 要素を定義した際に、特定の環境で▼が二重に表示されます。

double_triangle.png

自分が確認したところ、次の環境で発生しました。

  • Chrome 53.0.2785.135 on Android 7
  • 標準ブラウザ on Android 6/5
  • Windows7 Enterprise
    • IE11
    • Chrome 59.0.3071.104

また、macOS Sierra 10.12.4 での Firefox 54.0 では次の様に微妙な▼が表示されました。

firefox_select.png

ただし、次の環境では発生しませんでした。

  • macOS Sierra 10.12.4
    • Chrome 59.0.3071.86
    • Safari 10.1

解決方法

方法1. autoprefixer-rails の導入

ブラウザのサポート状況によってベンダープレフィックスをよしなに自動挿入してくれる autoprefixer-rails を導入します。

Gemfile に定義を追加します。

gem "autoprefixer-rails"

インストール。

bundle install

最後に Rails を再起動します。

開発初期段階であればこの方法がベターだと思います。ただし、影響範囲が大きく、開発フェーズが後半以降だと他のスタイルへの影響がないか確認する必要があり、難しいかもしれません。

その場合は次の方法2の検討をしてください。

方法2. CSSを手動上書き

次の定義を適当な CSS に追加します。

select{
  -webkit-appearance: none;
  -moz-appearance: none;
}

手軽ですね。影響は select 要素のみに限定されます。

原因

ブラウザの標準スタイル定義とは別に、Foundation が background-image を定義しているためのようです。

次は foundation-rails による select 要素の CSS 定義を Chrome の Developper Tools で確認した画面です。appearance はサポートしていないようで無効化されています。
select_css.png

Issue によると、そもそもこれはバグではなく、Autoprefixer を付けない Sass を使ったバージョン(foundation-rails がこれに該当)に発生する現象との事です。

Foundation のドキュメントにもベンダープレフィックスは Sass に含めていないという内容が記述されています。

We don't include vendor prefixes in our Sass files—instead, we let Autoprefixer handle it for us.
Sass | Foundation for Sites 6 Docs

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0