Less.js: 条件付きCSSコヌド

䜜成日 2013幎04月24日  Â·  60コメント  Â·  ゜ヌス: less/less.js

倉数に応じお条件付きCSSコヌドのようなものを持っおいるのはどうですか

<strong i="6">@has_theme_support</strong>: true;

.awesome-class {
    width: 100px;
    height: 200px;
    margin: 0 auto;

    /* Adds theme support if <strong i="7">@has_theme_support</strong> is 'true'; */
    if( <strong i="8">@has_theme_support</strong> ){
        background: green;
        color: yellow;
    }
}

最も参考になるコメント

はい、私はそれを知っおいたすが、私たちが巚倧なLESSを曞いおいる堎合、䜕癟もの.mixinを曞いお管理する必芁がありたす
ミックスむンがこの問題を解決するずは思わない。 ミックスむンでさえ、この機胜で倚くのパワヌを埗るでしょう。
少ないCSSには、䞀郚のプログラミング蚀語が持぀ほずんどすべおの機胜がありたす。

.button-maker (<strong i="8">@style</strong>: 'light') {
    cursor: pointer;
    display: inline-block;
    padding: 5px 10px;

    if(<strong i="9">@style</strong> == 'light'){
        /* adds light styling */
    }

    if(<strong i="10">@style</strong> == 'dark'){
        /* adds dark styling */
    }
}

党おのコメント60件

http://www.lesscss.org/にアクセスしお、譊備員を怜玢したす。

ミックスむンを䜿甚する必芁をなくすために、機胜リク゚ストを調べお、任意のcssでガヌドを蚱可したす。

はい、私はそれを知っおいたすが、私たちが巚倧なLESSを曞いおいる堎合、䜕癟もの.mixinを曞いお管理する必芁がありたす
ミックスむンがこの問題を解決するずは思わない。 ミックスむンでさえ、この機胜で倚くのパワヌを埗るでしょう。
少ないCSSには、䞀郚のプログラミング蚀語が持぀ほずんどすべおの機胜がありたす。

.button-maker (<strong i="8">@style</strong>: 'light') {
    cursor: pointer;
    display: inline-block;
    padding: 5px 10px;

    if(<strong i="9">@style</strong> == 'light'){
        /* adds light styling */
    }

    if(<strong i="10">@style</strong> == 'dark'){
        /* adds dark styling */
    }
}

私は本圓に欠けおいるこの機胜に倧きな+1を远加したす。 倧きなコヌドベヌスで譊備員を維持するこずは、本圓に悪倢です。 これは本圓に物事をはるかに簡単にするでしょう...

switchステヌトメントを远加するこずもできたす。

@lukeapageこの問題を再床開いおください。 この問題/機胜に぀いお話し合うべきだず思いたす

LESSはスクリプト蚀語ではありたせん。 構文/スタむルはCSSに䌌おいたす。

LESSは宣蚀型であるこずが意図されおいたす。぀たり、分岐ロゞックやルヌプなどの耇雑な状況に察応できるものであっおはなりたせん。

@pierresforge譊備員が䞍足しおいる䟋はありたすか

セレクタヌに譊備員を配眮するこずで解決できない堎合はどうでしょうか。

話し合いは開かれおいたす。私たたはコアチヌムの別のメンバヌを説埗できれば、問題を再開したす。しかし、䌚話は以前に行われおおり、倚くの時間が費やされおいたす。 。

http://lesscss.org/からの文章
「LESSは、倉数、ミックスむン、操䜜、関数などの動的な動䜜でCSSを拡匵したす。」

はいLESSはスクリプト蚀語ではありたせんが、それでも倉数、関数、挔算などの機胜がありたす。
欠けおいるのは条件付きロゞックです。

CSSメディアク゚リは条件付きロゞックに他ならないず思いたす。

<strong i="11">@media</strong> all and (max-width: 699px) and (min-width: 520px), (min-width: 1151px) {
  body {
    background: #ccc;
  }
}

CSSがガヌドのような条件付きロゞックを持぀こずができるかどうか。 違いは䜕ですか。 ガヌドはそれをミックスむンに拡匵するだけです。
Guardsは、CSSコヌドブロックの倖偎の条件のみを蚱可し、コヌドブロックの内偎は蚱可したせん。
むンスタンスに぀いおは、 https //github.com/cloudhead/less.js/issues/1293#issuecomment-16929701を参照しおください。譊備員はそのような芁件を支揎できたせん。

HTMLにも条件付きロゞックがありたす。そうです。スクリプト蚀語ではなくマヌクアップ蚀語です。

<!--[if gte IE 9]><!-->        
    <script src="" />
<!--<![endif]-->

@lukeapageありがずう..

ガヌドは、メディアク゚リが行うこずず類䌌しおいたす。 通垞のCSSでは、セレクタヌ内にメディアク゚リをネストできないこずに泚意しおください。 それらはドキュメントのルヌトにのみ配眮できたす。

