Менше класів вкладання CSS


101

Я використовую LESS для вдосконалення свого CSS і намагаюся вкласти клас в клас. Існує досить складна ієрархія, але чомусь моє вкладення не працює. У мене це:

.g {
    float: left;
    color: #323a13;
    .border(1px,#afc945);
    .gradient(#afc945, #c8da64);
    .common;
    span {
        .my-span;
        .border-dashed(1px,rgba(255,255,255,0.3));
    }
    .posted {
         .my-posted;
         span {
            border: none;
         }
    }
}

Я не можу змусити .g.postedпрацювати. це просто показує .gшматочок. Якщо я це роблю, це добре:

.g {
    float: left;
    color: #323a13;
    .border(1px,#afc945);
    .gradient(#afc945, #c8da64);
    .common;
    span {
        .my-span;
        .border-dashed(1px,rgba(255,255,255,0.3));
    }
}

.g.posted {
         .my-posted;
         span {
            border: none;
         }
    }

Я хотів би гніздо .postedв .gхоча. Якісь ідеї?

Відповіді:


192

&Характер має функцію thisключового слова, на самому ділі (а що я не знаю , на момент написання відповіді). Можна написати:

.class1 {
    &.class2 {}
}

і CSS, який буде створений, буде виглядати приблизно так:

.class1.class2 {}

Для запису @grobitto першим опублікував цю інформацію.


[ОРИГІНАЛЬНИЙ ВІДПОВІДЬ]

Менше не працює таким чином.

.class1.class2 {} - визначає два класи на одному вузлі DOM, але

.class1 {
    .class2 {}
}

визначає вкладені вузли. .class2буде застосовано, лише якщо це дочірній вузол класу class1.

Я теж плутався з цим, і я дійшов висновку, що МЕНШЕ потрібно thisключове слово :).


5
sassмає функціонал, вбудований разом із оператором &.
sevenseacat

2
Менше все ще дивовижно, особливо препроцесор PHP LESS, з його модифікованим, більш гнучким синтаксисом. Але поки не з’явиться якийсь загальноприйнятий синтаксис, такі проблеми час від часу виникатимуть. На мою думку, ця менша недостатність.
mingos

1
@ newbie_86 Ви не можете змішати синтаксис sass та нативний css. Тому перехід на Sass вимагає повного переписування ваших стилів, тоді як, якщо ви менше, ви вже можете скласти наявні стилі та почати переписувати їх по частинах.
топлес

1
Мені було цікаво, чому у другої відповіді більше підйомів, ніж у цієї, незважаючи на те, що вона однакова та є остання дата. Тоді я побачив останнє речення і збільшив обидві відповіді
llamerr

@topless, що ви маєте на увазі під "Не можна змішувати сисаксис sass та рідний css", я роблю це роками. Для мене чудово працює.
Шанімаль


2

Якщо амперсанд розташований поруч із дочірнім елементом у вкладенні, він збирається у селектор подвійного класу. Якщо між & та селектором є пробіл, він буде складений у дочірній селектор. Детальніше про гніздування в Менші тут .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.