1

有没有办法绕过 LESS 范围?它变得烦人。基本上,我有一个定义背景、边框等的 .text-box。然后,在一个小节中,有一个一次性的更改来添加一个 margin-top:.text-box { margin-top: 10px }。现在我不能在该部分中使用 .text-box 并获得我原来的框样式;相反,我得到的只是边缘顶部。我怎样才能在层次结构中获得更高的定义?我想我可以把它变成一个函数,并在两个地方都调用那个函数,但是因为我正在使用 LESS,所以我想做更少的事情并亲吻。在 PHP 中,您可以使用 / 前缀访问全局命名空间,或者在 C++ 中使用 :: 前缀。

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

谢谢

4

1 回答 1

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 中定义的那个),但除此之外,除了定义参数之外,我不知道这个问题的解决方案混音..

--

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

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

ul.categories { .ul_categories; }

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

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

ul.categories { #ul > categories; }

我希望我做对了.. ?

于 2011-05-05T12:22:44.550 回答