Меньше проблем (область и явное имя узла) - PullRequest
1 голос
/ 25 апреля 2011

Есть ли способ обойти LESS? Это становится раздражающим. По сути, у меня есть .text-box, который определяет фон, границу и т. Д. Затем в подразделе есть одноразовое изменение для добавления margin-top: .text-box {margin-top: 10px}. Теперь я не могу использовать .text-box в этом разделе и получить мои оригинальные стили box; вместо этого все, что я получаю, является вершиной маржи. Как я могу получить определение выше в иерархии? Полагаю, я мог бы сделать это функцией и вызывать эту функцию в обоих местах, но, поскольку я использую LESS, я хочу делать меньше и KISS. В PHP вы можете попасть в глобальное пространство имен, используя префикс /, или в C ++, используя префикс ::.

Кроме того, не похоже, чтобы какие-либо определения с именем узла работали для прототипирования. То есть я не могу объявить это ul.products, а затем использовать ul.categories {ul.products}. Я должен опустить имя узла, чтобы повторно использовать его. Значение: .categories {.products}. Это упущение / невозможность?

Спасибо

1 Ответ

2 голосов
/ 05 мая 2011

хорошо, скажем, у вас есть определенный миксин, например:

.text-box {
    background: #eee;
    border: 1px solid #ccc;
    color: #333;
    margin-top: 5px;
}

Теперь вы хотите добавить свойство или изменить его в каком-то подразделе, а затем просто сделайте это:

div.content {
    div.sub_section {
        .text-box;
        margin-top: 10px; // this will override 5px defined in the mixin.
    }
}

... который помещает ваш миксин на место и добавляет некоторое свойство, которое вам нужно добавить (которое переопределит любое свойство из самого миксина, НО убедитесь, что переопределенное свойство определено ПОСЛЕ вызова миксина.

это не идеальное решение, так как оно создает две декларации в выходном файле css (будет одна из mixin, за которой следует та, которую вы определили в .sub_section), но в остальном я не знаю решения этой проблемы, кроме определяющий параметрический миксин ..

-

ваша вторая проблема - я думаю, что less не поддерживает преднамеренные определения преднамеренно ... если вам действительно нужно знать, что определенный миксин должен использоваться определенным тегом, я бы поступил так:

.ul_products   { ... }
.ul_categories { .ul_products; ... }

ul.categories { .ul_categories; }

вы также можете определить связку и вызывать вещи оттуда:

#ul {
  .products   { ... }
  .categories { ... }
}

ul.categories { #ul > categories; }

Надеюсь, я правильно понял? ..

...