Css 为什么TwitterBootstrap对样式的变体有重复的类名?
引导类非常重复: 对于同一个按钮:Css 为什么TwitterBootstrap对样式的变体有重复的类名?,css,twitter-bootstrap,less,Css,Twitter Bootstrap,Less,引导类非常重复: 对于同一个按钮: 清洁样式表是一件事。它还通过保持类的一致性使维护变得更容易。(btn-用于按钮,dropdown-用于下拉,label-用于标签等)清洁样式表是一件事。它还通过保持类的一致性使维护变得更容易。(btn-用于按钮,dropdown-用于下拉列表,label-用于标签等)我想我读到引导程序正在阻止自己使用现有项目中可能存在的通用命名类 例如,在一个框架中,拥有一个.success类被认为是危险的,因为它很可能被用作一个自定义类.btn success不太可能发
清洁样式表是一件事。它还通过保持类的一致性使维护变得更容易。(btn-
用于按钮,dropdown-
用于下拉,label-
用于标签等)清洁样式表是一件事。它还通过保持类的一致性使维护变得更容易。(btn-
用于按钮,dropdown-
用于下拉列表,label-
用于标签等)我想我读到引导程序正在阻止自己使用现有项目中可能存在的通用命名类
例如,在一个框架中,拥有一个.success
类被认为是危险的,因为它很可能被用作一个自定义类.btn success
不太可能发生冲突
然而,Bootstrap也与此相矛盾:它们有一个.active
类,在我看来这是一个非常常见的类名
我更喜欢有更多可组合的类名,但它还没有真正让我感到厌烦。但我并不是在制作一个供数千人使用的框架,所以我知道什么 我想我读到过引导程序阻止自己使用可能存在于现有项目中的通用命名类
例如,在一个框架中,拥有一个.success
类被认为是危险的,因为它很可能被用作一个自定义类.btn success
不太可能发生冲突
然而,Bootstrap也与此相矛盾:它们有一个.active
类,在我看来这是一个非常常见的类名
我更喜欢有更多可组合的类名,但它还没有真正让我感到厌烦。但我并不是在制作一个供数千人使用的框架,所以我知道什么 有关更多信息,请访问:
以按钮为例。您可以在按钮
和a
标记上应用这些类,因此无法使用按钮.success
选择所有可能的标记/元素,这些标记/元素可以设置样式,使其看起来像按钮。所以.btn-
的意思是像一个按钮
正如您自己的示例所示,primary
是按钮还是面板样式
引导使用基类和其他类来描述状态。基类设置一般属性,而状态(或大小等)类描述元素的样式和颜色。似乎是这样
另一方面,当许多类共享相同的属性时,基类防止选择器列表(更多字节)增长。你可以看到,当使用较少的。一些例子;考虑下面的基类(更少):
现在将上述基类扩展多次:
button.type1 {type:1; &extend:(.button-base-class all); }
button.type2 {type:2; &extend:.button-base-class all); }
button.type3 {type:3; &extend:(.button-base-class all); }
在CSS中输出以下代码:
.button-base-class:hover,
.button-base-class:active,
.button-base-class:focus,
button.type1:hover,
button.type1:active,
button.type1:focus,
button.type2:hover,
button.type2:active,
button.type2:focus,
button.type3:hover,
button.type3:active,
button.type3:focus {
color: green;
}
这将是一个长长的选择器列表,每次扩展基类时都会增加
最后,人们可能想知道为什么不使用属性选择器而不是基类。还可以使用[class^=“btn-”],[class*=“btn-”]
选择每次出现的btn-btn-
。使用最新版本时,不必在HTML中编写基类。引导避免(部分)属性选择器(特别是IE)。这些性能问题可以在阅读时讨论:更多信息也可以在以下网址找到:
以按钮为例。您可以在按钮
和a
标记上应用这些类,因此无法使用按钮.success
选择所有可能的标记/元素,这些标记/元素可以设置样式,使其看起来像按钮。所以.btn-
的意思是像一个按钮
正如您自己的示例所示,primary
是按钮还是面板样式
引导使用基类和其他类来描述状态。基类设置一般属性,而状态(或大小等)类描述元素的样式和颜色。似乎是这样
另一方面,当许多类共享相同的属性时,基类防止选择器列表(更多字节)增长。你可以看到,当使用较少的。一些例子;考虑下面的基类(更少):
现在将上述基类扩展多次:
button.type1 {type:1; &extend:(.button-base-class all); }
button.type2 {type:2; &extend:.button-base-class all); }
button.type3 {type:3; &extend:(.button-base-class all); }
在CSS中输出以下代码:
.button-base-class:hover,
.button-base-class:active,
.button-base-class:focus,
button.type1:hover,
button.type1:active,
button.type1:focus,
button.type2:hover,
button.type2:active,
button.type2:focus,
button.type3:hover,
button.type3:active,
button.type3:focus {
color: green;
}
这将是一个长长的选择器列表,每次扩展基类时都会增加
最后,人们可能想知道为什么不使用属性选择器而不是基类。还可以使用[class^=“btn-”],[class*=“btn-”]
选择每次出现的btn-btn-
。使用最新版本时,不必在HTML中编写基类。引导避免(部分)属性选择器(特别是IE)。这些性能问题可以在阅读时讨论:我仍然对代码如何更干净有点困惑-看看github上更少的文件,我们可以替换.btn primary{}
.btn.primary{}
。。。就类一致性而言,这些选择器是特定的,因此具有primary
类但没有btn
类的元素不会具有这种样式…@tmimicus我认为这不是一个大问题。我的意思是LESS编译成CSS后的一致性。但这与堆栈溢出无关。我认为这并不能回答这个问题@tmimicus对使用.btn.primary
的可能性有一点看法。我认为真正的问题可能是这些选择器的性能,但我不知道自己是否能确定答案。我仍然有点困惑代码是如何更干净的-看看github上更少的文件,我们可以直接替换.btn primary{}
.btn.primary{}
.btn.primary{}
。。。就类一致性而言,这些选择器是特定的,因此
button.type1 {type:1; &extend:(.button-base-class all); }
button.type2 {type:2; &extend:.button-base-class all); }
button.type3 {type:3; &extend:(.button-base-class all); }
.button-base-class:hover,
.button-base-class:active,
.button-base-class:focus,
button.type1:hover,
button.type1:active,
button.type1:focus,
button.type2:hover,
button.type2:active,
button.type2:focus,
button.type3:hover,
button.type3:active,
button.type3:focus {
color: green;
}