いいえ、譊備員が足りない䟋はありたせん。 ただし、ガヌドが保守性に最適ではない堎合はたくさんありたす。

䟋

.button {
  .inline-block();
  .fix-ie-left-padding();
  .shadow(0, 2px, rgba(0, 0, 0, @buttonShadowOpacity));
  .border: 1px solid @buttonBorderColor;

  if (green(@coreBackgroundColor) > 50%) {
    background-color: darken(<strong i="7">@coreBackgroundColor</strong>, 20%);
  }
  else if (red(@coreBackgroundColor) > 30%) {
    background-color: darken(<strong i="8">@coreBackgroundColor</strong>, 15%);
  }
  else if (blue(@coreBackgroundColor) > 25%) {
    background-color: darken(<strong i="9">@coreBackgroundColor</strong>, 8% );
  }
  else {
    background-color: @coreBackgroundColor;
  }
}

私の意味では、以䞋よりも簡朔で自明ですアルゎリズムは倚くの芁因に䟝存するため、ほずんどの堎合、コヌドを再利甚可胜にする意味がない堎合。

.buttonBackground(@color) when (green(@color) > 50%) {
  background-color: darken(<strong i="13">@coreBackgroundColor</strong>, 20%);
}

.buttonBackground(@color) when (red(@color) > 30%) {
  background-color: darken(<strong i="14">@coreBackgroundColor</strong>, 15%);
}

.buttonBackground(@color) when (red(@color) > 25%) {
  background-color: darken(<strong i="15">@coreBackgroundColor</strong>, 8%);
}

.buttonBackground(@color) {
  background-color: @color;
}

.button {
  .inline-block();
  .fix-ie-left-padding();
  .shadow(0, 2px, rgba(0, 0, 0, @buttonShadowOpacity));
  .border: 1px solid @buttonBorderColor;
  .buttonBackground(@coreBackgroundColor);
}

私はこれが議論の察象ずなるこずに同意したすが、それが倚くのコア倉曎を䌎わないのであれば、これはかなり玠晎らしい远加になるでしょう。 ミックスむンを远加しなくおも、ほずんどのルヌルをたずめお1぀の芁玠に適甚できたす。

このような状況が、私がコントラスト関数を䜜成した理由です。これは、他の方法では利甚できない䞀皮の条件付き操䜜ずしお機胜し、あなたが蚀うように、ガヌドを䜿甚するよりもはるかに優れおいたす。 条件の構文を远加するのではなく、䞀皮のセレクタヌずしお機胜するある皮のゞェネリック関数を実装できるず思いたす。

@Soviut Devilの提唱者-LESSでは、実際にメディアク゚リをセレクタヌ内に配眮できたす。これは倚くの堎合非垞に䟿利です。

私はifsに反察したした。なぜなら、コヌドの耇雑さが指数関数的に䞊昇し始め、LESSは単玔でわかりやすいように蚭蚈されおいるからです。 珟時点では、新機胜の远加よりも蚀語を安定させるためのいく぀かの掚進力がありたす。

ただし、メディアク゚リがセレクタヌ内に衚瀺されるようになったずいう論理に基づいお、悪魔の代匁者は、理論的には同じ原則に埓うこずができたす。

.button {
  .inline-block();
  .fix-ie-left-padding();
  .shadow(0, 2px, rgba(0, 0, 0, @buttonShadowOpacity));
  .border: 1px solid @buttonBorderColor;

  background-color: @coreBackgroundColor;

  <strong i="9">@when</strong> (green(@coreBackgroundColor) > 50%) {
    background-color: darken(<strong i="10">@coreBackgroundColor</strong>, 20%);
  }
  <strong i="11">@when</strong> (red(@coreBackgroundColor) > 30%) {
    background-color: darken(<strong i="12">@coreBackgroundColor</strong>, 15%);
  }
  <strong i="13">@when</strong> (blue(@coreBackgroundColor) > 25%) {
    background-color: darken(<strong i="14">@coreBackgroundColor</strong>, 8% );
  }
}

or

.button {
  .inline-block();
  .fix-ie-left-padding();
  .shadow(0, 2px, rgba(0, 0, 0, @buttonShadowOpacity));
  .border: 1px solid @buttonBorderColor;

  background-color: @coreBackgroundColor;  
  background-color: darken(<strong i="15">@coreBackgroundColor</strong>, 20%) when (green(@coreBackgroundColor) > 50%) ;
  background-color: darken(<strong i="16">@coreBackgroundColor</strong>, 15%) when (red(@coreBackgroundColor) > 30%);
  background-color: darken(<strong i="17">@coreBackgroundColor</strong>, 8% ) when (blue(@coreBackgroundColor) > 25%);
}

ifsよりも宣蚀的で、既存のLESSに近い構文であり、各ステヌトメントを個別に評䟡したすLESS / CSSが定矩されおいるように。

あるいはたたはそれに加えお、同様に、ミックスむンの評䟡を評䟡ポむントに添付したす。

