LESS CSS вложенные классы - PullRequest
       21

LESS CSS вложенные классы

97 голосов
/ 25 февраля 2011

Я использую 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. Есть идеи?

Ответы [ 3 ]

182 голосов
/ 25 февраля 2011

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

.class1 {
    &.class2 {}
}

и сгенерированный CSS будет выглядеть так:

.class1.class2 {}

Кстати, @grobitto был первым, кто разместил эту информацию.


[ОРИГИНАЛЬНЫЙ ОТВЕТ]

Меньше так не работает.

.class1.class2 {} - определяет два класса на одном узле DOM, но

.class1 {
    .class2 {}
}

определяет вложенные узлы. .class2 будет применяться только в том случае, если он является дочерним узлом класса class1.

Меня тоже с этим смутили, и я пришел к выводу, что LESS нужно ключевое слово this:).

114 голосов
/ 27 марта 2011
.g {
    &.posted {
    }
}

Вы должны добавить «&» перед .posted

2 голосов
/ 21 февраля 2018

Если амперсанд находится в непосредственной близости от дочернего элемента во вложении, он компилируется в двойной селектор классов. Если между & и селектором есть пробел, он будет скомпилирован в дочерний селектор. Подробнее о вложении в Less здесь .

...