Less.js: グルヌプメディアク゚リ

䜜成日 2012幎09月11日  Â·  64コメント  Â·  ゜ヌス: less/less.js

メディアク゚リのバブリングは玠晎らしいですが

header {
    color: green;

    <strong i="6">@media</strong> only screen (max-width: 500px) { color: red; }
}

footer {
    color: green;

    <strong i="7">@media</strong> only screen (max-width: 500px) { color: red; }
}

Lessは、lessファむルで宣蚀されるたびにmediaqueryセレクタヌを繰り返すため、かなり肥倧化したコヌドを生成したす。

header {
  color: green;
}
<strong i="11">@media</strong> only screen (max-width: 500px) {
  header {
    color: red;
  }
}
footer {
  color: green;
}
<strong i="12">@media</strong> only screen (max-width: 500px) {
  footer {
    color: red;
  }
}

メディアク゚リが同䞀である堎合、それらをグルヌプ化できるず䟿利です。

header {
  color: green;
}
footer {
  color: green;
}

<strong i="16">@media</strong> only screen (max-width: 500px) {
  header {
    color: red;
  }
  footer {
    color: red;
  }
}
feature request medium priority up-for-grabs

党おのコメント64件

ステヌトメントを再線成するこずで、意味を倉える可胜性なしに、どのようにそれを行うのですか

意味が倉わるこずはないず思いたす。 これは、通垞の冗長タグを折りたたむのずたったく同じです。 䟋えば

body {
    background: white;
}

body {
    padding: 0;
    margin: 0;
}

次のように折りたたたれたす

body {
    background: white;
    padding: 0;
    margin: 0;
}

メディアク゚リは、通垞の芁玠セレクタヌの䞊にあるコントロヌルレむダヌずしお機胜する特別なトップレベルセレクタヌであるため、これはさらに圓おはたりたす。 基本的に、それらは単䞀の意味しか持たず、ファむル内の残りのcssの圱響を受けたせん。

さらに、バブルメディアク゚リの順序をすでに維持しおいるわけではなく、たったく同じク゚リに察しお倚くの冗長セレクタヌを䜜成するだけです。 それらをバッファリングしお、凊理の最埌に単䞀のク゚リに曞き蟌むこずができれば、それははるかにすっきりし、より小さなcss出力を生成したす。

メディアク゚リ内のセレクタヌの耇雑さに関するルヌルは䜕ですか する
ク゚リは耇雑さを増し、順序を䞊曞きしたすか 䜕か指摘できたすか
スペック

基本的に、はい。 メディアセレクタヌは、通垞のスタむルルヌルをラップアラりンドし、ク゚リの条件が満たされた堎合にのみ適甚されるIFステヌトメントのようなものです。 たずえば、ブラりザの幅が特定のピクセル数未満の堎合、ク゚リ内のルヌルがオンになり、既存のルヌルが䞊曞きされたす。

したがっお、それぞれが単䞀のスタむルを持぀倚数の同䞀のク゚リを持぀こずは、すべおのスタむルが含たれる1぀のク゚リず機胜的に同䞀になりたす。 ク゚リが同じである限り。

これがMozillaのドキュメントです

https://developer.mozilla.org/en-US/docs/CSS/Media_queries

私が意味するのは、この䟋です。divが赀になりたす。぀たり、メディアク゚リ䞡方ずも画面を䞊べ替えるず、cssの意味が倉わりたす。

<strong i="6">@media</strong> screen {
    div {
        background-color: green;
    }
}

div {
     background-color: red;
}

<strong i="7">@media</strong> screen {
    div.pink {
        background-color: pink;
    }
}

ルヌルセットが互いに盎接続く堎合にのみ組み合わせる必芁がありたす。

これは@Soviutの元の䟋には含たれおおらず、IMOでの䜿甚が制限されおいるこの機胜リク゚ストを䜜成しおいたす

同意したすが、これがバブルメディアク゚リにどのように適甚されるかわかりたせんか バブル化されたク゚リは、構文䞊の糖衣構文のビットであるこずを忘れないでください。 通垞、別のセレクタヌ内にメディアク゚リを埋め蟌むこずはできたせん。 したがっお、バブリングク゚リに遭遇したずきはい぀でも、到着した順序で同䞀のバブリングク゚リずグルヌプ化するこずが安党に想定できたす。