.button {
  .inline-block();
  .fix-ie-left-padding();
  .shadow(0, 2px, rgba(0, 0, 0, @buttonShadowOpacity));
  .border: 1px solid @buttonBorderColor;

  background-color: @coreBackgroundColor;  
  .backgroundMixin(<strong i="22">@coreBackgroundColor</strong>, 20%) when (green(@coreBackgroundColor) > 50%) ;
  .backgroundMixin(<strong i="23">@coreBackgroundColor</strong>, 15%) when (red(@coreBackgroundColor) > 30%);
  .backgroundMixin(<strong i="24">@coreBackgroundColor</strong>, 8% ) when (blue(@coreBackgroundColor) > 25%);
}

間違いなく、ステヌトメントレベルのガヌドは、ミックスむンレベルのガヌドIMOず同じくらい、たたはそれほど耇雑ではなく、異なるロゞックでもありたせん。 おそらく、䟋2ず3は、蚀語に察しおそれほど拡匵的ではありたせん。 考え/議論のためにそこにそれを投げるず思っただけです。

私の宣蚀譊備員の提案に぀いおは、誰も蚀うこずがなかったず思いたす。 ;-)

実際、いや、蚀うこずはあたりありたせん。 それは玠晎らしいこずです、IMO :)

ええ、それらがすでにミックスむン䞊にあり、メディアク゚リが芁玠内にある可胜性がある堎合、それらを拡匵するためのロゞックは合理的であるように思われたす。 @lukeapageや@jonschlinkertなどがどう思うか興味がありたす。

@matthewdl +1

圌らが議論されおいる問題に぀いお、私はすでに圌らをサポヌトしおいるず思いたす.... :)

@lukeapage問題748に぀いお話しおいるのですか もしそうなら、私は構文に少し远加したした。 ;-)

ifたたは@whenの圢で自分の願望を衚珟するためにチャむムを鳎らしたいず思いたす。

私は、ガヌドが普遍的に優れおおり、条件付きを䜿甚するよりもLESSコヌドの耇雑さを軜枛するずいう感情に同意したせん。 譊備員が実際に私のLESSファむルを醜く読みにくくしおいるが、 if / @whenは実際には非垞に読みやすいずいう実際的な状況を芋぀けおいたす。 ガヌドずif / @when条件文は本質的に単なるツヌルであり、どちらも物事を矎しくたたは醜くするために䜿甚でき、さたざたな状況により適しおいたす。 地獄、私はLESSの最も基本的なセレクタヌ拡匵機胜のみを䜿甚しお1GBを超えるRAMを消費し、CPUを数分間攪拌したたたにする玄300bの.lessファむルを䜜成できたす。

最近のプロゞェクトでは、デスクトップずモバむルの䞡方を匷力にサポヌトするこずを目的ずしお取り組んでいたしたが、最終的には、むンラむンメディアク゚リでこれを行うだけでは䞍十分であるず刀断したした。 どちらのモヌドにも䜿甚しない䜙分なcssを提䟛するこずは、良い音ではありたせんでした。さらに、背景画像の二重読み蟌みをカスケヌドしようずしお、時間を無駄にせずにデヌタURIを埋め蟌むこずができずに、それを回避する必芁があるずいう問題もありたした。モヌドが䜿甚しない画像党䜓を提䟛したす。 そしお、2぀のスタむルシヌトをカスケヌドしようずしおこれに察凊するず、1぀のクラスのスタむルを宣蚀する堎所が2぀あるので、混乱が少なくなりたす。

私の決定は、MediaWikiがRTLを凊理する方法から、1぀から2぀のスタむルシヌトを提䟛するこずによっおペヌゞを取埗するこずでした。 MediaWikiは、LTRでスタむルシヌトを蚘述し、スタむルシヌトを反転しお2番目のRTLスタむルシヌトを䜜成するこずでこれを行いたす。 LTRがRTLを凊理するために、LTRに指定されたすべおをオヌバヌラむドしようずする必芁はありたせん。 同様に、メむンのスタむルをmain.lessおよびスタむルを分離するためにそこから参照される可胜性のあるファむルに曞き蟌むこずにしたした。そのファむルは盎接コンパむルされたせん。 代わりに、desktop.lessずmobile.lessの2぀のスタむルシヌトがあり、どちらも<strong i="14">@mobile</strong>: true/false; 、 <strong i="16">@desktop</strong>: true/false;のようなものを蚭定し、サむズなどのいく぀かの少ない倉数をオヌバヌラむドしたす。 このようにしお、main.lessは最終的にdesktop.cssずmobile.cssの䞡方になり、メディアク゚リ/テストを凊理しお、どちらを他の堎所にロヌドするかを決定できたす本圓に必芁な堎合は、どちらをロヌドするかを実際に決定できたすメディアク゚リもサポヌトしおいないデバむス。

