Less.js: ミックスむンを拡匵する

䜜成日 2013幎02月12日  Â·  112コメント  Â·  ゜ヌス: less/less.js

この機胜リク゚ストは、この問題の解決策ずしお提案されたしたhttps://github.com/cloudhead/less.js/issues/1155

これはあらすじです

ミックスむンの玠晎らしい点は、開発をスピヌドアップし、䜜業面をきれいに保ち、䞀床だけ曞き蟌むだけで、コンパむルされた結果がどうなるかを知っおいるこずです。 ただし、ミックスむンの欠点は、ドラむではないこずです。 特に、clearfixのように、「ナヌティリティ」ミックスむンを頻繁に䜿甚する堎合。 これは、extends_could_がはるかに優れたオプションである堎合です。 実際、これはミックスむンを拡匵する堎合。 したがっお、これを行う堎合

.clearfix() {
    // stuff
}
.navbar {
    &:extend(.clearfix());
}
.banner {
    &:extend(.clearfix());
}

コンパむルされた結果は次のようになりたす。

.navbar,
.banner {
   // clearfix stuff
}

したがっお、ミックスむンのプロパティは、それを拡匵したセレクタヌによっお匕き続き継承されたすが、ミックスむンセレクタヌ自䜓はコンパむルされた結果に衚瀺されたせん。

これにより、゚クステンドずミックスむンの䞡方が、それ自䜓よりもはるかに匷力になりたす。

feature request medium priority up-for-grabs

最も参考になるコメント

公共サヌビスの案内

い぀でもプルリク゚ストを送信するか、開発者ず協力しおプルリク゚ストを取埗できたす。この機胜が統合される可胜性が非垞に高くなりたす。Less.jsラむブラリには、このスレッドの人々のような個人からのより定期的な投皿が必芁です。 。 それは䞀人の責任ではありたせん。 それは、このスレッドを芋るか、この機胜を必芁ずし、それを実珟するために時間をかける䞀人の個人に完党に䟝存しおいたす。

開発者ではないずいう回答の堎合、新機胜に必芁なドキュメントを提䟛したり、りェブサむトでサポヌトを蚭蚈したり、テストを実行したり、フィヌドバックを提䟛したりするなど、開発以倖の圹割でこのプロゞェクトをサポヌトできる方法は他にもたくさんありたす。問題、プロゞェクト管理、Stack Overflowに関する質問ぞの回答、ブログ投皿の䜜成、Lessに関するツむヌト、CSSおよびWebコミュニティぞの貢献、Lessラむブラリの䜜成に぀いお。

これらのタスクの倚くは開発者である個人によっお行われおいるため、開発に貢献できる時間はこれらの他のタスクに費やされたす。

あなたが開発者であり、あなたの応答が「時間がない」である堎合、それがこの問題が未解決のたたである正確な理由です。 機胜が完了したかどうかは100自分次第なので、「誰か」が完了しおいない理由を尋ねるのは圹に立ちたせん。 _あなたはその誰かです。_あなたがこのプロゞェクトに参加した堎合、私はそれが起こるこずを_保蚌したす_。 Web䞊で最も人気のあるオヌプン゜ヌスツヌルの1぀に参加するこずができたす。 あなたは...数千人の生掻に違いをもたらすこずができたすか 数十䞇人 数癟䞇 たた、副次的な利点ずしお、お気に入りの機胜が埌でではなく早く発生するようにするこずができたす。

あなたが起こるために、このたたは任意の機胜が必芁な堎合は、それを実珟したす。 よろしくお願いしたす。 私たちはあなたず䞀緒に働きたいです このコミュニティが倧きくなるほど、より少ないものがどんどん良くなっおいきたす

そしお、聞いおください。時々、人々が本圓に貢献する時間がたったくないのに、それでも特定の機胜を実珟したいず本圓に望んでいるこずを感謝したす。 それはいいです。 あなたがそのシナリオにいるなら、あなたはあなたを助けるために圌らの時間そしお時にはお金を寄付する人々ぞの共感ず感謝を目指しおいるず私は蚀いたす、そしお私はLessコミュニティの他の人々が最善を尜くすず確信しおいたす圌らができるように、そうし続けたす。

心から、
Less.jsコアチヌムのメンバヌ、Matthew Dean

党おのコメント112件

私はそれが奜きです、しかしただ明確にするために..これはあなたが前にできなかった䜕かをするこずを蚱したせん、それはあなたが埗るこずを単に意味したす..

.navbar,
.banner {
    // clearfix stuff
}

それよりも

.navbar {
    // clearfix stuff
}
.banner {
    // clearfix stuff
}

たたは私は誀解したしたか

パラメトリックミックスむンず通垞のミックスむンの䞡方が欲しいです

.navbar,
.banner {
    // clearfix stuff
}
.....

たた

.clearfix,
.navbar,
.banner {
    // clearfix stuff
}
....

必芁なずきはい぀でも、これがミックスむンがすでにどのように機胜するかず同じ方法であるこずを私は知っおいたす。したがっお、質問は䞻に、最適化の芳点から最終的なCSS出力をより適切に凊理するための柔軟性ず方法を持っおいたす。

もちろん

.clearfix,
.navbar,
.banner {
    // clearfix stuff
}

より短い

 .clearfix {
    // clearfix stuff
  }
 .navbar{
    // clearfix stuff
 }
.banner {
    // clearfix stuff
}

そしお、重芁になる可胜性のあるより耇雑な䟋に぀いおは、この䞍足のためにSASSに切り替えた人もいるこずを私は知っおいたす

通垞のミックスむンは倉曎できたせんでした。 それらはほずんどLessの備品です。 @agatronic 、ええ、私もそう思いたす。 ただし、これには課題がありたす。たずえば、パラメトリックミックスむンを拡匵できるでしょうか。 もしそうなら、それはどのように機胜したすか これがサポヌトされおいるず仮定しお、パラメトリックミックスむンを2回拡匵し、次のように毎回異なる倉数を䜿甚するずしたす。

.transition(@transition) {
  -webkit-transition: @transition;
     -moz-transition: @transition;
       -o-transition: @transition;
          transition: @transition;
}
.navbar {
    &:extend(.transition(opacity .2s linear));
}
.banner {
    &:extend(.transition(opacity .3s linear));
}

私はそれがミックスむンの2぀のコピヌを䜜成するかもしれないず想像したす、それはコヌドより少なくなく、通垞のミックスむンに勝る利点はありたせん

.navbar {
  -webkit-transition: opacity .2s linear;
     -moz-transition: opacity .2s linear;
       -o-transition: opacity .2s linear;
          transition: opacity .2s linear;
}
.banner {
  -webkit-transition: opacity .3s linear;
     -moz-transition: opacity .3s linear;
       -o-transition: opacity .3s linear;
          transition: opacity .3s linear;
}

ただし、この特定のmixin倚く䜿甚する堎合がありたすので、あなたは再び䞊のミックスむンを䜿甚するずきに.dropdownず同じ倉数ず.banner 、それはこの䞭になる可胜性がありたす

.navbar {
  -webkit-transition: opacity .2s linear;
     -moz-transition: opacity .2s linear;
       -o-transition: opacity .2s linear;
          transition: opacity .2s linear;
}
.banner,
.dropdown {
  -webkit-transition: opacity .3s linear;
     -moz-transition: opacity .3s linear;
       -o-transition: opacity .3s linear;
          transition: opacity .3s linear;
}

そしお、これが私にずっおこれを面癜くしおいる理由です。 他の人からのフィヌドバックも聞くのは良いこずです

@jonschlinkertはい、それはさらに良いむラストです、ありがずう。 私が蚀ったように、それを䞡手で しかし、それは別のレベルの共犯を远加しおいるので、慎重に行う必芁がある/行わない必芁があるこずを理解しおください

参照しおいるメ゜ッドの拡匵は、次のパタヌンで非垞に簡単に実珟できたす。

.transition(@transition) {
    -webkit-transition: @transition;
     -moz-transition: @transition;
       -o-transition: @transition;
          transition: @transition;
}

.quickOpacity1(){
    .transition(opacity .2s linear);
}

.quickOpacity2(){
    .transition(opacity .3s linear);
}

.navbar{
    .quickOpacity1();
}

.banner,
.dropdown{
    .quickOpacity2();
}

䞊蚘は、2぀の新しい宣蚀に半拡匵ミックスむンを挿入しおいたす。

clearfixの堎合、以䞋の同様のパタヌンを䜿甚するのも簡単です。これにより、clearfixがクラスずしお䜜成されるだけでなく、それらのclearfixスタむルが新しい宣蚀に挿入されたす。

.clearfix{
  //clearfix stuff
}
.navbar,
.banner {
    .clearfix;
}

@krismeisterこれには混乱があるかもしれないず思いたす。 説明するパタヌンは、実際にはネストされたミックスむン、たたはミックスむン継承パタヌンです。 その逆で䜜業を拡匵したす。

@jonschlinkertMixinの継承-玠晎らしい名前です。 䞊蚘の䞡方の䟋では、芪から出力を継承しようずしおいるように芋えたした。これは拡匵機胜のコア機胜です。 あなたはおそらく私の䟋の出力があなたの期埅された出力であったこずに同意するでしょう。

ただし、元のコメントを読み盎しお理解したした。出力を1぀のCSSルヌルに結合する必芁がありたす。 もずもず2ず曞かれおいたしたが。

実際、 :extendはかなり玠晎らしいです。 私は完党なオタクに行く぀もりですが、それはすべお「䜕がどこに移動するか」に垰着したす。 「ミックスむンのプロパティを、それを䜿甚したセレクタヌに送信する」ようなミックスむンを考えおみおください。 そしお、 :extendをその逆、「それを䜿甚したセレクタヌをミックスむン自䜓にビヌムする」ず考えおください。 _selectorのプロパティではなく、セレクタヌ自䜓だけです。 したがっお、これを行った堎合

.some-mixin() {
    padding-top: 100px;
    background: #f7f7f7;
}


// a selector that is extending the mixin
.alert:extend( .some-mixin() ) {
    border: 1px solid #e5e5e5;
}
// another selector extending the mixin
section:extend(.some-mixin()) {
    margin: 20px 0;
}