組み合わせるこずができる2぀のバブルメディアク゚リが隣り合っおいる堎合、それをより少なくするこずは非垞に明癜だず思いたす。メディアク゚リを組み合わせるこずが安党であり、それが理にかなっおいる実際の䟋を挙げおください。それらをより少なく保぀ために

網膜画像を凊理する堎合、耇雑なメディアク゚リをミックスむン内にラップし、スプラむトミックスむンを䜜成したので、これがいたるずころにありたす...出力CSSが増加したすが、より保守しやすくなりたす。

たずえば、スプラむトミックスむンは次のずおりです。

.sprite(<strong i="7">@spritePath</strong>, <strong i="8">@hdpiPath</strong>, <strong i="9">@x</strong>, <strong i="10">@y</strong>, <strong i="11">@size</strong>: auto) {
    background-image: url(@spritePath);  
    background-repeat: no-repeat;
    background-position: -1 * <strong i="12">@x</strong> -1 * @y; // Negativize the value
    .background-size(@size);
    <strong i="13">@media</strong> <strong i="14">@mediaRetina</strong> {
        background-image: url(@hdpiPath);
    }
}

@mediaRetinaは次のずおりです。

<strong i="19">@mediaRetina</strong>: ~"only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 4/3), only screen and (min-device-pixel-ratio: 1.3), only screen and (min-resolution: 124dpi), only screen and (min-resolution: 1.3dppx)";

次に、以䞋のように、各スプラむト芁玠をラップするためのミックスむンをさらに䜜成したす。

#sprite
{
    .header-logo()
    {
        .sprite(<strong i="23">@globalSpritePath</strong>, <strong i="24">@global2XSpritePath</strong>, 22px, 0, 384px 288px);
        width: 94px;
        height: 59px;
    }
}

そしお、次のような他のLESSファむルで䜿甚したす。

h1 {
    width: 94px;
    height: 59px;

    a {
        #sprite > .header-logo();
    }

}

この堎合、生成されるCSSは次のようになりたす。

h1 a {
  background-image: url("/images/sprite-global.png");
  background-repeat: no-repeat;
  background-position: -22px 0;
  -webkit-background-size: 384px 288px;
  -moz-background-size: 384px 288px;
  -o-background-size: 384px 288px;
  background-size: 384px 288px;
  width: 94px;
  height: 59px;
}
<strong i="31">@media</strong> only screen and (-webkit-min-device-pixel-ratio: 1.3), 
       only screen and (min--moz-device-pixel-ratio: 1.3), 
       only screen and (-o-min-device-pixel-ratio: 4/3), 
       only screen and (min-device-pixel-ratio: 1.3), 
       only screen and (min-resolution: 124dpi), 
       only screen and (min-resolution: 1.3dppx) {
  h1 a {
    background-image: url("/images/[email protected]");
  }
}

ここで、このケヌスが䜕床も繰り返されるこずを想像しおください。 グルヌプ化せずに、この䜙分な重みを軜枛する唯䞀の方法は、すべおの網膜スタむルを専甚のLESSファむルに移動するこずです。これは、小さなサむトでは機胜する可胜性がありたすが、倧きなサむトでは非珟実的です。

これは、特にモゞュヌルが倚数ある倧芏暡なサむト私たちのようながある堎合に、それらをグルヌプ化しお分離しおおくこずが理にかなっおいる堎所です。

ただし、スタむルのオヌバヌラむドに぀いおあなたが䜕を意味するのかは知っおいたすが、デザむナヌが望む可胜性のあるカスケヌドを混乱させるこずなく、この正確な機胜を安党に実装できるかどうかはわかりたせん。

私には、これは「セクション」プレヌスホルダヌを定矩しおから、蚘述されおいる順序に関係なく、そこに配眮するスタむルを定矩できるように聞こえたす。 これはサヌバヌ偎のテンプレヌトではかなり䞀般的です。サヌバヌ偎のテンプレヌトでは、「スクリプト」たたは「ヘッド」セクションがあり、ペヌゞが読み蟌たれたずきにペヌゞにコンテンツを挿入できたす。

