JavaやHTML,CSS,JSを扱ってきましたが、現在Ruby,Railsにチャレンジしています。
RailsのCSSの読み込まれ方を勉強しており、 *= require_tree .
を理解したいです。
現在application.cssは以下のようになっています。
css
1 *= require_self 2 *= require scaffolds.css 3 *= require questions.css 4 *= require_tree .
調べたところ、私の現在の認識は以下です。
・「= require_self」はapplication.css自体を読み込む
・「= require_tree .」はapp/assets/stylesheets以下の全CSSファイルを読み込む。読み込む順番は辞書順のため、hoge.cssよりもscaffold.cssは後に読まれる。
それであれば、上から順に
・application.css
・scaffolds.css
・questions.css
・application.css
・questions.css
・scaffolds.css
と読み込まれ、一番下の「scaffolds.css」が最優先されるイメージです。
しかし実際は、「questions.css」が最優先されています。
なぜなのでしょうか?
お手数ですが、もしその理由がわかる方がいれば教えていただけますと幸いです。
追記
[Rails] application.scssのrequire_tree .に関して
この記事の
require_treeには引数として与えられたディレクトリ以下のCSSファイルをアルファベット順に全て読み込むという意味があります。require_treeの引数には.(ドット)が渡されています。引数.(ドット)はカレントディレクトリを表します。つまり、この記述によってapp/assets/stylesheetsというディレクトリにあるCSSファイルやSCSSファイルは全て読み込まれることになります。
の説明でドットの意味や引数を渡していることは理解しました。だから結果的にstylesheetフォルダ以下の全ファイル。だけど優先順位に関しては理解しきれていません。
そもそもややこしいし、順番も制御したいし、最後にrequire_treeしている意味もわからないので、
実用的には以下でもいいのかもしれません。
*= require_self *= require scaffolds.css *= require questions.css
しかし、優先順位の謎は解きたいです。
回答1件
あなたの回答
tips
プレビュー