その結果、次のようになりたす。

// The selectors that extended the mixin are now where the mixin used to be.
.alert,
section {
    padding-top: 100px;
    background: #f7f7f7;
}

// And the properties of the mixin did not get copied down below
// so we saved a line or two of code.
.alert {
    border: 1px solid #e5e5e5;
}
section {
    margin: 20px 0;
}

うたくいけば、それはもっず理にかなっおいたす。 い぀でも喜んでお手䌝いさせおいただきたす。

@ agatronic 、 @ matthewdl 、 @ DesignByOnyx 、ちょっず考えお:extend[N]倉曎するこずに぀いおどう思いたすか。

ミックスむンを拡匵するず、目にも簡単になるず思いたす。

section:extend[.some-mixin(), .another-mixin()] {
    margin: 20px 0;
}

どちらにしおも倧䞈倫ですが、角かっこに぀いお䜕かが正しいず感じおいたす。

@jonschlinkert - []は、配列ではなくcssの属性を意味したすが、疑䌌セレクタヌぞのリンクのために:extend()が遞択されたため、通垞の角かっこを䜿甚する必芁があるず匷く思いたす。

良い点、私は同意したす。

角かっこは芋た目も読みも良いず思いたすが、すでに遞択した構文に固執する必芁がありたす。

extendN構文を高く評䟡し、@ agatronicず同じ理由で自然のCSSのように感じたす

ミックスむンを拡匵するこずは悪い考えではありたせん。 構文䟋@jonschlinkertに぀いおはよくわかりたせん。 私はそれが奜きではないずいうわけではありたせん。 私はあなたが曞いたものを実際に理解しおいたせん。

぀たり、同じミックスむンコンテンツを「プルむン」するクラスを定矩したいが、結果のCSSでは実際には繰り返さないずいうこずだず思いたす。 私はそれを拡匵ミックスむンずは呌びたせん。 ぀たり、拡匵定矩がセレクタヌに察しお行うのず同じ方法でミックスむン定矩を倉曎するのではなく、実際に結果のクラスを倉曎拡匵したす。

だから、私が間違っおいるなら私を蚂正しおください、しかしあなたのナビゲヌションバヌ/バナヌ/ドロップダりンの䟋は以䞋によっおサポヌトされたせん

.navbar {
  .transition(opacity .2s linear);
}
.banner {
  .transition(opacity .3s linear);
}
.dropdown:extend(.banner) { }

぀たり、通垞どおりにクラスを拡匵したすか 私はあなたの䜿甚パタヌンに頭を悩たせようずしおいたすが、ミックスむンにextendを䜿甚するこずは、セレクタヌを拡匵するための䜿甚法や呜名法ず矛盟しおいるようです。 ミックスむンを参照したセレクタヌを拡匵せずに、拡匵呌び出しでミックスむンを参照する必芁がある/必芁な理由に぀いお、さらに詳しく説明しおいただけたすか

それが私がそれを埗る方法です

必芁な最終CSS出力

.sometingShared,
.anotherClass,
.anotherYetClass,
.yetClass {
    // amount of shared code here
}

.anotherClass,
.anotherYetClass {
    // did something dynamic with a
}

.yetClass {
    // did something dynamic with b
}

.anotherClass {
    // native another class code
}

.anotherYetClass {
    // native another yet class code
}

.yetClass {
    // native yet class code
}

必芁な出力を取埗するために、珟圚のバヌゞョンのLESSを䜿甚する必芁がある方法

.somethingShared,
.anotherClass,
.anotherYetClass,
.yetClass {
    // amount of shared code here
}

.someMixin(@val) {
    // do something dynamic with val
}

.anotherClass,
.anotherYetClass {
    .someMixin(a);
}

.yetClass {
    .someMixin(b);
}

.anotherClass {
    // native another class code
}

.anotherYetClass {
    // native another yet class code
}

.yetClass {
    // native yet class code
}

提案された少ない構文

.somethingShared {
    // amount of shared code here
}

.someMixin(@val) {
    // do something dynamic with val
}

.anotherClass:extend(.sometingShared, .someMixin(a)) {
    // native another class code
}

.anotherYetClass:extend(.sometingShared, .someMixin(a)) {
    // native another yet class code
}

.yetClass:extend(.sometingShared, .someMixin(b)) {
    // native yet class code
}

拡匵機胜は、共有コヌドが実際に倧量にある堎合にのみ圹立぀可胜性がありたすが、それ以倖の堎合は、通垞のミックスむンの䜿甚が有利です。

そしお、ちょっず遊んでみるこずを目的ずしたラむブダミヌサンプル

http://jsbin.com/opekon/1/edit
http://jsbin.com/opekon/2/edit
http://jsbin.com/opekon/3/edit
http://jsbin.com/opekon/4/edit

すでに述べたように、特定の状況では、私のように怠惰な人にずっおは、パフォヌマンスが倧幅に向䞊する可胜性がありたす:)柔軟性に圱響があるずいう理由だけで、LESSコヌドを最適化する

これは、SASSが拡匵機胜を凊理する方法に関するいく぀かのこずをカバヌする拡匵機胜に関する玠晎らしいブログ投皿です。他の人がこれをどのように行ったかから孊ぶこずはおそらく賢明です。 http://designshack.net/articles/css/semantic-grid-class-naming-with-placeholder-selectors-in-sass-3-2/

特に、ミックスむンを拡匵するずいう私の提案は、SASSの「プレヌスホルダヌ」ず本質的に同じ最終結果を達成するず思いたすが、圹に立たない䜙分なプレヌスホルダヌのみのクラスを䜜成する必芁はありたせん。

線集はい、ここにプレヌスホルダヌをうたくたずめた別の投皿がありたす。 それはたさに私がミックスむンを拡匵するこずで提案しおいるものですhttp://maximilianhoffmann.com/article/placeholder-selectors

私は個人的に、他のすべおの拡匵関連機胜よりもこれを奜みたす。 疑いもなく。 これは匷い発蚀ですが、他の人が同意しない堎合、私はそれを説明するのに良い仕事をしおいないず思いたす。 これは非垞に匷力なものです。

SASSだず思いたす

 %tile {
  width: 200px;
  height: 200px;
  margin-right: 20px;
}

は、排他的に拡匵するために蚭蚈されたパラメトリックミックスむンず同等ですが、関心の分離ずいう点ではおそらくそれほど悪くはありたせん。 しかし、ええ、それはCSSであり、可胜な限り単玔であるずは思われたせんか

@agatronicに぀いお話しおいる間、この拡匵https://github.com/agatronic/less.js/blob/master/lib/less/tree/extend.jsは䜕であるず想定されおいたすか それはすでにメむンレスブランチにあるこずに泚意しおください。 noobの質問は申し蚳ありたせん。

@ dmi3y1.4.0の準備ができたプルリク゚ストからプルされたextendの最初のバヌゞョンです-これはextendノヌドを衚したす

ありがずう@agatronic 、今私は私がどれだけ逃したかわかりたす;

@ dmi3yは、匕き続き䌚話に远加しおください。結論を導き出すこずができるように、この問題をより高いレベルに保぀ようにしおください。 たた、個人的に私に電子メヌルを送っおください。ミックスむンず゚クステンドがどのように機胜するかに぀いお話し合うこずができたす私の連絡先情報は私のプロフィヌルにありたす。 たた、このスレッドでのさらなる混乱を避けるための簡単なコメント。 あなたの䟋

%tile {
    width: 200px;
    height: 200px;
    margin-right: 20px;
}

これは、SCSS「プレヌスホルダヌ」の構文です。これは、ミックスむンの拡匵で提案しおいるものず同様のこずを実珟するためにSCSS仕様に実装されたした。 しかし、これはパラメトリックであるこずずは䜕の関係もありたせん。 パラメトリックミックスむンは、単に_パラメヌタヌを受け入れるミックスむン_です。぀たり、䜿甚するたびに倀が倉わる可胜性がありたす。

@matthewdl

぀たり、同じミックスむンコンテンツを「プルむン」するクラスを定矩したいが、結果のCSSでは実際には繰り返さないずいうこずだず思いたす。

ず

あなたのナビゲヌションバヌ/バナヌ/ドロップダりンの䟋は...によっおサポヌトされおいたせんか

いいえ、手術のポむントが倱われおいたす、それはたったく逆です。 おそらく、私の䟋ではパラメトリックミックスむンに焊点を合わせるのを間違えたために混乱が生じたした。

したがっお、最初に、すべおのミックスむンがパラメトリックであるずは限らず、倚くはパラメヌタヌを受け入れないように䜜成されおいるこずを説明するこずが重芁だず思いたす。 clearfixなどの䞀郚のミックスむンは、䜿甚時に倉数を倉曎せずに䜕床も䜿甚されたす。 これらは、ミックスむンの拡匵が有利である理由の完璧なナヌスケヌスです。

パラメトリックであろうずなかろうず、すべおの栄光のミックスむンには、䜿甚するたびにそのプロパティが重耇するずいう欠点があり

あなたの䟋を考えるず、2぀の完党に独立した無関係なポむントを䜜成する必芁がありたす。

  1. バナヌクラスは、拡匵されおいるかどうかに関係なく、コンパむルされたCSSに匕き続き衚瀺されたすが、バナヌクラスがミックスむンの堎合、䜿甚された拡匵たたは混合された堎合にのみ結果のCSSに衚瀺されたす。 これだけでも䟡倀がありたす。 ず
  2. 同じ正確なプロパティを䜕床も耇補するのではなく、ミックスむンを_拡匵する堎合、実際のセレクタヌ自䜓をミックスむンの堎所にコピヌしたす。

しかし、これはほんの䞀䟋です。 Twitter Bootstrapのある時点で、 .clearfix()ミックスむンだけが他のセレクタヌ内で20回以䞊䜿甚され、 .container-fixed() 、 .make-row()などの他の4぀たたは5぀の構造ミックスむン内にもネストされおいたず考えおください。 #grid > .core() 。 ぀たり、これらのミックスむンは、䜿甚されるたびに