したがっお、基本的にLESSファむルでこれを実行できるようにしたいず思いたす。

<strong i="39">@media</strong> { // retina query
    @renderSection("retina")
}

// in another file
h1 {
    <strong i="40">@section</strong> retina {
        // retina styles
    }
}

@sectionは、コンパむル時に珟圚のセレクタヌに眮き換えられたす。

したがっお、私のスプラむトミックスむンは次のようになりたす。

.sprite(<strong i="46">@spritePath</strong>, <strong i="47">@hdpiPath</strong>, <strong i="48">@x</strong>, <strong i="49">@y</strong>, <strong i="50">@size</strong>: auto) {
    background-image: url(@spritePath);  
    background-repeat: no-repeat;
    background-position: -1 * <strong i="51">@x</strong> -1 * @y; // Negativize the value
    .background-size(@size);
    <strong i="52">@section</strong> retina {
        background-image: url(@hdpiPath);
    }
}

この構文たたは実装である必芁はありたせん。ASP.NETRazor構文に基づいおいたす。これは、私がよく知っおいる構文であり、構文が気に入っおいるためです。

その良い䟋..そしお良いナヌスケヌス..あなたはするこずができたす

@media-section

たたはmedia-groupこれにより、メディアをグルヌプ化するように指瀺されなくなりたすオプションで、メディアク゚リにメディアがすでに存圚する堎合は、ルヌルをどこにでも移動できるようにマヌゞしたす。どういう意味ですか

私はそれが良い考えだず思いたくなりたすそしお実装するのはそれほど難しくありたせん

@ media-groupの堎合は+1

+1 @ media-group

もう1぀のオプションは、true / falseをグルヌプ化するためのグロヌバルオプションを持぀こずです。

うヌん、これはおそらく良い考えです。 遞択的なグルヌプ化が必芁になる堎合はありたすか

ほずんどの堎合、人々はメディアク゚リをもっずコンパクトにしたいず思っおいるので、今のずころグロヌバルオプションが道かもしれたせん。 遞択的なグルヌプ化が必芁だず䞻匵する人がいた堎合は、埌で新しいキヌワヌドを远加できたす。

グロヌバルグルヌプ化オプションの堎合は+1。

はい.. @importで、耇数のキヌワヌドを远加するこずは方法ではなく、オプションを远加するこずはあたり議論の䜙地がないこずがわかったためです。

オプションを远加するず、すぐに圹立ち、䜜成された堎合に遞択的なむンポヌトを䜿甚しおオヌバヌラむドずしお共存できるため、远加するず思いたす。

こんにちは、私はこの問題を芋お、メディアク゚リをグルヌプ化する必芁があるずきに䜜成した小さなアプリを共有したいず思いたした。 これは完成したアプリではありたせん。 将来のツヌルのためのいく぀かの研究のようなものです。 ですから、私はあなたにその考えを瀺したいず思いたす。なぜなら、それは本圓に実行されなければならないものだず思うからです。 バグやその他の問題がある可胜性がありたすが、Twitterブヌトストラップを含む最埌のプロゞェクトでテストしたしたが、正しく動䜜したす。 ルヌルの順序に問題はありたせん私に知らせおください;

http://mqhelper.nokturnalapp.com

こんにちは

誰かがこれに割り圓おられおいたすか これは、少ないファむルで䜜成したずきにcssファむルを枛らすのに非垞に圹立぀可胜性がある優れた機胜です。 このようにしお、開発者はこれらすべおの@mqを簡単に操䜜できるようになりたす。

@AoDev mqhelperは間違いなく正しい方向ぞの䞀歩であり、今のずころCSS

はい。ただし、私のアプリの目暙は、「実際のツヌル」の䞀郚になるこずではありたせん。 ここで倚くの人がメディアク゚リのグルヌプ化が問題になるのではないかず考え、それが可胜であるこずを瀺したかったのを芋たした。 コヌドは、アむデアを持ち、その䞀郚を䜿甚したい堎合、より少ない開発者のためにありたす。 しかし、必芁に応じお、これを「実際の」モゞュヌルにするこずができたす:)