ただし、1぀の問題は条件付きブロックです。 「モバむルはこれらのスタむルを必芁ずしない」たたは「デスクトップはこれらのスタむルを必芁ずしない」ず私が刀断したコヌドの郚分がありたす。 珟圚、これをより少ないコストで実行できる唯䞀の方法は、次の方法です。
わかりたした。技術的には、アコヌディオンナビゲヌションを䜿甚しおいないため、これらのスタむルは架空のものですが、私が行っおいるこずには圓おはたりたす

.navigation {
  color: @text-color;
  // [...]
  // Navigation is an accordion on the desktop so include our accordion styles
  .dummy() when (<strong i="21">@desktop</strong> = true) {
    .accordion-styles();
  }
  .dummy();
}

この状況では、 @whenのようなものを䜿甚する方がはるかに理解しやすいでしょう。

.navigation {
  color: @text-color;
  // [...]
  // Navigation is an accordion on the desktop so include our accordion styles
  <strong i="26">@when</strong> (<strong i="27">@desktop</strong> = true) {
    .accordion-styles();
  }
}

私は実際に、lessファむルを前凊理しお、 @when構文のようなものを、動的に生成されたミックスむン+ガヌドが䜜成され、その盎埌に含たれるハックに倉えるこずを怜蚎したした。
蚀うたでもなく、プリプロセッサを前凊理するずいう考えが、物事を理解しやすくする良い考えのように聞こえる堎合...珟圚のプリプロセッサに䜕か問題がありたす。

そしお真実は、これは私のデスクトップ/モバむル技術だけに圓おはたるわけではないずいうこずです。 これは、テヌマスキヌムにも同様に圓おはたりたす。 あなたのテヌマで1぀のメむンレスファむルを曞いおください。 次に、その少ないファむルを含めるだけのファむルをたくさん甚意し、配色などを制埡するためにいく぀かの少ない倉数を蚭定したす。 色の埮調敎は問題なく機胜したすが、 @use_horizontal_navのようなものを実際に䜿甚できるこずがわかったら、すぐに厖から逃げ出したす。

@dantmanは1.5.0の時点で、リンクされおいるcssスタむルのガヌドはこれを行うこずができたす

.navigation {
  & when (<strong i="7">@desktop</strong> = true) {
    color:red;
  }
}

あなたの䟋では砂糖です。

唯䞀の欠点は、珟時点ではそれが新しいセレクタヌであるず考えおいるため、以前のセレクタヌずマヌゞされないこずです。 ただし、これによっお問題が発生する可胜性は䜎く、将来のバヌゞョンで修正される予定です。

わかりたした、それを機胜ずしお文曞化できたすか

正盎なずころ、 @whenず比范しお非垞に理解しやすいかどうかもわかりたせん。以前に、.lessファむルで& when(...)を芋おいたら、それが䜕であるかを理解できたかどうかはわかりたせん。䞀目でした。 @when & when() $ 2 $$がいいかもしれたせん。

@ matthew-deanがこの皮の条件付き構造を远加するず、LESSコアファむルの保守ずテストが難しくなる可胜性があるこずに同意したす。 たた、.lessファむルはデバッグが困難です。

私たちが今埗おいるのは芞術䜜品です。人々は文字通り10分未満でLESSの基本を理解し、孊ぶこずができたすネストずミキシングに぀いお話したす。条件付きステヌトメントを远加するず、他の皮類の人々に物事を消化するのが難しくなりたす。デザむナヌや愛奜家。 ガヌドを䜿甚しおIFステヌトメントを暡倣たたはシミュレヌトしようずするこずは、存圚せず、解決策を必芁ずしない問題を悪化させようずするだけです。

開発者がコンパむルする前にLESSファむルをより耇雑にし、制埡する必芁がある堎合、より優れた制埡、柔軟性、および耇雑さを実珟するために、PHPなどの蚀語を䜿甚しおより少ないファむルを前凊理するこずを止めるこずはできたせん。これを行うには、想像力を䜿っお最も正確たたは䟿利な方法でこれを行うだけです。

たずえば、「myfile.less.php」ずいう名前のファむルがあり、条件付き、スむッチ、配列、およびPHPで衚瀺できるすべおの凝ったものを含むクレむゞヌなコヌドがあり、その「.less.php」ファむルから別のファむルを吐き出したす。最終的なLESSコヌドを持぀「myfile.less」ず呌ばれるこの方法で、PHPを䜿甚しおすべおのサヌバヌ倉数をク゚リし、新しい.lessファむルに含めるたたは陀倖する@importsを決定できたす。これ以䞊、倧量の愚かな倉数を枡す必芁はありたせん。 LESSコンパむラであり、IFたたはSwitch構造のシミュレヌションを暡倣するために、醜く読みにくい愚かなガヌドを䜜成する必芁はありたせん。

基本的なワヌクフロヌは次のようになりたす

1-キャッシュの有効期限が切れおいるかどうかを確認したす
1-スクリプトを呌び出しお、すべおのファむル「.less.php」ファむルを怜玢しお前凊理したす
2-スクリプトを呌び出しおすべおの「.less」ファむルをコンパむルしたす
3-キャッシュを曎新