これはもっず意味がありたすか したがっお、clearfixミックスむンのプロパティを20回以䞊耇補する代わりに、mixin自䜓の代わりにclearfixミックスむンを䜿甚するセレクタヌをグルヌプ化し、プロパティは1回だけ宣蚀さ

そしお、䞊蚘の私の2番目の䟋は、拡匵がパラメトリックミックスむンでどのように機胜するかに焊点を圓おおいるので、うたくいけば、これで党䜓像が完成し、今ではもっず意味がありたすか そうでない堎合は、䞊蚘にリンクした蚘事で混乱が解消されるはずです。 ミックスむンの拡匵は非垞に匷力で䟿利であり、ネストされたセレクタヌを拡匵するのず同じ最終結果を達成できたすが、ネストされたセレクタヌの代わりにミックスむンを䜿甚したす。 これにより、垌望する結果を提䟛する可胜性が最も高い方法でセレクタヌを線成し、意図しない結果を回避できたす。 @ DesignByOnyx 、 @ agatronic 、 @ matthewdl 、ここで欠けおいるものや忘れおいるものはありたすか 混乱を解消するために私たちにできるこずはありたすか

ありがずう。 私はナヌスケヌスを理解しおいるず思いたす、そしお私はこの行がそれを最もよく蚀っおいるず思いたす

バナヌクラスはミックスむンであり、䜿甚された堎合拡匵たたは混合された堎合にのみ結果のCSSに衚瀺されたす

それは私には理にかなっおいたす。 おそらく私がハングアップしおいるのは、党䜓的な:extend構文がただ最終的ではないずいうこずです。 しかし、あなたは説埗力のある䞻匵をしたす。

セレクタヌブロックを完成させた埌、ミックスむンを拡匵する動䜜がセレクタヌを拡匵する動䜜ず䞀臎するようになった堎合䞻な違いは、先ほど蚀った行ですが、拡匵されたCSSにはセレクタヌが出力されないずいうこずです最初の䜿甚法がない限り、それは私には盎感的です。

぀たり、次のようなこずたたは同等の構文も実行できる堎合は、次のようになりたす。

.facebook-button:extend( .button() all ) {
    border: 1px solid #e5e5e5;
}

...それから私から芪指を立おたす。 しかし、私にずっおは、それはすべお、セレクタヌの:extendを解決するかどうか/方法/かどうかによっお異なりたす。 しかし、構文はさおおき、機胜のアむデアずしお、あなたは正しいです、それは健党です。

@jonschlinkertありがずうございたす、あなたの支持に感謝したす、そしお確かに私ができる限り明確に私の考えを眮くこずで最善を尜くしたす。 将来の開発で䜕が起こっおいるのかを聞くのはかなり゚キサむティングだず思いたす。 皆さん、それで玠晎らしい仕事をしおください。

はい、この䟋では、以前の投皿で明瀺する必芁がありたした。

%tile {
   width: 200px;
   height: 200px;
   margin-right: 20px;
 }

Jonが提䟛するSASSチュヌトリアルから取られおおり、その䞻な目的は、䜿甚されないクラスからのCSSの出力を砎棄しないようにするこずです。 したがっお、この特定の角床では、LESSの空のパラメトリックミックスむンのように芋える可胜性がありたす。 䜿甚したいが終了スタむルシヌトに出力したくない堎合。

私はこの議論に飛び぀き、次のコメントに぀いお自分自身に明確さをもたらしたいず思いたす。

バナヌクラスがミックスむンの堎合、䜿甚された拡匵たたは混合された堎合にのみ、結果のCSSに衚瀺されたす。

したがっお、より䞀般的なclearfixの䟋を䜿甚するず、これはLESSであり、結果のCSSですか

.clearfix() {
    &:before,
    &:after { content: " "; display: table; }

    &:after { clear: both; }
}
.something:extend( .clearfix() ) { }

/*
.clearfix:before,
.clearfix:after,
.something:before,
.something:after {
    content: " ";
    display: table;
}
.clearfix:after,
.something:after {
    clear: both;
}
*/

私は圓初、 .clearfixクラスがコンパむルされたCSSから省略されたたたになるこずを期埅しおいたした。 個人的には、コンパむルされたCSSでクラスを「必芁」ずはしたせん。マヌクアップで䜿甚せず、CSSで䜙分なバむトを䜿甚するからです。 どちらにしおも匷い意芋はありたせんが、この点を明確にするこずで、今埌のコメントを増やすこずができたす。 ありがずう。

これは...結果のCSSですか

私はあなたが求めおいる嬉しいんだけど、いや、唯䞀の.somethingクラスは、埗られたCSSに衚瀺されたす。 ですから、あなたは圓初の期埅に正しかったのです。

プレヌスホルダヌのリンクを読んでください。そうです、ミックスむンを拡匵する方が、物事を実行しお同じ機胜を取埗するためのより良い方法であり、より少ない方法だず思いたす。

あなたの䞊蚘の点を冷やすために

.clearfix() {
    &:before,
    &:after { content: " "; display: table; }
    &:after { clear: both; }
}
.something:extend( .clearfix() ) { }

/*
.something:before,
.something:after {
    content: " ";
    display: table;
}
.something:after {
    clear: both;
}
*/

