【问题标题】:Correct naming convention for styling only classes in Bootstrap 3?Bootstrap 3中仅样式化类的正确命名约定?
【发布时间】:2014-12-27 17:04:04
【问题描述】:

我正在使用 Twitter Bootstrap 3,我想制作可重用的样式类。下面的代码完全按照我想要的方式工作,但它是否符合 Bootstrap 使用的 SMACKS /OOCSS 命名约定?

注意 - 我使用 LESS 而不是纯 CSS,所以我将使用变量来处理重复的边框厚度等内容。

<div class="box box-red">
  <div class="odd">
    First content
  </div>
  <div class="even">
    second content
  </div>
  <div class="odd">
    third content
  </div>
</div>

<div class="box box-green">
  <div class="odd">
    First content
  </div>
  <div class="even">
    second content
  </div>
  <div class="odd">
    third content
  </div>
</div>

/* Box styles */
.box {
  margin: 10px;
  border-radius: 10px;
}

.box > .odd,
.box > .even {
  padding: 10px;
}

.box > .odd:last-child,
.box > .even:last-child {
  border-bottom: none;
}

/* Red box styles */
.box-red {
  background: #ffcccc;
  border: 1px solid #ff0000;
}

.box-red > .odd,
.box-red > .even {
  border-bottom: 1px solid #ff0000;
}

.box-red > .even {
  background: #ff4c4c;
}

/* Green box styles */
.box-green {
  background: #BCED91;
  border: 1px solid #3B5323;
}

.box-green > .odd,
.box-green > .even {
  border-bottom: 1px solid #3B5323;
}

.box-green > .even {
  background: #78AB46;
}

http://codepen.io/anon/pen/jduyE

【问题讨论】:

  • :nth-child() 不是备选方案吗?
  • 类似.box-even.box-odd(即以小部件名称为前缀)会更容易引导。
  • 我不是说问题的质量,这非常有用,但我想最好放在codereview.stackexchange.com

标签: twitter-bootstrap-3 oocss


【解决方案1】:

您需要考虑所有组件之间的共同点和不同之处。在你的情况下,你只想有不同的颜色,所以不要重复例如边框宽度或边框样式的样式。此外,如果您必须以不同的方式标记奇数行和偶数行,这将是乏味且容易出错的。 :nth-child 伪类接受奇数和偶数作为关键字。请务必注意,IE8 不支持 nth-child,但 last-child 也不支持,而且您已经在使用它,所以我认为 IE8 对您来说并不重要。

CSS:

/* Box styles */
.box {
  margin: 10px;
  border-radius: 10px;
  border: 1px solid transparent;
}

.box > .box-content-row {
  padding: 10px;
  border-bottom: 1px solid transparent;
}

.box > .box-content-row:last-child {
  border-bottom: none;
}


/* Red box styles */
.box-red {
  background: #ffcccc;
  border-color: #ff0000;
}

.box-red > .box-content-row:nth-child(even) {
  background: #ff4c4c;
}

.box.box-red > .box-content-row {
  border-color: #ff0000;
}

/* Green box styles */
.box-green {
  background: #BCED91;
  border-color: #3B5323;
}

.box-green > .box-content-row:nth-child(even) {
  background: #78AB46;
}

.box.box-green > .box-content-row {
  border-color: #3B5323;
}

HTML:

<div class="box box-red">
  <div class="box-content-row">
    First content
  </div>
  <div class="box-content-row">
    second content
  </div>
  <div class="box-content-row">
    third content
  </div>
  <div class="box-content-row">
    add a fourth div for fun
  </div>
  <div class="box-content-row">
    and what the heck a fifth one too
  </div>
</div>

<div class="box box-green">
  <div class="box-content-row">
    First content
  </div>
  <div class="box-content-row">
    second content
  </div>
  <div class="box-content-row">
    third content
  </div>
</div>

【讨论】:

  • 那么,如果我们只是查看我的 HTML 命名约定,那么是否正确?
  • 严格来说,如果您想真正符合 Bootstrap 命名约定,使用 box-red 或 box-green 将是 box-danger(红色)和 box-success(绿色)。就我个人而言,出于可维护性的明显原因,我不喜欢使用颜色名称,或者诸如“危险”、“成功”或“警告”之类的词,除非我的意思是某些东西应该对用户表示警告。我个人使用主要和次要等词。当您希望将来将红色框颜色更改为蓝色时,这些更灵活和“语义”更容易从一种设计转移到另一种设计。
猜你喜欢
  • 1970-01-01
  • 2019-12-13
  • 2013-11-10
  • 1970-01-01
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
  • 2018-01-14
  • 2014-02-07
相关资源
最近更新 更多