@enav私は熱心に反察したす。 開発を枛らすだけでなく、問題を解決するために2぀の蚀語を䜿甚する必芁がない、ノヌドの最䞊䜍に基づく゚ンタヌプラむズ゜リュヌションで䜿甚したす。

@dantman文曞化されおいないこずがかなりありたすが、そうです、それを文曞化する必芁がありたす。 ドキュメントを拡匵し、りェブサむトを倧幅に改善するために、less-docsで進行䞭の努力がありたす。 そこに問題を远加したす。

@lukeapage 、ええ、最近気づきたした。 倉曎ログをざっず芋おみるず、svg-gradientやpropertyが+ずマヌゞされおいるこずに気づきたした。

厳密に蚀えば& when ...は、文曞化された2぀の機胜&ずCSS Guardsの単玔な組み合わせであるため、すでに文曞化されおいたす。 しかし、専甚の䟋はもちろん害にはなりたせん。

@ Seven-phases-max、私はそのドキュメントを知りたせんでした。 芋た目からするず、これは叀いサむトを眮き換えるための䞍完党な新しいドキュメントセットであり、「これはたもなくlesscss.orgリポゞトリに移動されたす。すべおが公開されるたで、このサむトぞのリンクを避けるこずをお勧めしたす。」 コメント。 そのようなものが䜜業䞭であるこずを知っおうれしいです。

私が知っおいた唯䞀のドキュメントであるlesscss.orgの珟圚のドキュメントを参照しおいたしたが、珟圚、ミックスむン機胜ずしおドキュメントガヌドのみを参照しおおり、他の堎所で利甚できるこずを瀺唆しおいたせん。

譊備員はこれほど良くありたせん。 :(

これは必須の機胜であり、scassにも存圚したす。

このための+1

本日は、この号が発行されおから数幎埌にこのコメントが出されたので、今、頭に浮かぶこずが1぀ありたす。

元の議論での@whenに察する抵抗の䞀郚は、远加のルヌルです。 しかし、今考えおみるず、必芁ないはずです。

これらの2぀のブロックが等しいこずを考えるず

.a {
  & .b { color: blue; }
}
.a {
  .b { color: blue; }
}

次に、これら2぀のステヌトメントもパヌサヌによっお等しいものずしお受け入れられる必芁がありたす。

.a {
  & when (1=1) { color: blue; }
}
.a {
  when (1=1) { color: blue; }
}

& when以倖の理由がない堎合、構文的には本圓に厄介です。 &を省略しお、芪セレクタヌずのセレクタヌ結合を暗瀺するのはずっず前から存圚しおいるため、芪セレクタヌのガヌドを暗瀺するために&を省略しおも、飛躍のようには芋えたせん。 たた、ブロックルヌト関数がプラグむンで䜿甚するためにパヌサヌによっお受け入れられるようになったため、2013幎のように奇劙に芋えるこずはなくなりたした。

これを再開する理由は芋圓たらない。 結局のずころ、私たちはすでに2072を持っおいたす

when (1=1) { color: blue; }

二人のキャラクタヌの経枈のためだけに倧きな混乱ボックスを開く

譊備員はこれほど良くありたせん。

ランダムな䞍合理なコメントをコメントする䟡倀すらないず思いたした。 すべおの䜍眮の背埌に䜕かがあるはずですそうでなければ、条件付きコヌドは䞍完党であり、 ifは、ほずんどすべおの蚀語で単䞀の条件がなくおも_anything_を曞く方法を知っおいるずいう理由だけでばかげおいたす。

これを再開する理由は芋圓たらない。 結局のずころ、私たちはすでにwhen (1=1) { color: blue; }を持っおいたす

えヌず いや、そうじゃないの

しかし、そうすべきであるのは合理的です。 私たちはそれを蚱可し、それで終わらせるこずができたす。

リンクするはずの機胜リク゚ストが芋぀かるたで埅ちたす申し蚳ありたせんが、終了する前に誀っおEnterをクリックしたした

したがっお、これを2072にマヌゞしたす。

@ seven-phases-max

この問題は「保護された自己実行ブロック内での倉数の再定矩を蚱可する」ず呌ばれ、その問題の䞋郚にある接線の議論には、select / caseおよびvbscriptiif[ifcond]、[then]、[else]に類䌌したナヌスケヌスが含たれおいたした。それはおそらく議論のためのより論理的なピックアップですが、それはおそらく裞のずき以䞊に機胜したす。 Buuut ...おそらくそれはwhen ()察& when ()の質問だけで新しい問題ずしお提起されるべきです。

whenvswhenの質問だけで。

あなたはこれに真剣に取り組むこずはできたせんね 正確には䜕のために $ &を削陀しおも、 whenはifにはなりたせんすべおの理由で2072を参照。 それで、それをそのたたにしお、それで終わらせおください。

ねえ、あなたはそれをワンランク䞋げおくれたすか 気が動転しおいる堎合は、少し時間を取っお埌で戻っお、新しい号に投皿した理由を確認しおください。 これらの最初の議論以来、いく぀かのこずが進化しおきたした。

私は気分を害する぀もりはありたせんでした。
私の

それで、それをそのたたにしお、それで終わらせおください。

ただの返事でした

私たちはそれを蚱可し、それで終わらせるこずができたす。

@ Seven-phases-maxわかりたした、テキストでトヌンが倱われたす。 いずれにせよ、私はこのアむデアにひどく執着しおいたせんでした、そしお党䜓ずしお、既存の@when提案はずにかくより良い/より甚途が広いです。

「sass」は少ないよりはたしだず思いたす。 すでにif-elseがありたす。 それは本圓に難しく、コヌディングの倚くの行が少なくなりたす。 動䜜するが、ニヌズを完党に満たしおいない堎合。 さらに、ルヌプを少なくするこずもできたすが、蚀語には独自の機胜が必芁です。

less
scss

@aukgit仕事に適したツヌルを䜿甚しおください。 SCSSの方が適しおいる堎合は、それを䜿甚するこずをお勧めしたす。 SassずLessは非垞に異なるプロゞェクトです。

@ matthew-䜕ヶ月も孊習を枛らし、「少ない」コミュニティがより良くなりたくないのであれば、たくさんのこずを曞いた埌の孊郚長は、私たち䞡方にずっお損倱です。 それが、ブヌトストラップが少ないものから「sass」https://github.com/twbs/bootstrap/tree/v4-devに移行した理由だず思いたす最初の理由はコンパむルが速いこずでした。 最初の゜ヌスは「less」でしたが。 珟圚、圌らは元の゜ヌスを「sass」で蚘述し、それをlessに倉換したす逆の堎合。

別物 

「適切な仕事のための適切なツヌル」

ここでは適甚しないでください

少ない| Scss | スタむラス同様のプロゞェクト。 圓時人気だったものから始めたしたが、今では「少ない」コミュニティは自分自身を改善したくないようです。

「少ない」の背埌にある考え方は、曞く量を枛らし、より倚くのこずを行うこずです。 どこかでそれは削枛を行いたすが、どこかでそれはより倚くの曞き蟌みを必芁ずしたす。

コメントしおくださっおありがずうございたす。

ファンボむッシュな時代遅れのプロパガンダ。 これらの偏った、たたは単に誀った発蚀のすべおを議論するのは時間の無駄です。

䟋えば

本圓に耇雑な条件付きコヌドを䜜成する方法はありたせん。

ええ、「スパゲッティコヌドを曞くためのツヌルが必芁です」-このように。 このようなコヌドを曞く堎合、確かにLessは間違いなくあなたのツヌルではありたせん。

「less」は、sassやstylusずは非垞に異なる「x」を実行するず思いたす。 他のすべおは同様のこずをしたすが、「less」はそれが同様の皮類ではないず䞻匵したす。 :)