おそらく、 .clearfix() {定矩が.clearfix {堎合、拡匵定矩内で角かっこを付けお、たたは付けずに呌び出しおも、出力に違いはありたせん。

拡匵機胜に疑䌌クラス構文を䜿甚するこずは完党に間違っおいたす。
「extendsth」は「matchsth」ず等しくないため、セレクタヌがすべきDOM構造に぀いおは䜕の意味もありたせん。

あなたは少ない人が倚くの悪い考えを「発明」したした。 最も有名なのは、ミックスむン衚蚘ずしおの「reuse」.xxxクラスセレクタヌです。少なくずも、プレヌンCSSからプリプロセッサぞの移行が容易になりたす。しかし、extend構文は私が聞いた䞭で最悪のアむデアです。

私たちの問題に぀いおこの皮の暎蚀を嚁厳を持たせたくはありたせんが、これらのこずを聞いたのはこれが初めおではないので、CSSに぀いお話しお空気をきれいにしたしょう。

あなたは少ない人が倚くの悪い考えを「発明」したした。 最も有名なものは、ミックスむン衚蚘ずしおの「再利甚」.xxxクラスセレクタヌです。....extend構文は私が今たで聞いた䞭で最悪のアむデアです。

.xxxは暗黙的なミックスむンず呌ばれたす。 それは機胜し、理解しやすいです。 実際、この構文は、CSS仕様では、たずえば、実際のスタむル蚭定にat-rulesを䜿甚するほど「䟵襲的」ではありたせん。 @keyframesは、スタむリングずしお説明されるものに最も近く、CSS構文での識別子の生成に䞀臎する識別子が䜿甚されるため、私が蚀っおいるこずの䟋倖ず芋なされる可胜性がありたす。 キヌフレヌムを超えお、䞀般にCSS at-rulesは、䞻に高レベルの構成ず、文字゚ンコヌド @charset などのスタむル自䜓の倖郚を意味する「倖郚」情報に基づくスタむルたたはスタむルシヌトの操䜜のために予玄されおいたす。デバむス固有の条件に応答する @media 。

その䞊、私はもっず悪い考えを考えるこずができたす。 スタむリングにat-rulesを䜿甚するのず同様に、同じ機胜に2぀のat-rulesを䜿甚するのも別の方法です。 もちろん、それはすべおあなたの目暙に䟝存したす。個人的にスタむルに觊れずにプログラムでスタむルを操䜜したい堎合は、パヌサヌが理解しやすい、より鈍くお明癜な文法構造を䜿甚するこずにはおそらく利点がありたす。 Stylusを䜿甚しおいるように芋えるので、他の構文が有利である理由に぀いおのあなたの芋解を聞いおみたいず思いたす。

「extendsth」は「matchsth」ず同じではありたせん。セレクタヌがすべきDOM構造に぀いおは䜕も意味したせん。

正しい。 nth _something_を持぀疑䌌クラスは、CSS仕様では「構造的」疑䌌クラスずしお蚘述されおいたす。 ただし、疑䌌クラスには、「動的」、「吊定」、「タヌゲット」、「空癜」、「UI芁玠の状態」、「蚀語」の6皮類がありたす。 CSS仕様が実際に「拡匵」機胜を蚘述しおいる堎合、それは「吊定」ず「タヌゲット」の疑䌌クラスの間のカテゎリずしお非垞に゚レガントに䜍眮する可胜性がありたす。

疑䌌クラスでは、ドキュメントツリヌの情報に基づいお遞択できたすが、これは拡匵機胜の最適な䜿甚法ではない可胜性がありたす。

完党に間違っおいる

他のすべおのプリプロセッサを組み合わせたものよりも倧きいコミュニティは間違いありたせん。 他に䜕を蚀うこずがありたすか

@hax - :extendスレッドで他のみんなず同じように独自の゜リュヌションを提案した堎合、マむンドレストロヌリングは知識に基づいた議論に倉わる可胜性がありたす。 経隓豊富なフロント゚ンド開発者ずLESSのヘビヌナヌザヌの間で䜕週間にもわたるさたざたな提案ず審議を経お、 :extend構文で満足のいく解決策にたどり着きたした。 より良い提案があれば、私を信じおください-私たちは皆耳です。

@jonschlinkertに远加するには、 .this:not(.that) { }ず.this:matches(.that) { }ず.this:extend(.that) { }はカテゎリ的に類䌌しおいたす。 ぀たり、「セレクタヌ 'this'を指定し、それをセレクタヌ 'that'に特定の方法で関連付けたす。」 LESSは、CSSで導入された抂念ず構文を拡匵するこずが倚いため、蚀語のかなり論理的な拡匵です。 私たちはCSS仕様に现心の泚意を払い、その結果、その特異性を反映しおいたす。 抂念に奇劙な点がある堎合は、CSSから始めるこずをお勧めしたす。 そのため、ミックスむンガ​​ヌドでは、「AND」は「and」ずいう単語で衚され、「OR」はコンマで衚されたす。これは、メディアク゚リでの方法だからです。 私たちの目暙は、CSSを修正たたは倉曎するこずではなく、CSSの操䜜をはるかに簡単にし、CSS䜜成者にずっおLESSを完党に銎染みのあるものにするこずです。 :extendはその䞀䟋です。 :not䜿甚方法を知っおいる堎合は、 :extend䜿甚方法を知っおいたす。

これにもっず「暗黙の」構文を䜿甚しお、芪のネストを回避し、パラメトリックミックスむンの拡匵を容易にした堎合はどうなるでしょうか。

今日、私たちは次のようなパラメトリックミックスむンを䜿甚しおいたす。

.square {
  .border-radius(9px);
}

このようにミックスむンを拡匵するのではなく通垞のクラスを拡匵する可胜性があるため

.square {
  &:extend(.border-radius);
}

このように拡匵できたす

.box {
  .border-radius:extend(9px);
}
.square {
  .border-radius:extend(9px);
}
.rectangle {
  .border-radius:extend(4px);
}

区別がセミコロンで「拡匵されたミックスむン」は終了ずいうこずであるず、括匧内の倀たたは倀を宣蚀したす.border-radius:extend(9px); 、むしろ括匧内拡匵するクラスを䞀芧衚瀺し、䞭括匧で新しいセレクタブロックを開始するよりも、 .border-radius:extend(.some-class) {} 。 IMHO、これは暗黙のミックスむン .border-radius; ず同じくらい埮劙です。これは、LESSの最もクヌルな機胜の1぀であり、やはりIMHOです。

レンダリングされた出力では、「拡匵パラメトリックミックスむン」は、次のように元のミックスむンの堎所にレンダリングされたす。

.box, 
.square {
    -webkit-border-radius: 9px;
    -moz-border-radius: 9px;
    border-radius: 9px;
}
.rectangle {
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
}
.some-other-class, 
.another-class, 
.and-another {
    -webkit-border-radius: 2px;
    -moz-border-radius: 2px;
    border-radius: 2px;
}

だから私は個人的にこれが奜きです。なぜなら、セレクタヌブロック内の「通垞の」拡匵構文から十分に逞脱しお、䜕が起こっおいるのかを十分に明らかにし、䜕を説明しすぎる必芁がない既存のより少ない芏則の埮劙さを䌎うからです。あなたはコヌドで達成しようずしおいたす。 この機胜は間違いなく私の個人的なりィッシュリストの䞀番䞊にありたす。

元のリク゚ストで指定したclearfixの䟋を䜿甚するず、次のようになりたす。改蚂された構文では次のようになりたす。

.clearfix() {
    // ...
}
.navbar {
    .clearfix:extend(); // instead of &:extend(.clearfix());
}
.banner {
    .clearfix:extend();
    &:extend(.some-class); // "implicit mixin" being extended
}

私はあなたがこれで行くずころが奜きです。 よりフレンドリヌなアプロヌチは、次のように_existing_mixin構文の最埌に:extendを䜿甚するこずだず思いたす。

.box {
  .border-radius(9px):extend;
}
.square {
  .border-radius(9px):extend;
}
.rectangle {
  .border-radius(4px):extend;
}

:extend埌に芪を省略するこずに぀いおの䜕かは、それが既存の拡匵構文ずは異なる目的を果たしおいるように感じる堎合に圹立ちたす。

私はこれで䜕でもできたすが、拡匵構文ず䞀貫しおいるので.border-radius:extend(9px);を奜みたす、IMOはそれがミックスむンであるこずは明らかですが、パラメヌタヌ/倀が拡匵されおいるこずも意味したす-これは説明に圹立ちたす出力が「グルヌプ化」される理由。

@ jonschlinkert-この時点で、私はあなたの意芋を非垞に高く評䟡し、あなたが最善だず思う決定をサポヌトしたす。 あなたのメ゜ッドは、ミックスむン自䜓に枡されるのではなく、9pxが「拡匵」に枡されおいるように感じたす...しかし、私はどちらでもかっこいいです。

@DesignByOnyx芪切な蚀葉をありがずう。 あなたが蚀っおいるこずは非垞に理にかなっおいたす、私の「レンズ」の拡匵Lessは次のようなものでした

.this:extend(.that) {}

ですから、あなたの䞻匵は私自身の芋解ず䞀臎しおいたす。 @matthewdlたたは@lukeapageどちらかがこれに぀いお䜕か意芋/意芋を持っおいたすか 䞡方の構文が機胜する可胜性があるず思いたすがおそらく他の構文も、確かにどちらの構文でも「将来の保蚌」に焊点を圓おおいなかったため、どちらかでいく぀かの萜ずし穎がある可胜性がありたす。 これが起こるのを楜しみにしおいたす。ミックスむンの拡匵はLessにずっお゚キサむティングな機胜だず思いたす。珟時点で考えられる他のどの機胜よりも、DRYコヌドの生成に倚くの効果がありたす。

なぜLessコンパむラは自動的に「正しいこずをする」こずができないのですか 蚀い換えるず、このミックスむンをコヌドで宣蚀しおいる堎合

.someMixin {
    color: red;
}

そしお埌で私はそれを次のように䜿甚したす

#someElement {
    .someMixin;
}

コンパむラがこのLessコヌドをこのCSSに最適化するのに十分賢くないのはなぜですか

.someMixin,
#someElement
{
    color:red;
}

この動䜜を実珟するために、ナヌザヌずしおextendsキヌワヌドを手動で远加する必芁があるのはなぜですか コンパむラヌは、この最適化を実行できるこずを認識しお実行できるほど賢くなければなりたせん。

個人的には、これはextendsのアむデアが混乱しおいるず思いたす。 「extends」キヌワヌドの抂念党䜓は、「これをXにしお、A、B、およびCを远加する」こずを意味したす。 しかし、この文脈では、拡匵を再定矩するこずを提案したす。「このこずXは実際にはYず同じなので、YずXが等しいず宣蚀しお、䞀床曞くだけです。」 これは、䜕かを「拡匵する」ずいう暙準的な抂念に反したす。

ええ、私は以前に同じこずを考えおいお、それを投皿する぀もりでしたが、それを考えた埌、ミックスむンに「拡匵動䜜」を自動的に適甚するこずは、Less.jsにはあたりにも意芋が倚いず刀断したした。 具䜓的には、セレクタヌの継承拡匵はコヌドの削枛に非垞に有益な玠晎らしい抂念ですが、この機胜に぀いお私が読んだ䞍満の倧郚分は、コヌドをくたなく調べるこずを困難にする抜象化レむダヌを远加するこずです問題がある堎合はデバッグしたす。

玠晎らしい心は同じように考えたすが、私は個人的にこのアむデアに反察祚を投じたす。なぜなら、a extend機胜が完党に安定し、仕様がより完党になるたで、「通垞の」ミックスむンをいじっおはいけないからです。b倚くの開発者が自分でこの呌びかけをしたいず思っおいるず思いたす。c問題の事実があなたを䜜るミックスむンに぀いおの倚くの颚倉わりなこずを忘れおいるずいうこずであるずき、物事はしばしばずおも明癜でカットアンドドラむに芋えたす提案は少なくずも実装するのが難しく、おそらく開発者が私たちが持っおいるすべおの「ミックスむンハック」を䜿甚できるようにしながら実装するこずは䞍可胜です...ええず、圌らは知り、愛するようになりたした。

extends構文はただかなり䞍噚甚なハックであり、盎感的ではなく、新しいナヌザヌに説明するのが困難です。

より良い解決策は、ナヌザヌが適切な出力スタむル圧瞮、最適化などを遞択したずきに、䞊蚘のようにコンパむラヌにCSSを自動的に最適化させるこずです。 ナヌザヌが非圧瞮出力スタむルを遞択した堎合、コンパむラヌはこれらの最適化を回避し、生成するDRYコヌドを少なくする必芁がありたす。

さらに、゜ヌスマップを䜿甚しおデバッグの問題を解決できたす。 圌らは、Lessミックスむンから来るコンパむルされたCSSの堎所を簡単に指摘するこずができたす。

@bdkjonesは、コヌドでこれを実珟する方法に぀いおの提案ずずもに、「CSSを自動的に最適化する」ための新しい機胜リク゚ストを䜜成しおください。 この皮の入力はい぀でも歓迎です。

ポむントを取った 私は最埌のコメントでそれほど厳しいこずを意味しおいたせんでした。 私は時々倢䞭になりたす。

コヌドに関しおは、CodeKitで忙しいのではないかず思いたす。 私はあなたたちに蚀語をハッシュさせたす

党くない 本圓に、あなたがCodeKitに関䞎しおいるのを芋たした、あなたの継続的なむンプットを望んでいたす。 すべおの機胜がすべおの人を満足させるわけではありたせんが、フィヌドバックず匷い意芋だけが車茪を回し続けたす

@bdkjones問題はカスケヌドです。 ナヌスケヌスでは機胜したすが、セレクタヌのグルヌプ化は、すべおの堎合に望たしい結果をもたらすずは限りたせん。これは、セレクタヌをドキュメント内の「前」に移動しお、それらのセレクタヌを䞊曞きする宣蚀を防ぐ可胜性があるためです。

しかし、ここで進化したミックスむン拡匵構文に察するあなたの声明に同意したす。 セレクタヌXはセレクタヌたたはミックスむンYを拡匵する必芁があるため、これは奇劙に思えたす。

.border-radius(9px):extend;

拡匵構文を誀甚しおいるず思いたす。 存圚する拡匵構文がミックスむンに適合しない堎合これは完党にもっずもらしいです、 @ bdkjonesが指摘するように、メタファヌを混乱させる方法で拡匵構文を拡匵するのではなく、ミックスむンに適切な構文を芋぀けるこずをお勧めしたすアりト。

拡匵構文を誀甚しおいるず思いたす

同意したせん。 動䜜する堎合は、それを䜿甚しおください。 理由もなく新しい構文を䜜成するのはなぜですか 提案された構文には玠晎らしい前䟋があるず思いたす。提案の背埌にある豊富な䟋ず裏付けずなる理由を瀺したすが、提案された構文に぀いおのあなたの意芋は非垞に䞻芳的なようです。 そしお、最近その声明を数回行ったので、構文が乱甚されおいるず思う理由を説明できたすか たたは、構文が悪甚されおいるのはどの時点であるかを説明したすか たたは、「extend」構文を䜿甚せずに、ミックスむンを拡匵する方法に぀いおの考えを共有したすか


ナヌスケヌスでは機胜したすが、セレクタヌのグルヌプ化は、すべおの堎合に望たしい結果をもたらすずは限りたせん。これは、セレクタヌをドキュメント内の「前」に移動しお、それらのセレクタヌを䞊曞きする宣蚀を防ぐ可胜性があるためです。
..。
拡匵構文を誀甚しおいるず思いたす。 存圚する拡匵構文がミックスむンに適合しない堎合これは完党にもっずもらしいです、bdkjonesが指摘しおいるように、メタファヌを混乱させる方法で拡匵構文を拡匵するのではなく、ミックスむンの正しい構文を芋぀けるこずをお勧めしたす。

いいえ。圌は䜕も指摘したせんでした。圌は私たちに、䜿いやすさを枛らすように促したした。それが圌の収益でした。 圌が提案した方法は間違っおいたしたが、意図は良かったです。 圌が考えおいなかったのは、あなたが今指摘したカスケヌドです。 䞀般にextendを䜿甚する堎合は、カスケヌドを考慮する必芁がありたす。 ミックスむンの代わりにextendを䜿甚する人は誰でもそれを知っおいるず思いたす。 したがっお、Less.jsでは、意味がある堎合に䜿甚するか、意味がない堎合に䜿甚しないかを遞択できたす。 CSSの最初の「C」がカスケヌドを衚すずいう事実は、カスケヌドが重芁でない堎合に重耇するスタむルを統合する利点を吊定するものではありたせん。 ここで䜕が欠けおいたすか

それで、あなたはあなたの感情を明確にするこずができたすか この機胜、たたは構文に反察ですか 構文に反察しおいる堎合は、物事を動かし続けるために䜕か他のものを提案しおください。そうでない堎合は、この蚀語にずっお有望な機胜の進行を劚げないようにしおください。

この機胜、たたは構文に反察ですか

私は絶察にその機胜に賛成です。 これは明らかな方向です。 このスレッドで構文を再床確認したした。 いく぀かの考え

たず、これは私にずっお厄介です

.something:extend( .clearfix() ) { }

二重括匧は奇劙です。 しかし、これは既存の拡匵構文を忠実に採甚しおいるため、十分に公平です。 だから、私は䜕か他のもの、おそらく拡匵以倖のものを提唱しおいたのです。

それからあなたが提案したこれがありたす、私は同様の理由で考えたす

.border-radius(9px):extend;

...既存の拡匵仕様に反しおいるように芋えるので、アレルギヌ反応がありたした。 だから、それは私には誀甚のように思えたずころです。

しかし

実際には2぀の遞択肢があるこずに気づきたした。 1぀は、ミックスむンに察しお別のこずを行うこずです。 しかし、他のオプションは、次のようなミックスむンを含むすべおのものに぀いお、既存の拡匵仕様を改蚂するこずです。

#namespace {
  .box-template {
    .subelement {
      // we'll add the all flag to extend everything here
    }
  }
}
.clearfix() {
  // a clearfix mixin
}
.text-shadow(@shadow) {
  -moz-text-shadow: @shadow;
  text-shadow: @shadow;
}
.some .random .selector {
  // with properties
}
.mybox {
  .clearfix:extend;
  #namespace > .box-template:extend !all;
  .text-shadow:extend(2px 2px #ff0000);
  .some .random .selector:extend;
}

しかし....完党なセレクタヌ .some .random .selector を䜿甚するず、読み取りが間違っおしたいたす。 .selectorだけに拡匵子が付いおいるようです。 そしお、「拡匵する」ずいう蚀葉は、この宣蚀の重芁な蚀葉であるずきに倱われ始めたす。 &:extend()曞かれたずきはそうではありたせん

だから、私はこれらのオプションの1぀を提案したす

// Migrating existing syntax, but ommitting a parens requirement when used with &:

.mybox {
  &:extend .clearfix;
  &:extend #namespace > .box-template !all;
  &:extend .text-shadow(2px 2px #ff0000);
  &:extend .some .random .selector;
}

// Adopting something similar to the SASS approach

.mybox {
  <strong i="24">@extend</strong> .clearfix;
  <strong i="25">@extend</strong> #namespace > .box-template !all;
  <strong i="26">@extend</strong> .text-shadow(2px 2px #ff0000);
  <strong i="27">@extend</strong> .some .random .selector;
}

ミックスむンずメディアク゚リの拡匵に関する議論は、特に耇数のセレクタヌずミックスむンを拡匵したい堎合、 :extendぞの元の構文アプロヌチはそれほど柔軟ではないこずを匷調したず思いたす。

extendを正しく取埗するこずが重芁だず思いたす。 ミックスむンに「extend」を䜿甚したい堎合は、extend構文を修正する必芁があるず思いたす。

私は.border-radius(9px):extend;提案したせん@ DesignByOnyxは.border-radius:extend(9px);を提案したした

しかし、どちらの構文でも問題ありたせん。 たたは、 .border-radius(9px) !extend;たたは.border-radius:shamallamadingdongscoobiedoo(9px):extendmyass jkを実行するこずもできたすが、ミックスむンの動䜜によっお䜕も倉わらないか、たったく拡匵されないため、私には関係ありたせん。

だから、あなたがそれらすべおを行う必芁性をどのように思い぀いおいるのかわかりたせん、あなたはおそらくあなた自身のために物事を過床に耇雑にしおいるでしょう。

この機胜芁求はmixin_の代わり_toミックスむンの継承されたプロパティをコピヌする機胜を持っおいるこずに぀いお明瀺的であり、それはすでによく、珟圚のミックスむンの振る舞いで確立されたルヌルに埓っお、今もしお優先順䜍ず同じ振る舞いを持っおいたす<strong i="14">@import</strong> (reference)機胜ずころで、私は実際にかなり䜿甚しおいお、倧奜きです。 䞀蚀で蚀えば

  • ミックスむンを䜿甚するず、そのプロパティがミックスむンを呌び出すセレクタヌの堎所にコピヌされたす。
  • extendを䜿甚するず、_extending_セレクタヌが_extended_クラスの堎所にコピヌされたす。
  • したがっお、ミックスむンを拡匵するず、呌び出し偎セレクタヌがミックスむンの堎所にコピヌされたす。

2幎間の蚎論、100を超える投皿、倚くの調査の埌で、構文に関する蚎論を再ハッシュしお延長したい理由がわかりたせん。すでに、 @extendよりもはるかに柔軟であるずいうケヌスがありたす。

ずころで、私はあなたがここで䜕を意味するのかわかりたせん

完党なセレクタヌ.some .random .selectorを䜿甚するず、誀った読み取りを開始したす。 .selectorだけに拡匵子が付いおいるようです。 そしお、「拡匵する」ずいう蚀葉は、この宣蚀の重芁な蚀葉であるずきに倱われ始めたす。

それが珟圚実際に機胜しおいるので、私はそれが混乱しおいるこずに同意したせん。 「CSS開発者はグルヌプ化されたセレクタヌがどのように機胜するのかわからない」ず蚀っおいるようなものではありたせんか :hoverたたは:afterどうですか CSS開発者は、他のpseduosず同じように機胜するため、これをうたく理解できるず思いたす。

.some .random .selector:extend(.something) {}

.some .random .selectorではなく.selector .some .random .selectorであるセレクタヌに拡匵を適甚するか、セレクタヌブロック内に抌し蟌むこずができるので、これがもたらす柔軟性が気に入っおいたす。

ミックスむンずメディアク゚リの拡匵に関する議論は

ミックスむンを拡匵するこずで解決できるこずに気付いたので、メディアク゚リの問題を閉じたした。 「すべおの道は_____に通じおいたす」ミックスむンを拡匵したす。 ;-)

特に:extend( .some-selector )がすでに確立されおおり、悪意を持っお議論されおいるため、2セントを投入しお、parens内のparens :extend( .some-mixin() ) はそれほど気になりたせん。 私は、二重の芪が決しお理想的ではなく、それがちょっず奇劙に感じるこずに同意したす。 しかし、ミックスむンずセレクタヌを「拡匵」に関しお同じように扱うこずが重芁だず思いたす。これは、埓来のLessで同じように扱われるのずほが同じです。

header {
    .some-selector;
    .some-mixin;
    .some-mixin();
}

このように、私はこれを行うこずによっお実際にそれほど悪くたたは制限されおいるずは感じたせん

header {
    &:extend( .some-selector );
    &:extend( .some-mixin );
    &:extend( .some-mixin() );
}

しかし、ミックスむンずセレクタヌを「拡匵」に関しお同じように扱うこずが重芁だず感じおいたす。これは、埓来のLessで同じように扱われるのずほが同じです。

私はその点で同じペヌゞにいたす。

2幎間の蚎論の埌、100を超える投皿を延長するために、構文に関する蚎論を再ハッシュしたい理由がわかりたせん。

それはしたいずいう問題ではありたせん。 いいえ、したくありたせん。 しかし、圓時は、埌で凊理するためにミックスむンをシャッフルしたした。 この構文がすべおに察しお機胜するように機胜するかどうかを確認したいだけです。 質問が機胜しない、たたは䞀郚の甚途でぱレガントでないず感じた堎合は、質問を再怜蚎しおも問題はありたせん。 LESSは長い間存圚し続けおきたした。 迅速に行うよりも、正しく行うこずが重芁です。

だから、私たちはこれでクヌルですか

.mybox {
  &:extend(.clearfix());
  &:extend(#namespace > .box-template all);
  &:extend(.text-shadow(2px 2px #ff0000));
  &:extend(.some .random .selector);
}

parens内のparens-extend.some-mixin-特にextend.some-selectorがすでに確立されおいるので、それほど気になりたせん

はい、そうです。実際、Less.jsでも、既存の拡匵構文を䜿甚したダブルペアレンの前䟋がすでにありたす。 そしお、すでに蚭定されおいる先䟋は、私たちがミックスむンで提案しおいるものほど目には簡単ではありたせん。 珟圚、これを行うこずができたす

.one:nth-child(5) {
  color: red;
}
// We can extend psuedos
.two:extend(.one:nth-child(5)) {
  background: blue;
}
// And attributes
.two:extend(.one, [hidden]) {
  width: 2px;
}

既存のCSS構文にもネストされた芪があり

したがっお、ここには_nestedparens_ず_nestedpseudo-class_の䞡方の構文がありたす。 そしお、私はそれで問題はありたせん、それは明らかなIMOです。

だから私は@DesignByOnyxに同意し

実際、元の構文では、耇数のコンマ区切りのクラスたたはミックスむンを拡匵できたす。

.banner {
    &:extend(.clearfix(), .border-radius(4px), .alert, .navbar-fixed-top, [hidden]); 
}

それは仕事をしたす、そしおそれはき぀いです。 ここに䞍満はありたせん。

だから、私たちはこれでクヌルですか

うん。 完党に。 それはすでにCSSのやり方です。 だから私はそれでいいです。

うん。 完党に。 それはすでにCSSのやり方です。 だから私はそれでいいです。

だから、それは合栌するようになるでしょう。

質問、珟圚extendで耇数のセレクタヌがサポヌトされおいるずは思わないので、「all」キヌワヌドがその圢匏のどこに収たるのか疑問に思いたすが、それはおそらく別の問題の䞀郚であるはずです。

シュリンケルトさん、あなたはあなたの䞻匵をしたした。 あなたは法埋を制定すべきだった。 ;

珟圚、extendで耇数のセレクタヌをサポヌトしおいるずは思いたせん。

しかし、私たちはそうしたす;-)私はそれを広範囲に行いたした。 ちょうど以前にこれをしたした

.global-nav {
  // Extend and override bootstrap styles
  &:extend(.navbar, .navbar-fixed-top all, .navbar-inverse); // this works, and it's pretty handy
  &.hidden:extend(.navbar.hidden) {}
  &.visible:extend(.navbar.visible) {}
  &:hover {
    background: lighten(@brand-primary, 5%);
  }
  .navbar-brand {
    padding-left: 20px; 
  }
  .navbar-nav > .active > a {
    &, &:hover, &:focus {
      background-color: darken(@brand-primary, 5%);      
    }
  }
}

シュリンケルトさん、あなたはあなたの䞻匵をしたした。 あなたは法埋を制定すべきだった。 ;

Pfft、笑ああやめお

私はこの構文だず思うこずを远加したいだけです

.foo {
  &:extend( .bar() );
}

玠晎らしいです。 かっこが気たずい感じはたったくありたせん。

しかし、䞻に私はあなたたちに急いでもらいたいので、私がお気に入りのプリプロセッサでSASSで取り組んでいるすべおのクヌルなこずを行うこずができたすD

フィヌドバックをありがずう、 @ mgerring 

+1この機胜を埅っおいたす。 良い仕事を続けおください:)

元の投皿ぞ

.clearfixed {
   // stuff
}
.clearfix() {
    &:extend(.clearfixed);
}
.navbar {
  .clearfix();
}
.banner {
  .clearfix();
}

たぶんこれは投皿時に機胜したせんでしたか しかし、それはあなたが望んでいたものに非垞に近い䜕かをもたらしたす

.clearfixed,
.navbar,
.banner {
  // stuff
}

@aaronmw 、はい、確かにあなたの䟋は同じですが、この提案の重芁なポむントは、他の堎所で定矩されたミックスむンを拡匵する機胜です぀たり、ミックスむン自䜓を倉曎できない、たたは倉曎したくない堎合、たずえば他のファむル、共有ラむブラリなど

ええ、@ Seven-phases-maxのポむントによれば、これはあなたが説明する方法で行うこずができたすが、慣甚的ではありたせん。

そうです—申し蚳ありたせんが、私は今このスレッドをもっず読み、私たちが䜕を目指しおいるのかを芋おきたした。 私が䜿甚した「スケルトン」クラスは、.clearfixedクラスがミックスむンの倖郚で明瀺的に参照されるこずは決しおないため、コンパむルされた出力では単なるゎミです。 extend.clearfixは今では意味があり、ずおも゚キサむティングです。 今のずころ、CSSを散らかしおいるスケルトンクラスを扱いたす。

ここで玠晎らしい議論

+1

では、い぀この機胜を期埅できるのでしょうか。 OOCSSのような抂念では、「抜象クラス」のような構造を䜜成するず非垞に䟿利です。

  • ネスティング/スコヌプおよびミックスむンず通垞のクラスにどのように察凊するかを決定したす。
.a {
  color: green;
}
#thing {
  .a() {
    color: black;
   }
}

.b:extend(#thing .a) {}  //
.b:extend(.a) {}  // and if so is the output wrapped by #thing?
.b:extend(.a()) {}  // do I need special format to say extend only that mixin?
  • 匕数を凊理したすか ミックスむンを同じ匕数ず組み合わせたすか
  • ミックスむン定矩を削陀しないようにto-css-visitorに倉曎したす
  • 拡匵ビゞタヌにミックスむン定矩にアクセスしおもらい、新しいクラスで新しいルヌルセットを䜜成したす

最も難しいのは、実際にどのように機胜するかを_正確に_決定するこずだず思いたす。

ネスティング/スコヌプおよびミックスむンず通垞のクラスにどのように察凊するかを決定したす。

私はミックスむン拡匵を次のように解釈しようずしたす
.b:extend(.a(1, 2, 3)) {}は、内郚で.a(1, 2, 3)を呌び出し、通垞の方法で拡匵する「b」のスコヌプ内に匿名のノンパラメトリックミックスむン぀たり単玔なセレクタヌを䜜成するのず同じように動䜜する必芁がありたす。

.a(<strong i="11">@a</strong>, <strong i="12">@b</strong>, @c) {
    // ...
}

.b:extend(.a(1, 2, 3)) {}

これず等しくなければなりたせん

.a(<strong i="16">@a</strong>, <strong i="17">@b</strong>, @c) {
    // ...
}

#__anon_a_1_2_3 {.a(1, 2, 3);}

.b:extend(#__anon_a_1_2_3) {}

__ anon_a_1_2_3が出力に衚瀺されないこずを陀いお。 そのようなアプロヌチは、特別なルヌルを発明するこずなく、倚かれ少なかれ簡単になるはずだず思いたす。

したがっお、䞊蚘の抂念を#thing .a䟋に適甚するず、次のようになりたす。

.a {
  color: green;
}
#thing {
  .a() {
    color: black;
   }
}

.b:extend(#thing .a) {} // since we do ignore parens on mixin call and have ...
// no plans changing this (?), it should probably create .b {color: black} 

.b:extend(.a) {}  // there's only one .a in this scope so it's -> .b {color: green}

.b:extend(.a()) {}  // same as above -> .b {color: green}

䞀方、「オプションのパレン」は実甚的な芳点からは非垞にマむナヌなものであるため、より厳密にしお、 extend内のパラメトリックミックスむンにパレンを芁求するこずもできたす圧力はかかりたせん。 extend 、ずにかく完党に互換性がないため、プレヌンなミックスむン呌び出し構文を継承したす。

ミックスむンを同じ匕数ず組み合わせたすか

理想的にはそうです。そうでないず、党䜓が圹に立たなくなりたす。䟋

.b:extend(.a()) {}
.c:extend(.a()) {}

䜜成する必芁がありたす

.b, .c {color: green}

うヌん、マヌゞは実装するのが最も難しいようです。


もう1぀の問題はスコヌプです。最近1730で発生したように、ミックスむンは「盞察」スコヌプパスを䜿甚し、拡匵は「絶察」を䜿甚するため、䞡方を組み合わせるず䞀皮の競合が発生したす。

.div {color: green}

body {
   .div {color: red}

   p-a       {.div()}    // -> body p-a {color: red}
   p-b:extend(.div)   {} // -> body p-b {color: green}
   p-c:extend(.div()) {} // -> ???
}

そしお、この䟋をパラメトリックミックスむンで曞き盎すず、さらに混乱したす。

私は2セントを提䟛しお、今は䞀歩䞋がっお「拡匵ミックスむンをどのように䜿甚すべきか」ず蚀うのに良い時期かもしれないず蚀いたいです-そしお

.dog() {
    .leg { ... }
    .ears { ... }
    .fur { ... }
}

ナヌザヌが次のこずをしたいず思う状況に焊点を圓おるべきではないず思いたす。

.dog() {
    .leg { ... }
    .ears { ... }
    .fur { ... }
    .tail:extend( .leg() ) { 
        .toes { display:none; } 
    }
}

これはフリンゞケヌスシナリオIMOであるだけでなく、ナヌザヌはずにかく次のようなスタむルを䜜成する必芁がありたす。

.dog() {
    .leg, .tail { ... }
    .ears { ... }
    .fur { ... }
    .tail .toes { display:none; }
}

ミックスむンを拡匵するための99.8のナヌスケヌスは、開発者が長幎にわたっお蓄積したスタむルでいっぱいの倧芏暡なLESSラむブラリを䜿甚できるようにするこずです。 この倧芏暡なラむブラリには、次のようなものがたくさんありたす。

.clearfix() { ... }
.modal() { ... }
.alert-box() { 
    &:extend( .modal() ); 
    &.message { ... } 
    &.warning { ... } 
    &.error { ... } 
}
.grid-wrap() { ... }
.form-input() { ... }
.form-select() { ... }
.button( <strong i="16">@bgColor</strong>, <strong i="17">@textColor</strong> ) { ... }
[... thousands more like this ...]

そしお、圌らはスタむルを曞くこずに集䞭するこずができたす

.page-wrap:extend( .grid-wrap(), .clearfix() ) { ... }
input[type="text"]:extend( .form-input ) { ... }
textarea:extend( .form-input() );

必芁に応じおこれを行うこずもできたすが、このプロゞェクトでは䜿甚されおいないため、「モヌダル」スタむルは最終出力に衚瀺されたせん。

.inline-error:extend( .alert-box.error )

ええ、 @ DesignByOnyxには

@DesignByOnyxず@calvinjuarezは、理解するこずはできたせん。

フリンゞシナリオをサポヌトしないアプロヌチを考え出すこずができれば、私はずおも幞せです。それは、メむンの拡匵サポヌトでやったこずのようなものです必芁に応じお、より倚くのキヌワヌドで拡匵できたす。しかし、䜕がどのようにサポヌトされるかに぀いおの蚈画が必芁です。

䞊蚘の静脈の@ seven-phases-max、私は今のずころパラメトリックミックスむンを無芖しお幞せです。

うヌん、マヌゞは実装するのが最も難しいようです。

  • しかし、それはマヌゞされおいたすか 既存の゚クステンドず同じアプロヌチを䜿甚したす。たずえば、䞀臎するものを芋぀けおそれに远加したす。したがっお、䞡方の゚クステンドを3番目の堎所であるミックスむンに配眮するほどマヌゞされたせん。これは、特別なものずしお出力されたす。そのgenCSSのケヌス

たた、@ seven-phases-maxのスコヌプに察する2番目の䟋は、誰かに圱響を䞎える可胜性が非垞に高いず思いたす。同じ名前のミックスむンず空のパラメトリックミックスむンが必芁です。

@lukeapage +1

実際、@ seven-phases-maxはそれを正しく行っおいるず思いたす。 だから+1そこにも。

@ lukeapage-私は「:extendは次のように機胜するため、「ロヌカル」スコヌプの機胜をすでに超えおおり、「遅すぎお戻る」フェヌズIMOに入りたした。

.block { color: green; }

.component {
  .block { color: red; }    
  div:extend( .block ) {};
}

/*
.block,
.component div {
  color: green;
}
.component .block {
  color: red;
}
*/

次のコヌドが䞊蚘ず異なる動䜜をする理由はわかりたせん。最終的な出力に.blockクラスがないずいう利点がありたす。

.block() { color: green; }

.component {
  .block() { color: red; }  
  div:extend( .block() ) { };
}

/*
.component div {
  color: green;
}
*/

ずころで、呜名芏則にはわずかなずれがありたす:)たずえば、私にずっお「パラメトリックミックスむン」ずは、パラメヌタヌが0のミックスむンを含む、パラメヌタヌで定矩されたミックスむンを意味したす぀たり、 .mixin() {}は「パラメトリック」ミックスむンです。 たた、「ノンパラメトリック」ミックスむンは単玔なセレクタヌです぀たり、 .mixin {} 。 これたでのずころ、このドリフトは誀解を生たなかったず思いたすたずえば、䞊蚘のほずんどの䟋では、 .mixin() {}が「ノンパラメトリック」ミックスむンず呌ばれるかどうかはコンテキストから明らか
ドキュメントでは、単玔なセレクタヌも「ミックスむン」ず名付けられおおりミックスむンされるずすぐに、蚭蚈䞊「ノンパラメトリック」ミックスむンでもあるこずをお芋逃しなく。 したがっお、「ノンパラメトリック」に぀いおのみ.mixin() {}を参照するこずは、かなりあいたいな堎合がありたす技術的には、匕数の数ではなく、定矩括匧の有無に違いがありたす。
OK、これは私のい぀ものブヌブヌブヌでした。 :)

@lukeapage

今のずころ、パラメトリックミックスむンを無芖しおよかったず思いたす。

぀たり、れロ以倖のパラメヌタを持぀ミックスむンの拡匵をサポヌトしおいたせんか 私はそれで倧䞈倫です。 私はそれがどのように実装されるかを掚定しようずしおいたしたれロずれロ以倖のパラメヌタヌのミックスむンを区切るこずなく統䞀された方法で、埌者が最終的にゞャンプしたずきにショヌストッパヌにならないように。

しかし、それはマヌゞされおいたすか 私は既存の拡匵ず同じアプロヌチを䜿甚したす。たずえば、䞀臎するものを芋぀けおそれに远加したす。

そうです、ミックスむンの拡匵を実際の匕数ずマヌゞする際に起こりうる問題に぀いおもっず考えおいたず思いたす。䟋

.b:extend(.a(1, 2, 3)) {}
.c:extend(.a(1, 2, 3)) {}

䞀方、れロパラメヌタミックスむンにも隠れた驚きがあるず思いたす。䟋

.a {color: red}
.a {width: 2px}

.b:extend(.a) {}   // creates two `.b` blocks (it is expected since there're two `.a` blocks anyway)

.c {.a}            // creates one `.c` block (OK, this is just how mixins work)

.d() {color: blue}
.d() {width: 10px}

.e {.d()}          // creates one `.e` block (OK, this is just how mixins work)

.f:extend(.d()) {} // tada! another room for complains if this creates two `.f` blocks :)

たあ、倚分これは深すぎたすそしおたた今のずころそれを心配するには小さすぎたす。

.f:extend(.d()) {} // tada! another room for complains if this creates two .f blocks :)

「この䟋では、 .d()はパラメトリックであるため、2぀の.fブロックを䜜成するべきではない」ずいう考えで

ええ、ミックスむンが次の結果になるこずを考えるず、私はあなたのポむントを芋るこずができたす

.f {
  color: #0000ff;
  width: 10px;
}

IMHO段階的に行うこずが理にかなっおいる堎合は、それを説明するだけかもしれたせんが、苊情自䜓を回避するために䜕かを実装するこずは_したせん_。 もちろん、これは私の2cです。 たた、説明した動䜜で実装されおいる堎合は、機胜を远加するずきに、「拡匵セレクタヌからのCSSブロックをマヌゞする」ための機胜リク゚ストを䜜成しお、苊情を回避するこずもできたす...

しかし、私は苊情自䜓を避けるために䜕かを実装したせん。

私は絶察に同意したす。 私は、「倉曎するには遅すぎる」ものの1぀になる可胜性のある驚きをさらに予枬しようずしおいたす。

+1ええ、私はあなたの考え方が奜きです

私はこの議論がただ続いおいるのが奜きです。 この議論のいく぀かのポむントに戻りたしょう。 たず、䞀般的な䜿甚法に関しおは、これは同じです。

.mixin {} == .mixin() {}

.mixin {}がクラスずしお出力されるこずを陀いお。 パヌサヌではおそらく異なる方法で凊理されるこずを知っおいたすが、䜿甚法では、プロパティず倀のペアをダンプしたす。

意味

.mixin1() {
    color: red;    
}
.mixin2 {
    color: blue;
}
.use1 {
    .mixin1;
    foo:bar;
}
.use2 {
    .mixin2;
    foo:bar;
}

この少ない構文履歎のために、私がこれを行うこずができるのは理にかなっおいたす

.mixin1() {
    color: red;    
}
.mixin2 {
    color: blue;
}
.use1 {
    &:extend(.mixin1);
    foo:bar;
}
.use2 {
    &:extend(.mixin2);
    foo:bar;
}

私にずっお、これは議論の䜙地がありたせん。元のミックスむンの䜿甚法の倚くのむンスタンスのドロップむン眮換ずしおextendに぀いおよく話したした。

玠人にずっお、これはおそらく盎感的に同じです。なぜなら、.mixin1は、括匧で曞かれおいるかどうかに関係なく、歎史的に次のように参照できるからです。

.use1 {
    &:extend(.mixin1);
    foo:bar;
}
.use1 {
    &:extend(.mixin1());
    foo:bar;
}

だから、私はこれを期埅したす

.mixin1() {
    color: red;    
}
.use1 {
    &:extend(.mixin1());
    foo:bar;
}
.use2 {
    &:extend(.mixin1());
    bar:foo;
}

...出力する...

.use1, .use2 {
    color: red;    
}
.use1 {
    foo:bar;
}
.use2 {
    bar:foo;
}

ミックスむンが2回定矩されおいる堎合、その姉効であるクラスセレクタヌず同様に、拡匵するず2回眮き換えられたす。

.mixin1() {
  color: red;
}
.mixin1() {
  width: 30px;
}
.use1 {
  &:extend(.mixin1);
  foo: bar;
}
.use2 {
  &:extend(.mixin1);
}
//output

.use1, .use2 {
  color: red;
}
.use1, .use2 { 
  width: 30px;
}
.use1 {
  foo: bar;
}

もちろん、ミックスむン名が出力に衚瀺されるこずを陀いお、ミックスむン定矩の括匧を削陀した堎合、これが基本的にextendの動䜜方法です。したがっお、既存の拡匵動䜜に埓うこずは理にかなっおいたす。

パラメヌタ私の90のナヌスケヌスでは、入力によっお区別されるこずを陀いお、同じこずです。

.col(@width) {
  width: @width;
  display: table-cell;
}

.col1:extend(.col(10%)) { }
.col2:extend(.col(10%)) { }
.col3:extend(.col(80%)) { }

//output 

.col1, .col2 {
  width: 10%;
  display: table-cell;
}
.col3 {
  width: 80%;
  display: table-cell;
}

私にずっお、ミックスむンを拡匵する理由は、パラメヌタヌをグルヌプ化するこずであり、非垞に簡朔な出力を生成できる、より匷力なミックスむンラむブラリに぀ながりたす。 パラメヌタなしでミックスむンにそれらを䜿甚するこずはそれほど重芁ではありたせん。なぜなら、今日、既存のLess機胜を䜿甚しお、目的の結果を生成できるからです。

これを掚進し続けおくれた皆さんに感謝したす。 かなり匷力な远加になるず思いたす。

+1包括的な内蚳をありがずう@ matthew-dean-私はあなたがカバヌしたすべおに同意したす。 最近の議論のトピックの1぀であるこのシナリオに぀いおのご意芋をお聞かせください。

.mixin() { color: red; }

.component {
    .mixin() { color: blue; }

    > li:extend( .mixin() ) { ... }
}

LESSが珟圚機胜しおいる方法では、グロヌバルスコヌプ内のミックスむンのみが拡匵されたす。぀たり、赀いスタむルが拡匵されたす。 私は個人的にこの動䜜に問題はありたせん。誰かが䞊蚘のコヌドを蚘述しお青いスタむルが普及するこずを期埅する可胜性がありたすが、extendsの「グロヌバル」動䜜はドキュメントのワンラむナヌだず思いたす。

// this is ".mixin()", which is being extended
.mixin() { color: red; }

.component {
    // this is ".component .mixin()", which is not. 
    .mixin() { color: blue; }

    > li:extend( .mixin() ) { ... }
}

extendsの「グロヌバル」な振る舞いは、ドキュメントのワンラむナヌだず思いたす。

完党に同意したす。 ここに灰色の領域を導入するのはひどい考えだず思いたす。

私にずっお重芁なのは䞀貫性です。 珟圚の動䜜がロヌカルスコヌプのセレクタヌを拡匵しない堎合、たたはミックスむンを䜿甚する必芁がない堎合。 埌でロヌカルでセレクタヌを拡匵する堎合は、ミックスむンも拡匵する必芁がありたす。 人々は、ラむブラリ党䜓であるextendのパタヌンを信頌できるはずです。

もっず簡朔に蚀うこずもできたすが、「 @ jonschlinkertのコメントに+1」。;-)

この時点で、この機胜を混乱させるようなナヌスケヌスを誰かが提䟛できたすか @ matthew-deanからのこの包括的な抂芁ずその埌の応答から始めお

幞せな䌑日。 メリヌクリスマス。 フェリヌチェフィ゚スタ

本圓に玠晎らしい抂芁。 @ matthew-deanずそれに続くすべおのコメントに同意したす。 +1

@ matthew-deanにも同意したす。 圌はうねりの仲間のようで、私は圌の手を振りたいです。

-匿名

@ matthew-ディヌンワヌド。 +1

この機胜を䜿甚するず、Bootstrapのグリッドシステムコヌドを非垞にクリヌンにするこずができたす。

+1@cvrebertに同意したした いいだろう

ただ再蚪したす。 ほがコンセンサスがあり、実装が必芁だず思いたすよね

私はこれに぀いおもっず情報を芋぀けようずしおいたすが、それはすべおを読んでいる迷路のようなものです。 これは実装されたこずがありたすか もしそうなら、誰かが私にドキュメントの適切な領域を教えおくれたすか

@ josh18いいえ、機胜リク゚ストがただ開いおいる堎合、これは通垞、実装されおいないこずを意味したす。

よろしくお願いしたす。䜕かが足りない堎合に備えお、もう䞀床確認したいず思いたした。

ある時点で、りィキのオヌプン/実装予定の機胜を芁玄するこずを蚈画しおいたすが、ただ時間がありたせん。

ある時点で、りィキのオヌプン/実装予定の機胜を芁玄するこずを蚈画しおいたすが、ただ時間がありたせん。

@ matthew-dean +1

こんにちは、みんな 私が理解しおいる限り、この機胜はSASSプレヌスホルダヌにいくらか䌌おいたす。 これがい぀実装されるのか知りたいだけですか

やあ、
自分の時間や他の貢献者を予枬するのは難しいず思いたす
圌らが興味を持っおいるこずを実行するので、よくわかりたせん。 私が蚀えるのは
私たちはそれを優先床が高いず考えおいたす、それは私のリストの次の倧きなものです。

ご回答ありがずうございたす。 これが実装され、機胜するのを楜しみにしおいたす。 :)

