1

Less のすべてのドキュメントとチュートリアル#namespace > .mixin()では、名前空間を取り込むときに構文を使用します。.namespace.mixin()ただし、構文に慣れていることがわかりました。つまり、次のようになります。

.namespace() {
    .mixin() {
        foo: bar;
    }
}

#usage {.namespace.mixin()}

何か不足していますか?これら 2 つのバリアントの間に違いはありますか (特に、ミックスイン/変数がスコープに影響を与える方法とその逆の方法)? それとも、歴史に根ざした伝統のようなものですか?


明らかに.namespace > .mixin.namespace.mixin.namespace .mixinは、セレクターとして使用される場合は別物です。しかし、ミックスインの呼び出し/展開になると、状況は異なるようです。次の例を作成することはできません。

"#usage {#namespace > .mixing}"
"#usage {#namespace.mixing}"
"#usage {#namespace .mixing}"

.mixinがパラメトリック ルールセットとして定義されていると仮定すると、等しくない出力が生成されます。についても同じです.namespace。例えば:

/* A */
#namespace {
    .mixin1() {
        foo1: bar;
        .mixin1() {
            foo2: bar;
        }
    }

    .someruleset {
        foo3: bar;
        .mixin1 {
            foo4: bar;
        }
    }
}

/* 1 */
#u1 {#namespace > .mixin1()}
/* 2 */
#u2 {#namespace .mixin1()}
/* 3 */
#u3 {#namespace.mixin1}
/* 4 */
#u4 {#namespace .mixin1}
/* 5 */
#u5 {#namespace.mixin1.mixin1()}
/* 6 */
#u6 {#namespace.someruleset.mixin1()}

/* B */
.namespace {
    .mixin1() {
        foo1: bar;
        .mixin1() {
            foo2: bar;
        }
    }

    .someruleset {
        foo3: bar;
        .mixin1 {
            foo4: bar;
        }
    }
}

/* 1 */
#u1 {.namespace > .mixin1()}
/* 2 */
#u2 {.namespace .mixin1()}
/* 3 */
#u3 {.namespace.mixin1}
/* 4 */
#u4 {.namespace .mixin1}
/* 5 */
#u5 {#namespace.mixin1.mixin1()}
/* 6 */
#u6 {#namespace.someruleset.mixin1()}

1 ~ 6 の結果はすべて等しいようです。

4

2 に答える 2

3

.namespace.mixin.namespace 内のすべての .mixins を検索しながら、両方のクラスを持つ要素を参照し.namespace .mixinますか、それとも単なるタイプミスでしたか?

于 2013-08-24T18:00:30.797 に答える
1

この動作は当初は意図されておらず、見過ごされていました。しかし、何年も経った後、それは有害というよりも有用であることが判明し、近い将来 (または今後も) この動作を変更する理由も意図もありません。したがって、現在 (2020 年) では、この動作は多かれ少なかれ「公式」です。

言い換えると:

  • idミックスインと名前空間は、またはclass 要素識別子 (つまり、#または.接頭辞を使用)によって宣言できます。
  • 名前空間/ネストされた mixin の呼び出し/呼び出しステートメントの場合、セレクターのコンビネーター部分 ( >+または空白など) は無視され、何も影響しません。例えば:
#namespace.mixin();
#namespace .mixin();
#namespace > .mixin();
#namespace>    .mixin(); 
// etc. 

上記のステートメントはすべて同一であり、まったく同じ mixin と一致します。

.namespace #mixinおよび他の組み合わせについても同じです。

于 2013-08-25T04:28:58.697 に答える