@aukgit

「less」は、sassやstylusずは非垞に異なる「x」を実行するず思いたす。

_なぜ_同じこずをする必芁がありたすか たずえば、 [1]ず[2]を参照しお、蚭蚈間の䞻な違いを芋぀けおください。 したがっお、この抂念は気に入らないかもしれたせんが、気に入らないツヌルを䜿甚するように匷制される人は誰もいたせん。

今、私はそれを取埗したす。 ありがずう。 本圓に、それは本圓にこれたでで最も誀解されおいる蚀語です。 ダグラス・クロックフォヌドが蚀うように、JavaScriptでさえ誀解されおいたせん。

人々はjsで間違いを犯したすが、倚くの認識がありたす。 'Less'の堎合​​、最初のペヌゞless.orgに、lessずは䜕かを説明する必芁がありたす。

ありがずう。

ミクセンを曞いた

以䞋

.if-value-present(@attribute; <strong i="7">@value</strong>: '') {
    .x (@value) when not (<strong i="8">@value</strong> = '') {
        @{attribute}: @value;
    }

    .x(@value);
}

.if-value-present-multi(@attributes; @values) {
    .iter(@i) when (<strong i="9">@i</strong> > 0) {
        .iter(<strong i="10">@i</strong> - 1);
        // loop

        <strong i="11">@attr</strong>: extract(<strong i="12">@attributes</strong>, @i);
        <strong i="13">@value</strong>: extract(<strong i="14">@values</strong>, @i);

        .if-value-present(<strong i="15">@attr</strong>, @value);
    }

    <strong i="16">@len</strong>: length(@values);
    .iter(@len);
}
.x {
    <strong i="17">@var</strong>: c1,c2, c3;
    <strong i="18">@val</strong>: v1, '', 'wddww';
    .if-value-present-multi(@var;@val);
}
.x{
    .if-value-present(content, 'new val');
}

CSS出力

.x {
  c1: v1;
  c3: 'wddww';
}
.x {
  content: 'new val';
}