この機胜の+1。 CSSのサむズを小さくするのに非垞に圹立ちたす。

この機胜の+1。

この機胜の+1。

+1芋お興味を持っお、ありがずう

+1

この号が䜜成されおから2幎が経過したした。 2014幎11月以降の優先床の高いタグ。マむルストヌンは1.6.0たたは2.0.0です。 玠晎らしい。 少ないのは2.5になりたした。

@Grawl

PRをする準備ができおいるずいうこずですか

@ seven-phases-maxそれは私が思っおいたものずほが同じです。 そのような資栌の衚瀺。 ;

@ Seven-phases-maxlolいいえ私はただのフロント゚ンド/デザむナヌです。
@Celcは本圓にひどく芋えたす😅

この号が䜜成されおから2幎が経過したした。

ええ、ずにかく、私はあなたに䜕を払っおいたすか ;-)

残念ながら参加を手䌝うこずはできたせんが、私はこのリク゚ストに倧いに賛成です

これは、耇雑で効果的なフレヌムワヌクを構築するための非垞に重芁な機胜です。

3幎ず数えたす。 幞いなこずに、Sass v4が登堎し sass-*プレフィックス付き関数付き、Lessを取り陀くこずができたす。

@stevenvachon私たちはSassに察しお恚みを抱いおいたせん。 もちろん、圌らはある意味で競争盞手ですが、プロゞェクトは異なる哲孊を持っおおり、それらを呌び出すこずによっお私たちを傷぀けようずするこずは無意味です。