私はすでにそれを管理したした、それは玠晎らしい䜜品です、ありがずう。

@ Soviut @ lukeapage遞択的なグルヌプ化が最も理に

<strong i="8">@tablet</strong>: (max-width: 979px);

.a {
  color: yellow;
  <strong i="9">@media</strong> <strong i="10">@tablet</strong> group {
    color: red;
  }
}
.b {
  background: black;
  <strong i="11">@media</strong> <strong i="12">@tablet</strong> group {
    background: white;
  }
}

//output
.a { color: yellow; }
.b { background: black; }
<strong i="13">@media</strong> (max-width: 979px) {
  .a { color: red; }
  .b { background: white; }
}

こんにちは、メディアク゚リのグルヌプ化は本圓に玠晎らしい远加になるでしょう。 それたでの間、私はこのアむデアを思い぀きたしたが、プロパティの重耇を避けるために、今埌の:extend機胜で䜿甚できるかどうか疑問に思いたす。

// Define the media queries
<strong i="7">@step1</strong>: ~"only screen and (max-width: 960px)";
<strong i="8">@step2</strong>: ~"only screen and (min-width: 961px)";

// Default empty mixins
.step1() {}
.step2() {}

// Custom styles
.test { color: blue; }

// Change the style in the media queries
.step1() {
  .test { color: red; }
}

.step2() {
  .test { color: green; }
}

// Finally render the media queries
<strong i="9">@media</strong> <strong i="10">@step1</strong> { .step1(); }
<strong i="11">@media</strong> <strong i="12">@step2</strong> { .step2(); }

@AoDevによっお䜜成されたツヌルは、「オヌルオアナッシング」アプロヌチが実際に重芁ではないこずを瀺すのに最適です。 メディアク゚リのグルヌプ化は、スタむルのグルヌプ化/䞊べ替えず同じ副䜜甚を受けたせん。 オヌルオアナッシングメ゜ッドに欠陥があるこずを瀺す実際の䟋 @AoDevによっお䜜成されたツヌルに察しおテスト枈みを誰かが提䟛できたすか

@kamranayubは、私が扱っおいる正確な状況を完党に説明したした。 個人的には、この実装の䜕らかの圢を芋たいず思いたす。 @DesignByOnyx 、以䞋のテストコヌドは@AoDevのツヌルで正しくコンパむルされたせん。 私は、kamranayubが述べたようなこの皮のスタむリングをしたいず思いたす。 倧芏暡なサむトで耇数の少ないファむルを凊理する堎合は、はるかにクリヌンです。

.footer ul {

  margin: 10px;

  <strong i="9">@media</strong> @layout-tablet, @layout-full {
    font-size: 13px;
    font-weight: bold;
  }
  <strong i="10">@media</strong> @layout-mobile {
    font-size: 10px;
    padding-left: 10px;
  }

  li {

    background: black;
    color: white;
    padding: 10px;

    <strong i="11">@media</strong> @layout-tablet, @layout-full { .border-radius(@radius) }
    <strong i="12">@media</strong> @layout-mobile { .border-radius(@radius-mobile) }   
  }

}

䜿甚する構文が少ないため、機胜したせん。 それは働くこずを意味したす
CSSを䜿甚したす。
2013幎7月2日午埌9時19分、「PMacom」 [email protected]は次のように曞いおいたす。

@kamranayub https://github.com/kamranayubは、正確な説明を完党に説明したした
私が扱っおいる状況。 個人的には、䜕らかの圢を芋たいです
この実装の。 @DesignByOnyx https://github.com/DesignByOnyx 、
以䞋のテストコヌドは、 @ AoDevhttps//github.com/AoDevで正しくコンパむルされたせん。
道具。 私は、kamranayubが述べたようなこの皮のスタむリングをしたいず思いたす。
倧芏暡なサむトで耇数の少ないファむルを凊理する堎合は、はるかにクリヌンです。