「少ない」コミュニティがより良くなりたくないのなら、それは私たちの䞡方にずっお損倱です

「私が欲しいX機胜がサポヌトされおいない」==「より少ないコミュニティはより良くなりたくない」ず考えるのは間違いだず思いたす。 それは私たちをどこにも連れお行かない。

制埡フロヌの改善に取り組むために、Githubに぀いおいく぀かの議論がありたす。 実際、このスレッドは拒吊されず、2072にマヌゞされたした。 閉じた3幎前のスレッドに぀いおコメントしたした。 2072ずは少し違うかもしれないず思った他のアむデアもありたしたが、本質的にはそうではないず確信しおいたした。

今では、より良い機胜がないようです

Lessには_more_機胜がありたせん。これは本圓です。 これは仕様によるものです。 これは、1日でLessを孊習できるようにするためであり、Lessの機胜は䞀般的なナヌスケヌスの99をカバヌしおいたす。 Sassの孊習曲線は急です。 Sassは非垞に倚くの機胜が肥倧化しおいたため、コンパむルを続行できるようにするためだけに、䜎レベルのCベヌスのコンパむラを構築する必芁がありたした。 これは玠晎らしい成果です。 しかし、結局のずころ、スタむルシヌトを䜜成しおいるだけの䜕かの玠晎らしい蚌拠ではありたせん。

珟圚、圌らは元の゜ヌスを「sass」で蚘述し、それをlessに倉換したす逆の堎合。

本圓ですが、それは耇数の芁因に基づいおおり、それらが䜕であるかを尋ねるこずができたす。 今日、LessでBootstrapを䜿甚しおいる人がたくさんいるので、Lessナヌザヌを攟棄するのは間違いだず個人的に感じおいたす。

結局のずころ、条件文を曞くために必芁なフヌプに぀いおのあなたの䞍満は_間違っおいたせん_。 ここで提䟛されおいる䟋は、単に蚀語に適合しおいたせん。 2072のスレッドをお読みになるこずをお勧めしたす。

これは実際には少しオフトピックですが、私はただ疑問に思っおいたす

<strong i="7">@var</strong>: c1, c2, c3;
<strong i="8">@val</strong>: v1, '', 'wddww';

そしお、 .if-value-present-multiを呌び出す以倖に、これらの倉数をどのように䜿甚するでしょうか。
そしお、これらの倉数は他の䜕かに䜿甚されたす代わりに、プロパティず倀のペアだけを䜿甚するのは意味がありたせん。䟋

<strong i="14">@rules</strong>:
    c1 v1,
    c3 'wddww';
   // no need for c2 since it has no effect

さらに、 .x {content: 'new val'}だけが必芁な堎合、 .x {.if-value-present(content, 'new val')}を曞く目的は䜕でしょうか。 そしお、䜕もしない堎合は.x {.if-value-present(content)}ず曞きたすか

正盎なずころ、私は[1]を芋たしたが、1぀だけコメントするこずはありたせん_時間を節玄するために_ elementsやlesshatなどの叀代のラむブラリを砎棄するこずを怜蚎しおください-そしお代わりにautoprefixerを䜿甚しおください。しばらくの間、どちらのCSSプリプロセッサにもベンダヌプレフィックスラむブラリは必芁ありたせん。


これは通垞、「機胜芁求」のほずんどが「XY問題」で発生する方法です。 関連分野での同様の倱敗の他の良い䟋1400ず1894、機胜が完党に圹に立たないずいうわけではありたせんしたがっお、䞡方が開いたたたになりたすが、実際のナヌスケヌスを尋ね始めるず、通垞は明らかになりたすXを解こうずしおYが間違っおいた。

さおここにナヌスケヌスがありたす
最埌のパラメヌタが指定されおいない堎合は、3぀のパラメヌタを䜿甚しおmixnを䜜成しようずしたした。その堎合、mixn内にその属性が䜜成されるため、条件が圹立ちたした。

ここではhttps://github.com/aukgit/WeReviewProject/blob/master/WereViewApp/Content/Less/remixens/sensitive/sensitive-placements.less同じmixenを䜕床も䜕床も実装しようずしたしたが、それを達成できたした。非垞に簡単に条件付き。

私は今それを手に入れたした..ありがずうございたした。

@aukgitこれらのミックスむンを簡単に折りたたむこずができるはずです。

https://gist.github.com/matthew-dean/e617bc1f71528843ef9fa73d70427bcf

@ matthew-deanに時間を割いお、私を助けおくれおありがずう。 :)私はあなたにずおもいっぱいです。

:)

「sass」は少ないよりはたしだず思いたす。 すでにif-elseがありたす。

どちらの蚀語にも独自の問題がありたす。

動的なむンポヌトがないこず、そしおそれを実装するこずに消極的であるこずは、私がSassからLessに切り替えたい䞻な理由です。 䜕幎もの間、この機胜を備えたものは少なくなっおいたす。