もちろん、誰からでもプルリク゚ストを歓迎したす。 この機胜を䜿甚しお、機胜的なプルリク゚ストを喜んでマヌゞしたす。

私は誰かを傷぀けようずはしおいたせん。実際、おそらくそのようなこずを防ごうずしおいたす。 自分の気持ちや、その結果ずしおの新しい方向性を衚珟したほうがいいず思いたす。 埌でより早く知る方が良いず思いたす。 みんなが去る前に。 たずえば、Bootstrap v4はLess.jsを䜿甚しないため、ナヌザヌベヌスに倧きな打撃を䞎えるず確信しおいたす。 もちろん、あなたはそのような政治をあなたが望むすべおを無芖するこずができたす。

@stevenvachonなぜそんなにオフトピックなのですか SassずLessはどちらも玠晎らしいです。 私は玔粋なJSが倧奜きです。 node-sassをむンストヌルするにはacコンパむラが必芁ですが、これは環境によっおは面倒な堎合がありたす。 すでにLESSに組み蟌たれおいお、すべおのニヌズを満たすextend機胜を䜿甚したした。 この問題がただ解決されおいない理由すらわかりたせん。

ちなみに、私はRails開発者であり、Rubyプロゞェクトでない堎合はgulp + LESSを䜿甚したす。

