bootstrap4源碼閱讀體會

daidai1126 8年前發布 | 15K 次閱讀 Bootstrap 前端技術

來自: http://zhenhua-lee.github.io/css/bootstrap.html

bootstrap使用了很長時間,是頁面快速開發的一把利器。最近,bootstrap4馬上呼之欲出,春節閑來無事,就從源碼層面解讀下。

1. 移動優先

在移動互聯網時代,很多公司都堅持移動端優先的原則,bootstrap也迎合了這種需求,具體表現在如下方面:

  • 相對單位: % 、 rem 的大量使用
  • grid系統: 為了使用不同的設備,grid系統對xs、sm、md、lg、xl進行了響應式設計,通過media query做到適配
  • 支持flexbox: mobile應該很快就可以使用flexbox

2. 代碼結構

2.1 從less到saas

使用sass作為bootstrap的css預處理器,以前對預處理器不是很感冒,認為將簡單問題復雜化了。但是通過閱讀源碼改變了這種認識:

  • css模塊化: css很簡單、靈活,這是其優點,同時也是一個缺點。通過sass預處理器,可以根據功能將css模塊化,便于css的管理
  • 復用: 變量、mixin、function等技術,可以方便地進行代碼復用
  • 簡潔: 支持each、if等語法,動態輸出內容,例如繁瑣的grid系統,是通過少量的sass代碼做到的

2.2 代碼結構

根據代碼的層次,sass的源碼分為如下幾部分:

  • 支撐部分: 包括 變量定義 、大量的 mixin文件 ,這是整個bootstrap的基礎代碼,也是進行個性化定制的其實位置
  • 全局部分: normalize.scss 用于覆蓋各種瀏覽器的默認行為,保證起始樣式的一致性
  • 基礎樣式部分: 包含了reboot、typography、images、code、table、forms、buttons等,主要是一些常用的基礎html元素
  • grid部分: 選擇性支持flexbox,默認情況下是關閉的,只要將 $enable-flex=true 就可以使用flexbox完成頁面的柵格布局
  • 組件部分: 包含大量常用的基礎組件,有些需要添加jQuery plugin
  • 工具類部分: 常用的簡單樣式,例如間距、文本對齊、字體加粗等

3. Grid

Grid用于頁面的整體布局,同時css3也在起草 grid布局模塊 。Grid也可以單獨使用,bootstrap4提供了一個單獨的文件( bootstrap-grid.scss )來實現柵格系統,具體來說Grid有如下特點:

  • 默認情況下是12柵格
  • 柵格可以嵌套使用
  • 支持5種尺寸下的響應式樣式
  • 5個尺寸可以組合使用,適配不同終端下終端
  • 支持使用flexbox

4. flexbox

flexbox目前還處于草案階段,不過高級瀏覽器已經開始支持,如果只考慮高版本瀏覽器的話,可以啟動通過 $enable-flex=true 來啟動flexbox。

flexbox是未來布局的趨勢,尤其是在復雜頁面布局上,總得來說具有如下幾個優點:

  • 可伸縮性: 通過flex來實現空間的伸縮,在響應式設計中更加靈活(無需關注margin、padding、border等)
  • 順序定制: flexbox的一大亮點,通過order指定元素的顯示順序
  • 輕松對齊: 通過 jsutify-content 、 align-items 可以方便實現元素的對齊
  • 方向性: 通過flex-flow方便確定布局的方向

5. 組件設計

bootstrap里面提供了大量的常用組件,可以直接使用或者簡單進行二次開發,加快日常業務的開發速度。同時,有些組件需要跟js(jQuery)配合,實現組件的交互效果。

里面的組件按是否需要js,可以分為兩類:

  • 無需js配合: Button系列、Form、Input系列、DropDown、Jumbotron、Label、Alert、Cards、Nav系列、Breadcrumb、Pagination、Progress、List
  • 需js配合: Modal、Tooltips、Popovers、Carousels

需要注意的是Cards是bootstrap4新增的組件。

6. 參考

 本文由用戶 daidai1126 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!