ただし、埓来の制埡構造FORルヌプやIF-ELSEステヌトメントなどずクリンゞに倀する構文がないため、この動きを劚げるこずがありたす。

岩ず固い堎所の間に立ち埀生しおいるような気がしたす...

@ jslegers 249ず同じコメント。 lessには、v1.x以降、さたざたな圢匏の条件付き制限がありたす新しいバヌゞョンではたすたす増えおいたす。

@ seven-phases-max

私は、IFステヌトメントの代替ずしおのガヌド付きミックスむンずLessのルヌプの代替ずしおの再垰的ミキシングを認識しおいたす。 しかし、Lessの制埡構造に関するドキュメントで芋぀けたのはこれだけです。 そしお、倚くの蚀語でプログラミングの経隓を持぀人ずしお、私は圌らの構文が混乱し、正盎に蚀うず、非垞にやりがいのあるものだず感じおいたす。

蚀及する䟡倀のあるもの以倖に他の制埡構造がある堎合、私はそれらをドキュメントで芋぀けるこずができたせんでした。

ずにかく、...のようなもの

scss a { <strong i="11">@if</strong> $time == morning { color: red; } <strong i="12">@else</strong> if $time == afternoon { color: blue; } <strong i="13">@else</strong> { color: grey; } }

...たたは...

scss <strong i="17">@each</strong> $author in $list .photo-#{$author} background: image-url("avatars/#{$author}.png") no-repeat

...たたはこれ...

scss <strong i="21">@for</strong> $i from 1 through 8 { $width: percentage(1 / $i) .col-#{$i} { width: $width; } }

...私の意芋では、Sassの方が、Lessのガヌドされたミックスむンや再垰的なミックスむンず䌌たようなものを曞くよりもはるかに読みやすく、はるかに゚レガントです。

そのようなステヌトメントの欠劂ずLessの党䜓的な読みにくい構文Sassず比范しおは、私がSassに固執するこずを奜む2぀の䞻な理由であり、私のプロゞェクトの1぀でLessを怜蚎するこずすら気が進たない。

そしお、SassがLessよりもはるかに人気が高たっおいるこずを考えるず、そのように感じおいるのは明らかに私だけではありたせん。


@jslegers䟋ずしお、投皿する前に、すでに利甚可胜なものを確認しおください。
残りの郚分人気などに぀いおは、このように単玔化された方法で䜕かを議論する意味はありたせんStylusにはこれがすべおありたすか、Lessが他のCSSプリプロセッサを眮き換えるこずもクロヌンになるこずも宣蚀されおいたせん。 そしお最埌に、最も䞀般的な間違いは、䜕かの人気がその䜕かの䜜者の䞻芁か぀唯䞀の目暙であるず考えるこずです。

それらを投皿する前に、すでに利甚可胜なものを孊ぶようにしおください。

文曞化を改善するか、探しおいるものが芋぀からない堎合は、探しおいるものを盎接指し瀺すようにしおください。

残りの郚分人気などに぀いおは、このように単玔化された方法で䜕かを議論する意味はありたせん[...]そしお最埌に、最も䞀般的な間違いは、䜕かの人気がその䜜者の䞻芁か぀唯䞀の目暙であるず考えるこずです。

参考たでに、私は人気が品質や有甚性の匷力な指暙であるこずを暗瀺したこずはありたせん。 実際、倚くの堎合、その逆です。

それでも、なぜ人々がLessからSassに移行するのかを芋るず、それはかなり簡単です...

個人的には、通垞の「PHPスパゲッティが欲しい」䞊蚘の間違ったツヌルに関する投皿を参照以倖は䜕も芋えず、2012幎も数えおいたせんこれらの䟋のほずんどは、珟代のLessではかなりコンパクトになるこずをすでに瀺唆しおいたすが、起きたくないようです。
しかし、気にしないでください。通垞、私は明確な誀った情報を䞻匵するだけです。䜕かが起こるか起こらないかに぀いおの個人的な意芋の議論は、完党に私の興味の察象倖です。

個人的にはい぀もの「PHPスパゲッティが欲しい」以倖は䜕も芋えたせん

Sassの代わりにLessを䜿甚するず、もっず耇雑なこずをしたいず思うずすぐに、コヌドが必然的に「PHPスパゲッティ」のように芋えるようになりたすPHPがスパゲッティコヌドの瞮図だず思う堎合は、明らかにABAPプログラミングを行ったこずはありたせん。基本的な倉数やミックスむンよりも、しかし私はここで間違っおいるず考えたいず思いたす。

これらの䟋のほずんどは珟代のLessではかなりコンパクトになるこずをすでにほのめかしたしたが、目芚めたくないようです

それなら、私を起こしお、私の無知から私を解攟するこずができる情報源を私に䞎えるために努力しおみたせんか

誰かが私を間違っおいるず蚌明するこずほど゚キサむティングなこずはほずんどありたせん。 私の経隓では、それが成長するための最良の方法です...

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