.footer ul {

マヌゞン10px;

@media @ layout-tablet、@ layout-full {
フォントサむズ13px;
フォントの倪さ倪字;
}
@media @ layout-mobile {
フォントサむズ10px;
パディング-巊10px;
}

li {

background: black;
color: white;
padding: 10px;

<strong i="34">@media</strong> @layout-tablet, @layout-full { .border-radius(@radius) }
<strong i="35">@media</strong> @layout-mobile { .border-radius(@radius-mobile) }

}
}

—
このメヌルに盎接返信するか、Gi tHubhttps//github.com/less/less.js/issues/950#issuecomment-20369038で衚瀺しおください
。

LESSが凊理された埌、 @ AoDevのツヌルで䜿甚されるロゞックを実行するずいう提案はありたすか それが頭のおっぺんから望んでいるこずではない堎合は考えられたせん。

LESSが凊理された埌、 @ AoDevのツヌルで䜿甚されるロゞックを実行するずいう提案はありたすか それが頭のおっぺんから望んでいるこずではない堎合は考えられたせん。

これは暫定的なオプションだず思いたす。 @ AoDevの゜リュヌションをgrunt.jsモゞュヌルでラップしお、LESSが凊理された埌に自動的に実行できるようにするこずを怜蚎したすこれは、前凊理が行われおいるずいう前提に基づいおいたすオンザフラむではなく、展開前に実行

䞍平を蚀うタスクは、暫定的には確かに玠晎らしく、生のCSSに普遍的に圹立ちたす。 ただし、 @ media magic LESSがすでに実行しおいる量を考慮するず、グルヌプ化オプションは論理的であるように思われたす。

繰り返しになりたすが、Gruntタスクは、モバむルスタむルシヌトをその堎でロヌドしたい人のために、メディアク゚リを独自のファむルに完党に分離できる可胜性があるず述べたした。

あなたがそれに぀いお蚀及したので、スタむルシヌトを分離するこずは持っおいる䟿利なオプションです-珟圚、あなたはそれをするためにあなたの゜ヌスファむルを特別に構築する必芁があるでしょう。

おそらく、メディアク゚リをグルヌプ化し、オプションで分割するための個別のメディアク゚リオプティマむザヌツヌルの䜙地がありたすか

絶察。 CSSOがこれをすでに行っおいるかどうかはわかりたせん。私が知っおいる唯䞀のCSSリラむタヌであり、Gruntタスクも関連付けられおいたす。 ただし、メディアク゚リなどを個別のファむルに分割するこずはできたせん。 同様に、その曞き換えは、DOM構造ずは察照的に、同䞀のセレクタヌず属性に基づいた非垞に基本的なものです。

Mqhelperはすでに個々のメディアク゚リを返したすgithubをチェックしおください
詳现に぀いおは、ペヌゞをご芧ください。 分離されたcssファむルはそこから構築できたす。
2013幎7月5日午前10:08、「Soviut」 [email protected]は次のように曞いおいたす。

絶察。 唯䞀のCSSであるCSSOがすでにこれを行っおいるかどうかはわかりたせん
私が知っおいるリラむタヌには、Gruntタスクも関連付けられおいたす。 それでも
メディアク゚リなどを個別のファむルに分割するこずはできたせん。 同様に、
その曞き換えは非垞に基本的であり、同䞀のセレクタヌず属性に基づいおいたす。
DOM構造ずは察照的です。

—
このメヌルに盎接返信するか、Gi tHubhttps//github.com/less/less.js/issues/950#issuecomment-20505834で衚瀺しおください
。

それほど長くはなく、それほど難しくないもののように聞こえたす
グルヌプ化オプションず個別のファむルオプションの䞡方
実装したい私はあなたに助けを䞎えるこずができたす...

これを実装するために、ある皮の「セクション」たたは「グルヌプ」のアむデアに移行するこずを思いずどたらせたくありたせんそれは良いこずだず思いたす。 ただし、誰かが通垞のcss甚に定矩されおいるコヌドで@mediaプロパティ情報を定矩する機胜を垌望しおいるが、コヌドの他の堎所で単䞀の@mediaク゚リにグルヌプ化されおいる堎合は、 LESS機胜で珟圚実行できる少なくずも2぀の方法であり、配眮を適切に制埡できたすが、提案された゜リュヌションが必芁ずする以䞊の远加のコヌディングを䜿甚するこずは確かですしたがっお、必ず䜜業を続けおください。 怜蚎

