2013-05-12 74 views
4

我在考慮在HTML中只使用語義類,而仍然在語義類中使用Bootstrap的類樣式。Bootstrap僅適用於mixins /佔位符 - 具有語義類

例如:

混入:

.newsItem { 
    @include span4; 
} 

或佔位符/擴展:

.newsItem { 
    extend span4; 
} 

是否有可能呢?你看到有什麼理由不推薦這麼做嗎?謝謝。

回答

2

@include span4;@extend .span4;不會起作用,因爲:

  • 在第一個,沒有任何混入叫引導的方式。
  • 在第二個中,沒有任何選擇器調用span4,選擇器正在使用mixin生成,如grid-core-span-x

有爲此目的建立mixin:makeRow()makeColumn()

在你的情況,如果你想在你的.newsItem div來使用span4,你必須把這個在你的SASS:

.newsItem { 
    @include makeColumn(4); 
} 

的代碼從這些混入很簡單。

@mixin makeRow() { 
    margin-left: $gridGutterWidth * -1; 
    @include clearfix(); 
} 

@mixin makeColumn($columns: 1, $offset: 0) { 
    float: left; 
    margin-left: ($gridColumnWidth * $offset) + ($gridGutterWidth * ($offset - 1)) + ($gridGutterWidth * 2); 
    width: ($gridColumnWidth * $columns) + ($gridGutterWidth * ($columns - 1)); 
} 

這混入有缺點。我不使用它們,因爲響應式網格不會在您的語義類中使用。爲什麼?因爲如果您查看提供自舉響應的文件(例如,_responsive-767px-max.scss),則只有spanX類轉換爲100%寬度。代碼:

@media (max-width: 767px) { 
    /* ... */ 

    [class*="span"], 
    .uneditable-input[class*="span"], 
    .row-fluid [class*="span"] { 
     float: none; 
     display: block; 
     width: 100%; 
     margin-left: 0; 
     @include box-sizing(border-box); 

     /* ... */ 
} 
+0

這是真的只爲網格?如果例如,我想使用語義按鈕類? – Daniel 2013-05-12 21:21:37

+0

@Daniel您可以使用'@ extend'來引導一些組件。 Button類是其中之一,因爲按鈕中的CSS很簡單,它沒有嵌套選擇器。但是,例如,您不應該重複使用'form-horizo​​ntal',因爲生成的CSS會非常糟糕,因爲嵌套的選擇器。 – Pigueiras 2013-05-12 21:24:41

+0

@Daniel我在按鈕覆蓋這個答案中有一個例子:http://stackoverflow.com/a/16406593/1004046 – Pigueiras 2013-05-12 21:45:31