Bootstrap源碼解讀之柵格化篇

来源:http://www.cnblogs.com/chenshanyuanzi/archive/2017/10/17/7680922.html
-Advertisement-
Play Games

本文純屬自己研究所寫筆記,如果有錯誤還請多多指教提出 版心(container) 版心:class名為.container的容器,其版心的寬度在各個屏幕設備下是不一樣的值,版心兩邊就是留白。 各尺寸下版心寬度如下表: 屏幕設備版心寬度 max-width:768px xs 繼承父元素寬度(即widt ...


本文純屬自己研究所寫筆記,如果有錯誤還請多多指教提出

版心(container)

  1. 版心:class名為.container的容器,其版心的寬度在各個屏幕設備下是不一樣的值,版心兩邊就是留白。 
    各尺寸下版心寬度如下表:

    屏幕設備版心寬度
    max-width:768px xs 繼承父元素寬度(即width:100%)
    min-width:768px sm 750px
    min-width:992px md 970px
    min-width:1200px lg 1170px
.container {
  padding-right: 15px;
  padding-left: 15px;
  margin-right: auto;
  margin-left: auto;
}
@media (min-width: 768px) {
  .container {
    width: 750px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 970px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1170px;
  }
}
.container-fluid {
  padding-right: 15px;
  padding-left: 15px;
  margin-right: auto;
  margin-left: auto;
}

 

  1. 不管什麼寬度的屏幕,版心容器.container總會有左右15px的padding,是為了讓內容不直接緊貼瀏覽器邊緣的。在一個container中永遠不要再嵌套一個container.

  2. .container-fluid的版心容器跟小於768px屏幕的版心一樣,自己沒有設置固定寬度值,繼承其父元素的寬度。

  3. .container容器是用來在響應式寬度上提供寬度約束。響應尺寸的改變其實改變的是container,行(row)和列(column)都是基於百分比的所以它們不需要做任何改變。

行(row)

  1. 行:class名為.row的容器;它為列(col)一共了空間,總共分為12列。
  2. row兩端會有兩個負的15px的margin值,為了抵消掉container兩側的padding值。.row在container外使用時無效的。
.row {
    margin-right: -15px;
    margin-left: -15px;
}

 

列(column)

  1. 每一列都有兩側15px的padding值。永遠不要在.row容器外使用col,否則col是無效的。
  2. 每列col的padding值給其內容提供了空白,使內容不會緊貼在瀏覽器邊緣,列之間也不會緊貼在一起。
  3. ==列都是按照百分比分配的(相對於版心寬度的百分比,所以版心越寬的,每列寬度就越大)==。
//五列的寬度
.col-xs-5 {
  width: 41.66666667%;
}
// 四列的寬度
.col-xs-4 {
  width: 33.33333333%;
}
// 三列的寬度
.col-xs-3 {
  width: 25%;
}
// 占兩列的寬度
.col-xs-2 {
  width: 16.66666667%;
}
// 每列的寬度是版心寬度的8.33333333%
.col-xs-1 {
  width: 8.33333333%;
}
...
// 如果是中等屏幕 類名為.col-md-1
//       小屏幕   類名為:.col-sm-1
//       大屏幕   類名為:.col-lg-1
@media (min-width:768px) {
    .col-sm-1 {
        width: 8.33333333%;
    }
    .col-sm-2 {
        width: 16.66666667%;
    }
    ...
}
@media (min-width: 992px) {
    .col-md-1 {
        width: 8.33333333%;
    }
    .col-md-2 {
        width: 16.66666667%;
    }
    ...
}
@media (min-width:1200px) {
    .col-lg-1 {
        width: 8.33333333%;
    }
    .col-lg-2 {
        width: 16.66666667%;
    }
    ...
}

 

柵格嵌套
  1. 當設置了 container/row/column之後,可以在column內再創建新的柵格系統,在column裡面直接再添加row就可以了,不需要再套container了,因為列的兩側padding值 正好可以抵消row的兩側負的margin值,列相當於container了。

偏移(offsets)

  1. 偏移offset主要是靠列的margin-left值決定。偏移一列的話就是margin-left:8.3333333%(1/12),偏移兩列就是margin-left:16.66666667%(即2/12);
.col-xs-offset-0 {
    margin-left: 0;
}
.col-xs-offset-1 {
    margin-left: 8.33333333%;
}
...
@median (min-width:768px) {
    .col-sm-offset-0 {
        margin-left: 0;
    }
    .col-sm-offset-1 {
        margin-left: 8.33333333%;
    }
    ...
}
...

 

列的排序(Push 和 Pull)

  1. 在實際應用中更多表現的是呼喚位置和進行排序,允許你打破html中div從上到下 從左到右的固定佈局。
  2. pull 和 push 是通過position的 right 和 left值實現的,pull是通過right值,pull-1值 right:8.33333333% (1/12); push-1值=> left:8.33333333%(1/12);
// push 距離左邊的距離(向右推的列數)以最小屏為例
.col-xs-push-2 {
  left: 16.66666667%;
}
.col-xs-push-1 {
  left: 8.33333333%;
}
.col-xs-push-0 {
  left: auto;
}
...

// pull 距離右邊的距離(向左拉的列數)以最小屏為例
.col-xs-pull-2 {
  right: 16.66666667%;
}
.col-xs-pull-1 {
  right: 8.33333333%;
}
.col-xs-pull-0 {
  right: auto;
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本節內容 - 通用可執行文件結構(COFF)(readelf -h) - COFF用段(section)存儲不同類型數據(readelf -S) - 常用段 - 演示:使用readelf、xxd、objdump、gdb查看可執行文件結構信息 - 演示:objcopy -add-section;st... ...
  • Given an array of n integers and q queries. Write a program to print floor value of mean in range l to r for each query in a new line. Input: The firs ...
  • #include #include using namespace std; //保留2位小數 int main(){ double x=123.456; double y=3.14159; double z=-3214.67; cout<<setiosflags(ios::fixed)<<seti... ...
  • Description:Java SE 9 is the latest update to the Java Platform(General Availability on 21 September 2017). This release includes much awaited new fea ...
  • 除了nodejs之外,後端技術(php/java等)及環境搭建一直都是大多數web前端開發人員的弱項,而且每當公司里進來一個新的前端開發人員,第一件事情要做的就是搭建開發環境,需要在新的電腦上安裝IDE、nodejs、npm以及團隊裡面需要用到的技術所需要的依賴,一般需要花費一兩天時間;另外,如果團 ...
  • 背景 公司業務由數以百計的分散式服務溝通,每一個請求路由過來後,會經過多個業務系統並留下足跡,並產生對各種緩存或者DB的訪問,但是這些分散的數據對於問題排查,或者流程優化比較有限。對於一個跨進程的場景,彙總收集並分析海量日誌就顯得尤為重要。在這種架構下,跨進程的業務流會經過很多個微服務的處理和傳遞, ...
  • 背景 隨著公司業務的高速發展以及數據爆炸式的增長,當前公司各產線都有關於搜索方面的需求,但是以前的搜索服務系統由於架構與業務上的設計,不能很好的滿足各個業務線的期望,主要體現下麵三個問題: 1. 不能支持對語句級別的搜索,大量業務相關的屬性根本無法實現 2. 沒有任何搜索相關的指標評價體系 3. 擴 ...
  • 銜接上文[解讀REST] 4.基於網路應用的架構風格,上文總結了一些適用於基於網路應用的架構風格,以及其評估結果。在前文的基礎上,本文介紹一下Web架構的需求,以及在對Web的關鍵協議進行設計和改進的過程中遇到的問題;以及在對基於網路應用的架構風格進行評估的過程中的領悟;結合Web的需求進而推導出R ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...