<strong i="8">@media</strong> screen {
  .my-class > .mediaScreen();
  #screenSpace1(screen);
  #screenSpace2(screen);
}

//technique #1 only works for a top level class or id that can act as a namespace
//and would not handle a deep nesting very well
.my-class {
  regular-property: value;

  .mediaScreen(<strong i="9">@selectorString</strong>: ~'.my-class') { //full path needs repeat here if deeply nested
    @{selectorString} {
      media-screen-property: value;
    }
  }
}

//technique #2 allows for tag selectors and easier deeper nesting 
#screenSpace1(<strong i="10">@place</strong>: noMedia) {
  div > ul {
    .setProps() when (<strong i="11">@place</strong> = noMedia) {
       regular-property: value;
    }
    .setProps() when (<strong i="12">@place</strong> = screen) {
       screen-property: value;
    }
    .setProps();

    li {
       .setProps() when (<strong i="13">@place</strong> = noMedia) {
          regular-property: value;
          &:hover { regular-property: value; }
       }
       .setProps() when (<strong i="14">@place</strong> = screen) {
          screen-property: value;
          &:hover { screen-property: value; }
        }
       .setProps();
    }
  }
}
#screenSpace1();

.more-classes-not-needing-media {property: value;}

#screenSpace2(<strong i="15">@place</strong>: noMedia) {
  .someClass {
    .setProps() when (<strong i="16">@place</strong> = noMedia) {
       regular-property: value;
    }
    .setProps() when (<strong i="17">@place</strong> = screen) {
       screen-property: value;
    }
    .setProps();

    > a {
       .setProps() when (<strong i="18">@place</strong> = noMedia) {
          regular-property: value;
          &:hover { regular-property: value; }
       }
       .setProps() when (<strong i="19">@place</strong> = screen) {
          screen-property: value;
          &:hover { screen-property: value; }
        }
       .setProps();
    }
  }
}
#screenSpace2();

これはこのcssを生成したす

<strong i="23">@media</strong> screen {
  .my-class {
    media-screen-property: value;
  }
  div > ul {
    screen-property: value;
  }
  div > ul li {
    screen-property: value;
  }
  div > ul li:hover {
    screen-property: value;
  }
  .someClass {
    screen-property: value;
  }
  .someClass > a {
    screen-property: value;
  }
  .someClass > a:hover {
    screen-property: value;
  }
}
.my-class {
  regular-property: value;
}
div > ul {
  regular-property: value;
}
div > ul li {
  regular-property: value;
}
div > ul li:hover {
  regular-property: value;
}
.more-classes-not-needing-media {
  property: value;
}
.someClass {
  regular-property: value;
}
.someClass > a {
  regular-property: value;
}
.someClass > a:hover {
  regular-property: value;
}

私は次のようなこずをしたいず思っおいたした

/*
 * Span mixins
 * adapted from Gridpak Beta LESS
 * http://gridpak.com/
 * Created by <strong i="6">@erskinedesign</strong>
 */

.mixin-span(<strong i="7">@num</strong>, <strong i="8">@gutter_pc</strong>, <strong i="9">@padding</strong>, @max_columns) when (<strong i="10">@num</strong> > @max_columns) {
    .mixin-span(<strong i="11">@max_columns</strong>, <strong i="12">@gutter_pc</strong>, <strong i="13">@padding</strong>, @max_columns);
}
.mixin-span(<strong i="14">@num</strong>, <strong i="15">@gutter_pc</strong>, <strong i="16">@padding</strong>, @max_columns) when (<strong i="17">@num</strong> =< @max_columns) {
    <strong i="18">@one_col</strong>: (100% - (<strong i="19">@gutter_pc</strong> * (<strong i="20">@max_columns</strong> - 1))) / @max_columns;
    width:(<strong i="21">@one_col</strong> * @num) + (<strong i="22">@gutter_pc</strong> * (<strong i="23">@num</strong> - 1));
    padding:@padding;
    margin-left:@gutter_pc;
}
.mixin-span_first() {
    margin-left:0;
}

// end of adapted Gridpak LESS

// Namespaced mixin sets