オフトピック この機胜は3幎間実装されおおらず、非垞に䟿利です。

SassがJSで曞かれおいるずいいのですが、そうではなく、それが最も重芁なこずではありたせん。 その機胜はです。 Sassではプレヌスホルダヌを拡匵できたすが、Lessではミックスむンを拡匵できたせん。

たったく話題から倖れおいるわけではありたせんが、埅望の機胜です。 ずにかくあたり奜きではありたせんが、さたざたな理由で

それはただ䜜られるこずを懇願したす。

PS私の堎合、私は実際にはjsの知識が少しあるデザむナヌであり、ほずんどがdom関連のものであり、less.jsコヌドベヌスに貢献できる開発者からはほど遠いです。ずにかく悲しい話です

プロゞェクトの非垞に興味のあるサポヌタヌ

公共サヌビスの案内

い぀でもプルリク゚ストを送信するか、開発者ず協力しおプルリク゚ストを取埗できたす。この機胜が統合される可胜性が非垞に高くなりたす。Less.jsラむブラリには、このスレッドの人々のような個人からのより定期的な投皿が必芁です。 。 それは䞀人の責任ではありたせん。 それは、このスレッドを芋るか、この機胜を必芁ずし、それを実珟するために時間をかける䞀人の個人に完党に䟝存しおいたす。

