0

カスタム Compass/Sass 関数を正しくコンパイルするのに問題があります。エラーが発生し続けます:

error library/scss/mixins.scss (Line 302: Invalid CSS after "...: $font-base) {": expected "}", was "   @if $targe...")

@import がめちゃくちゃになる可能性があることについて、Stack Exchange で何かを読んでいました。

これが私の機能です:

$columns: 12;
$column-width: 60px;
$gutter-width: 20px;
$max-width: $columns * ($column-width + $gutter-width);

/*********************
Variables - Fonts
*********************/
$font-base: 15px;
$font-base-line-height: 24px;

@function calc-percent($target, $container) {
  @return ($target / $container) * 100%;
}
@function em($target, $context: $font-base) {
   @if $target == 0 { @return 0 }
   @return $target / $context + 0em;
}
@function perc($width, $container-width: $max-width) {
   @return percentage($width / $container-width);
}
@function lh($amount: 1, $context: $font-base) {
   @return em($font-base-line-height * $amount, $context);
}
@mixin col($n, $padding: 0px, $border: 0px, $container-width: $max-width) {
   float: left;
   margin-right: percentage($gutter-width / $container-width);
   width:  percentage(($n * ($column-width + $gutter-width) - $gutter-width - ($padding * 2) - ($border * 2)) / $container-width);
   border-width: $border;
   padding: em($padding, $font-base) percentage($padding / $container-width);
    position: relative;
    display: inline; 
}

.wrap {
    @include col(10);
}

私は書いているときにこれに取り組んでいるので、助けていただければ幸いです-私が自分でそれを理解したら、答えを投稿します:)

そのため、コードの一部をコメントアウトしており、 (container-width: $max-width) {} を使用していることが問題の原因です。関数定義で変数の作成を設定するのは好きではありません...理由がわかりませんか?

4

1 に答える 1

1

わかりました、素晴らしいです - 動作するようになりました!

この回答は、Compass/Sass の Web 開発者全員に役立つと思います。そのため、少し詳しく説明することにしました。

さまざまなサイズのデバイス (iPhone 縦、iPhone 横、iPad 縦、iPad 横など) に対応するレスポンシブ Web サイトを構築しようとしています。 とにかく、すべての Sass スタイルシートをサイズ (481up、768up など) に分割しました。

セマンティック グリッド システムを 768up スタイルシートに含めようとしたところ、「すべての関数はルート レベルで定義する必要があります」というエラーが表示されました。これは、768up スタイルシートをメインの styles.scss にインポートしていたためです。これは、インポートされたスタイルシートで @mixins や @functions を使用すると壊れます。@mixins を 768up 自体に含めようとすると、同じ問題が発生します。インポートされるスタイルシートで @mixins を定義できないため、機能しなくなります。

ソリューション!!!

セマンティック グリッド「grid.scss」を、@media クエリ (481up、768up) を介してすべての異なるサイズのスタイルシートを呼び出す style.scss に含めると、それらの個々のスタイルシートで @mixins を使用できるようになります。

さらに、実際に使用しない限り、@mixin が css 内のスペースをまったく占有しないという利点もあります。したがって、「grid.scss」ファイルに 10,000 個の変数、関数、および mixin を含めることができますが、それらを使用しない限り、スタイルシートが肥大化することはありません。

スケッチを含めようとしましたが、うまくいきませんでした。スケッチを見たい場合は、これにコメントしてください。

まあ、これが仲間の開発者に役立つことを願っています. そうでなければ、私は確かに多くのことを学びました!!!

于 2012-02-22T23:22:07.697 に答える