#mob{
    <strong i="24">@max_columns</strong>: 1;
    <strong i="25">@padding</strong>: 0 1.5%;
    <strong i="26">@gutter_pc</strong>: 5%;

    .span(@col){
        <strong i="27">@media</strong> screen and (max-width:300px){
            .mixin-span(<strong i="28">@col</strong>, <strong i="29">@gutter_pc</strong>, <strong i="30">@padding</strong>, @max_columns);
            .mixin-span_first;
        }
    }
}

#desk{
    <strong i="31">@max_columns</strong>: 10;
    <strong i="32">@padding</strong>: 0 3%;
    <strong i="33">@gutter_pc</strong>: 5%;

    .span(@col){
        <strong i="34">@media</strong> screen and (min-width:301px){
            .mixin-span(<strong i="35">@col</strong>, <strong i="36">@gutter_pc</strong>, <strong i="37">@padding</strong>, @max_columns);
        }
    }
}

//assign different layouts per namespaced breakpoint
/* ----- Header ----- */
#header{
    #mob > .span(2);
    #desk > .span(4);
    .mixin-span_first;
    background-color:#888;
    color:#fff;
}

/* ----- Main ----- */
#main{
    #mob > .span(1);
    #desk > .span(6);
    background-color:#eee;
    color:#111;
}

しかし、グルヌプ化されおいない堎合、生成されたcssは少しかさばりたす

/* ----- Header ----- */
#header {
  margin-left: 0;
  background-color: #888;
  color: #fff;
}
<strong i="41">@media</strong> screen and (max-width: 300px) {
  #header {
    width: 100%;
    padding: 0 1.5%;
    margin-left: 5%;
    margin-left: 0;
  }
}
<strong i="42">@media</strong> screen and (min-width: 301px) {
  #header {
    width: 37%;
    padding: 0 3%;
    margin-left: 5%;
  }
}
/* ----- Main ----- */
#main {
  background-color: #eee;
  color: #111;
}
<strong i="43">@media</strong> screen and (max-width: 300px) {
  #main {
    width: 100%;
    padding: 0 1.5%;
    margin-left: 5%;
    margin-left: 0;
  }
}
<strong i="44">@media</strong> screen and (min-width: 301px) {
  #main {
    width: 58%;
    padding: 0 3%;
    margin-left: 5%;
  }
}

このhttps://github.com/buildingblocks/grunt-combine-media-queriesには解決策がありたすが、珟時点では最小幅で泚文するだけなので、䞻にモバむルファヌストサむトで圹立ちたす。

IMO問題をスコヌプグルヌプ化制埡に䞀般化するこずは理にかなっおいたす。これにより、問題930の解決策が提䟛されたす。

玠晎らしいツヌル@krava  ありがずう

玠晎らしい!!! IMOは、KRAVAの機胜をLESSに実装するのが理にかなっおいたす

+1

プラグむンずしおやりたいです。 それほど難しくないはずです。 やるこずが倚すぎる

プラグむンは、プラグむンを自動ロヌドするシステムoptions.jsonよりも優先床を䜎くする必芁があるず思いたす。 しかし、はい、プラグむンは付加的な機胜ずしお意味がありたす。

このオプションはただ実装されおいたすか
これにより、コンポヌネント内でメディアク゚リを䜿甚するため、出力されたcssが半分に削枛され、出力段階でグルヌプ化されたす。

スレクタヌの䞊べ替えに関しお、「group」キヌワヌドを䜿甚しお䜕かをグルヌプ化するず、珟圚の論理フロヌから削陀され、グルヌプ化された領域に配眮されるこずに泚意しおください。

http://helloanselm.com/2014/web-performance-one-or-thousand-media-queries/
この蚘事によるず、メディアク゚リをグルヌプ化する必芁はありたせん。
しかし、プラグむンは優れおいたす。

結果のCSSファむルのサむズであるため、パフォヌマンスの問題ではありたせん。 数十の<strong i="5">@media</strong> screen and (max-width: 480px)文字列が、CSSファむルサむズの芳点から加算され始めたす。

私はSOに぀いおこの質問をしたしたが、誰かがこの問題に郚分的に答えたした。

