较少的问题(范围和显式节点名称)

时间:2011-04-25 19:08:01

标签: css less

有没有办法绕过LESS范围?它变得很烦人。基本上,我有一个.text框,它定义了背景,边框等。然后,在一个子部分中,有一个一次性的更改来添加一个margin-top:.text-box {margin-top:10px}。现在我不能在该部分中使用.text-box并获得我原来的盒子样式;相反,我得到的只是保证金顶部。如何在层次结构中获得更高的定义?我想我可以把它变成一个函数,并在两个地方调用该函数,但由于我正在使用LESS,我想做的更少而且亲吻。在PHP中,您可以使用/ prefix或使用:: prefix。

在C ++中访问全局命名空间

此外,似乎任何具有节点名称的定义都不适用于原型设计。意思是,我不能将其声明为ul.products,然后使用ul.categories {ul.products}。我必须省略节点名称才能重新使用它。含义:.categories {.products}。这是疏忽/不可能吗?

由于

1 个答案:

答案 0 :(得分:2)

好吧所以让我们说你已经定义了你的mixin,例如:

.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.
    }
}

...将你的mixin放到位,并添加一些你需要添加的属性(它将覆盖mixin本身的任何属性但是确保在调用mixin之后定义覆盖属性。

它不是理想的解决方案,因为它在输出css文件中创建了两个声明(将有一个来自mixin,后面是你在.sub_section中定义的声明),但除此之外我不知道除了这个问题的解决方案。定义参数mixin ..

-

你的第二个问题 - 我认为少有人不会故意支持范围有限的定义......如果你真的需要知道特定标签要使用某个mixin,我会像这样处理它:

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

ul.categories { .ul_categories; }

你也可以定义一个包并从那里调用东西:

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

ul.categories { #ul > categories; }

我希望我做对了..?