【发布时间】:2013-04-10 08:52:03
【问题描述】:
我正在处理一个刚刚开始的 Rails 项目。我们想使用 twitter bootstrap 作为我们样式的基础,一开始我们会直接在 HTML 代码中使用 bootstrap 的类名,就像在 bootstrap 的文档中显示的那样,但是在阅读了以下帖子之后:
Lessons learned in maintainable css
Please stop embedding Bootstrap classes in your HTML
很清楚为什么这不是使用引导程序的正确原因,所以在阅读了更多内容后:
除此之外,使用 sass @extend 似乎是避免使用引导程序的类名的正确方法,所以不要这样做:
<button type="submit" class="btn">Search</button>
我们会这样做:
<button type="submit" class="button">Search</button>
我们的 sass 代码如下所示:
.button {
@extend ".btn";
}
这种方法的问题是,除了每次我们扩展引导类以使用不同的名称时都会添加一堆额外的选择器之外,在引导程序使用这样的选择器的情况下:
.form-search .input-append .btn, .form-search .form-input-append .btn {
border-radius: 0 14px 14px 0;
}
按钮不会获得正确的样式,因为 sass 不会将相同的规则应用于我们的自定义类名称,我的意思是,sass 不这样做:
.form-search .input-append .btn, .form-search .input-append .button,
.form-search .form-input-append .btn, .form-search .form-input-append .button {
border-radius: 0 14px 14px 0;
}
所以我想知道,这是避免将引导程序的类名嵌入到 HTML 中的正确方法,如果是,我应该如何处理这个问题(它经常发生)?如果不是,那么使用自定义类名但仍从引导程序中获取样式的更好方法是什么。
非常感谢您对此的看法。请记住,我只是在学习整体网页设计(css、sass、less、html、js 等)。
【问题讨论】:
-
除了“不要使用Bootstrap”或者“重写Bootstrap不迟钝”,我不确定有没有解决办法。在您的按钮示例中,不应引用类名(另外,我认为按钮元素上的“按钮”类是多余的)。您的第二个示例不起作用,因为它是一个复合选择器,而
@extend仅适用于简单选择器。 -
Bootstrap 最初是用 LESS 编写的,但是有几个 SASS 端口: - github.com/thomas-mcdonald/bootstrap-sass - github.com/jlong/sass-twitter-bootstrap 试试看,其中至少一个应该有你需要的类。跨度>
-
Bootstrap 是自以为是的软件。它使用了很多很多的类。如果不想使用很多很多的类,我同意@cimmanon 的观点,即“不要使用 Bootstrap”是一个很好的解决方案。
-
我不同意按钮元素上的“按钮”类是多余的。可能存在您不希望将样式应用于按钮的情况。 “按钮”可能不是最合适的类名,但我相信肯定应该使用一个。
-
我认为是 button.button 还是 button.btn、table.table 还是 table.tbl、label.label 还是 label.lbl,我认为这并不重要,关键是将全局样式应用于标签可能会让以后追踪错位的样式很烦人。
标签: css html twitter-bootstrap sass