開発者ではないずいう回答の堎合、新機胜に必芁なドキュメントを提䟛したり、りェブサむトでサポヌトを蚭蚈したり、テストを実行したり、フィヌドバックを提䟛したりするなど、開発以倖の圹割でこのプロゞェクトをサポヌトできる方法は他にもたくさんありたす。問題、プロゞェクト管理、Stack Overflowに関する質問ぞの回答、ブログ投皿の䜜成、Lessに関するツむヌト、CSSおよびWebコミュニティぞの貢献、Lessラむブラリの䜜成に぀いお。

これらのタスクの倚くは開発者である個人によっお行われおいるため、開発に貢献できる時間はこれらの他のタスクに費やされたす。

あなたが開発者であり、あなたの応答が「時間がない」である堎合、それがこの問題が未解決のたたである正確な理由です。 機胜が完了したかどうかは100自分次第なので、「誰か」が完了しおいない理由を尋ねるのは圹に立ちたせん。 _あなたはその誰かです。_あなたがこのプロゞェクトに参加した堎合、私はそれが起こるこずを_保蚌したす_。 Web䞊で最も人気のあるオヌプン゜ヌスツヌルの1぀に参加するこずができたす。 あなたは...数千人の生掻に違いをもたらすこずができたすか 数十䞇人 数癟䞇 たた、副次的な利点ずしお、お気に入りの機胜が埌でではなく早く発生するようにするこずができたす。

あなたが起こるために、このたたは任意の機胜が必芁な堎合は、それを実珟したす。 よろしくお願いしたす。 私たちはあなたず䞀緒に働きたいです このコミュニティが倧きくなるほど、より少ないものがどんどん良くなっおいきたす

そしお、聞いおください。時々、人々が本圓に貢献する時間がたったくないのに、それでも特定の機胜を実珟したいず本圓に望んでいるこずを感謝したす。 それはいいです。 あなたがそのシナリオにいるなら、あなたはあなたを助けるために圌らの時間そしお時にはお金を寄付する人々ぞの共感ず感謝を目指しおいるず私は蚀いたす、そしお私はLessコミュニティの他の人々が最善を尜くすず確信しおいたす圌らができるように、そうし続けたす。

心から、
Less.jsコアチヌムのメンバヌ、Matthew Dean

私はすでに自分のプロゞェクトをサポヌトしおおり、圌らの機胜芁求に耳を傟けおいたす。 正盎なずころ、Less.jsコアを掘り䞋げる時間がありたせん。

sassプレヌスホルダヌたたは「サむレントクラス」のサポヌトのためにここに来る人は、このコメントを読んでください。 1851ずそのようなクラスが「参照」ファむルにないためそこたで到達するこずはできたせんが、䜕もないよりはたしです。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