【发布时间】:2014-05-24 02:18:59
【问题描述】:
我正在尽我所能从我的 HTML 中删除尽可能多的 Bootstrap 的“类”标记样式,并在有用的地方使用语义标签,但到目前为止它只适用于简单的情况。
当原始类具有大量嵌套规则时,它就变成了一场噩梦。例如,在文档中的以下示例中(添加了大小规则):
<div class="row">
<div class="col-lg-6">
<div class="input-group input-group-lg">
<span class="input-group-btn">
<button class="btn btn-default" type="button">Go!</button>
</span>
<input type="text" class="form-control">
</div><!-- /input-group -->
</div><!-- /.col-lg-6 -->
<div class="col-lg-6">
<div class="input-group input-group-lg">
<input type="text" class="form-control">
<span class="input-group-btn">
<button class="btn btn-default" type="button">Go!</button>
</span>
</div><!-- /input-group -->
</div><!-- /.col-lg-6 -->
</div><!-- /.row -->
这样的规则就像一个魅力:
div:first-child {
.make-row();
& > div {
make-lg-column(6);
}
}
所以这些列类可以从 HTML 中删除。然而,尝试对按钮和表单控件做同样的事情并不那么好,因为有很多嵌套规则来设置这些元素的样式。每次我从 HTML 中删除一个类时,例如使用
input {
.form-control;
}
该输入会丢失基于多个 Bootstrap 规则的所有样式,例如
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn
可以做到以下几点,但恕我直言,跟踪 BS 推出的每一个小细节的每一个小规则是徒劳的:
input {
.form-control;
input-group .form-control;
input-group .form-control:last-child;
}
LESS' :extend(* all) 有时可以使用,但我只有基本的使用经验,到目前为止我还无法弄清楚如何使以下“逻辑”工作,或者即使它是可行的:
div:first-child {
.make-row();
& > div {
make-lg-column(6);
div {
&:extend(.input-group all);
&:extend(.input-group-lg all);
/* ... and so on */
}
}
但是所有那些extend() 仍然无法复制每个嵌套规则。
我在这里使用 LESS' extend() 是否遗漏了任何基本逻辑?这甚至是一个有价值的目标吗?到目前为止,我已经限制了我要删除的 Bootstrap 类,但我不确定这是否是正确的方法。在处理 Bootstrap 中的常见页面元素(导航标题、下拉菜单、表单等)时,会出现很多此类问题。
【问题讨论】:
-
好吧,我个人会说尝试将 Bootstrap 转换为某种语义主题库是浪费时间。从头开始使用标准 CSS 属性编写所需的语义类实际上更快(如果需要,使用相同的 Boostrap 变量)。 Bootstrap 不是语义系统。没有什么可以做到这一点。时期。查看更多here。请注意,您所有精心设计的
extend技巧甚至不能保证仅适用于下一个 minor BS 更新(因为它们只保证这些类在 HTML 中的工作方式)。
标签: twitter-bootstrap twitter-bootstrap-3 less