1

Rails 3.2、コンパスレールを使用します。

私は次のファイルを持っています:

screen.css.scss

@import "compass";

application.css.scss

/*
 *= require_self
 *= require_tree .
*/

@import "screen";

.content {
  background-color: #eee;
  padding: 20px;
  margin: 0 -20px; 
  @include border-radius(6px, 6px);
  @include box-shadow(0,0,0,.15);
}

application.html.erb(レイアウト、関連する行のみ):

<%= stylesheet_link_tag "application", :media => "all" %>

これは私のアプリのレイアウトでは問題なく機能します。

次に、スタイルを設定しようとしている特定のページ(ホーム)について、home.css.scssがあります:

@import url(http://fonts.googleapis.com/css?family=Oleo+Script+Swash+Caps:700);

@import "compass/css3/text-shadow"; <<-- This is the line I don't understand

.welcome {
  text-align: center;
  h1 {
    font-family: 'Oleo Script Swash Caps', cursive;
    font-weight: 700;
    font-size: 110pt;
    line-height: 130px;
    @include single-text-shadow;
  }
 }

ドロップするとすぐに@import "compass/css3/text-shadow";、コードが壊れUndefined mixin 'single-text-shadow'.ます。text-shadowインポート行をapplication.css.cssに移動した場合も、同じことが起こります。

私の質問はなぜですか?私はscreen.css.scssを介してapplication.css.cssにコンパスフレームワーク全体を含めました。私はそれが機能しているのを見るので、そのファイルは確かにロードされます。では、なぜこのようなダブルインクルードを行う必要があるのでしょうか。

4

2 に答える 2

2

home.css.scssimporting でない限りapplication.css.scss、これは予想される動作として理にかなっています。コンパイルされたドキュメントごとに 1 回だけインポートする必要があります。そのドキュメントに含まれる (そしてコード内のインポートの後に来る) 任意のパーシャルで使用できます。

Compass を一度_base.scssパーシャルにインポートし (使用可能にしたい他のプラグインと一緒に)、そのパーシャルを基本設定が必要な場所にインポートするのが一般的です。

于 2012-12-14T03:01:31.417 に答える
0

あなたの質問を正しく理解したかどうかはわかりませんが、ここには二重のインポートはありません。

コンパスはモジュラー フレームワークです。すべてのパーツを使用する必要はありません。代わりに、必要な部分だけを含めることができます。簡単にするために、次のようなサブパーツを要求することもできます。

# application.sass
@import "compass"
@import "compass/css3/"
@import "compass/utilities/"
于 2012-12-13T18:55:38.790 に答える