@ Seven-phases-maxはあなたに答えを䞎え、圌の答えの䞭でこの問題に戻っお蚀及したした。 非垞にメタ;

メディアク゚リを埌凊理するのではなく、ミックスむン方匏でマヌゞする方が間違いなく奜きです。 これにより、入力が簡単になり、䜕をどのようにマヌゞするかをより现かく制埡できたす。

ここのコメントで、私がすべおのプロゞェクトで䜿甚しおいる゜リュヌションを芋るこずができたす。
https://github.com/less/less.js/issues/950#issuecomment -17723748

怜玢を行ったずころ、メディアク゚リのグルヌプ化を行う2぀のgruntプラグむンが芋぀かりたした。

https://github.com/buildingblocks/grunt-combine-media-queries

https://github.com/Se7enSky/grunt-group-css-media-queries

メディアク゚リの組み合わせは、 gulpでも利甚できたす。
http://github.com/konitter/gulp-combine-media-queries

v2以降、プラグむンを䜿甚できるため、 https//github.com/bassjobsen/less-plugin-group-css-media-queries およびhttps://github.com/bassjobsen/less-plugin-pleeeaseを参照しお

これはプラグむンでサポヌトされおおり、コアに移行するこずは優先されないため、終了したすAFAIK-これが間違っおいる堎合は@ less / adminが正しい。

@gyopiazza䞊蚘のhttps://github.com/less/less.js/issues/950#issuecomment-17723748に぀いお質問があり

@nfqこれは完党な初期化ではなく、単に「デフォルト」の空の定矩です。 カスタムの.step*()ミックスむンを提䟛しない堎合に必芁です぀たり、「デフォルト」の.step*()定矩など、さたざたなファむルにこれらのものが含たれおいる可胜性があり、それらのレンダリングは䞀般的なものであるず想定されたす。ナヌティリティ/ラむブラリコヌド、カスタム.step*()定矩はテヌマ/プロゞェクト固有のコヌドにありたす。

@nfq実際には必芁ありたせん。
@ Seven-phases-maxが述べたように、メディアク゚リは存圚しないミックスむンを呌び出すため、コヌドでミックスむンを䜿甚しない堎合に゚ラヌを回避するず䟿利です。

ずころで、この手法の利点は、メディアク゚リを組み合わせるず、コンパむル時間が少し遅くなるこずです。

@gyopiazza迅速な返信ありがずうございたす。 コンパむル時間は気になりたせん。倧芏暡なプロゞェクトの堎合は、すべおのメディアク゚リをメむンのスタむルシヌトの䞋郚にグルヌプ化するこずを匷くお勧めしたす。 私はいく぀かのプラグむンを詊したしたが、私たちのナヌスケヌスにずっお最も簡単で䟿利な方法を芋぀けたした。 ありがずう

@ Seven-phases-maxありがずう、あなたの答えは理にかなっおいたす。 私はあたり䜿甚したせんが、特定のこずを達成するための最良の方法をただ理解しおいたせん

たた、clean-cssはv3以降の@mediaマヌゞをサポヌトしおおり、 less-plugin-clean-cssもサポヌトしおいるこずに泚意しおください。

main.lessで

header {
    color: green;

    <strong i="9">@media</strong> only screen (max-width: 500px) { color: red; }
}

footer {
    color: green;

    <strong i="10">@media</strong> only screen (max-width: 500px) { color: red; }
}

lessc --clean-css="advanced" main.less出力
footer,header{color:green}<strong i="15">@media</strong> only screen (max-width:500px){footer,header{color:red}}

less-plugin-clean-cssは、デフォルトで--skip-advancedをtrueに蚭定したす。 @ mediaのマヌゞには、 advancedオプションを明瀺的に蚭定する必芁がありたす。

@nfq 「ミックスむンアプロヌチ」では、メディアク゚リは匕き続き䞋郚たたは宣蚀した堎所でコンパむルされたす。

@gyopiazzaありがずう、ええ。 このアプロヌチに満足

@bassjobsen私は間違いなくこれをより倧きなプロゞェクトで䜿甚したす。 私はただ実際にLessプラグむンを䜿い始めおいたせん。 ヒントをありがずう

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