響應式設計核心思想:css
響應式設計:頁面的設計與開發應當根據用戶的行爲以及設備環境(系統平臺,屏幕尺寸、屏幕定向等)進行相應的響應和調整,具體的實踐方式由多方面決定,包括彈性網絡佈局、圖片使用等。html
不管用戶在平板上仍是pc上應該可以自動切換分辨、圖片尺寸及相關腳本等,以適應不一樣設備。前端
響應式設計是就一個網站可以兼容多個終端,而不是爲每一個終端都適配一個版本。jquery
bootstrap圍繞響應式進行設計bootstrap
此分隔方案下容器最大寬度:自動網絡
此分隔方案下容器最大寬度:750pxdom
此分隔方案下容器最大寬度:970px佈局
此分隔方案下容器最大寬度:1170px網站
使用單一的一組
.com-md-*
柵格類,就能夠建立一個基本的柵格系統,在手機和平板設備上一開始是堆疊在一塊兒的(超小屏幕到小屏幕這一範圍),在桌面(中等)屏幕上變爲水平排列。全部列(column)必須放在row
內。
系統自動把屏幕row
segment成12份col,每份獲得的分辨率與顯示器屏幕大小有關,成正比。spa
如上圖:指定Class時,尾部的數字即表示這一column佔總row的欄數
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Starter Template for Bootstrap</title> <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"/> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <script src="js/bootstrap.min.js"></script> </head> <style type="text/css"> .container div { border: solid 1px black; } .col-xs-4 { font-weight: bold; } </style> <body> <div class="test"></div> <div class="container"> <div class="container"> <div class="row"> <div class="col-md-1">col-md-1</div> <div class="col-md-1">col-md-1</div> <div class="col-md-1">col-md-1</div> <div class="col-md-1">col-md-1</div> <div class="col-md-1">col-md-1</div> <div class="col-md-1">col-md-1</div> <div class="col-md-1">col-md-1</div> <div class="col-md-1">col-md-1</div> <div class="col-md-1">col-md-1</div> <div class="col-md-1">col-md-1</div> <div class="col-md-1">col-md-1</div> <div class="col-md-1">col-md-1</div> </div> <div class="row"> <div class="col-md-6 col-sm-8">col-sm-6</div> <div class="col-md-6 col-sm-4">col-sm-6</div> </div> <div class="row"> <div class="col-xs-4">col-xs-4</div> <div class="col-xs-4">col-xs-4</div> <div class="col-xs-4">col-xs-4</div> </div> </div> </div> </body> </html>
row
設置中等分辨率.col-md-*
row
設置中等分辨率.col-md-*
和小分辨率.col-sm-*
row
只設置超小分辨率.col-xs-*
手機和平板設備上一開始是堆疊在一塊兒的(超小屏幕到小屏幕這一範圍),在桌面(中等)屏幕上變爲水平排列
.col-md-*
時col
的規則。因此會堆疊起來,變爲水平排列。.col-sm-*
因此將會按照規則繪製成8/12 and 6/12row
的.col
鋪散開,而且,第二行row
設置了.col-md-*
即中等分辨率繪製規則,則兩份column
將按照6/12和6/12規則繪製。.col-xs-*
也會起做用,因此第三行row
依舊是按照3組4/12規則進行繪製 ——— 小分辨率向上兼容大分辨率
媒體查詢是進行響應式設計的核心要素,其功能很是強大
Bootstrap主要用到min-width,max-width以及and語法,用於在不一樣的分辨率下設置不一樣的css樣式
@media (max-width: 767px) { /*小於 767px 這裏的樣式生效*/ } @media (min-width: 768px) and (max-width: 991px) { /*在768px ~ 991px之間 這裏的樣式生效*/ } @media (min-width: 1200px) { /*大於 1200px 這裏的樣式生效*/ }
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Starter Template for Bootstrap</title> <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"/> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <script src="js/bootstrap.min.js"></script> </head> <style type="text/css"> div { border: 1px black solid ; } </style> <body> <div class="container"> <div class="row"> <div class="col-md-4">col-md-4</div> <div class="col-md-4">col-md-4</div> <div class="col-md-4">col-md-4</div> </div> <div class="row"> <div class="col-xs-6">col-xs-6</div> <div class="col-xs-6">col-xs-6</div> </div> <div class="row"> <div class="col-md-3 col-md-offset-3">col-md-3</div> <div class="col-md-2 col-md-offset-2">col-md-2</div> </div> </div> </body> </html>
在當前列的範圍內,以左爲基礎向右偏移x/12
,x表示offset
後綴數字
第三個row
中,使用了col-md-offset-*
列偏移
偏移基點不是基於row
的,好比.col-md-2
偏移2格是基於.col-md-3
來移動
<div class="row"> <div class="col-md-8"> <div class="row"> <div class="col-md-6">col-md-6</div> <div class="col-md-6">col-md-6</div> </div> </div> <div class="col-md-4">4</div> </div>
row
,代碼能夠看到,在本來8等分容器的基礎上繼續拆分紅了2個6等分的容器,這很好理解。<div class="row"> <div class="col-md-3 col-md-push-5">col-md-3</div> <div class="col-md-2 col-md-pull-2">col-md-2</div> </div>
繼續添加Test,能夠看到兩個新的功能,push
and pull
.col-md-push-*
字面意思是"推",可理解爲向左推,天然就往右移動了。
.col-md-pull-*
與push相反,字面意思"拉",在原來的位置基礎上,向左"拉",容器向左移動。
兩個屬性之間互不干涉,能夠重合。
<div class="row"> <div class="col-md-8 col-xs-6 col-sm-3">8-3-6</div> <div class="col-md-4 col-xs-6 col-sm-6">4-6-6</div> </div>
適配了三種不一樣的分辨率下的容器組合
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Starter Template for Bootstrap</title> <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"/> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <script src="js/bootstrap.min.js"></script> </head> <style type="text/css"> div { border: 1px black solid ; } </style> <body> <div class="container"> <div class="row"> <div class="col-xs-6 col-sm-3">col-xs-6 col-sm-3</div> <div class="col-xs-6 col-sm-3">col-xs-6 col-sm-3</div> <div class="col-xs-6 col-sm-3">col-xs-6 col-sm-3</div> <div class="col-xs-6 col-sm-3">col-xs-6 col-sm-3</div> </div> </div> </body> </html>
上圖是定義容器在不一樣分辨率下的佔比示意
小分辨率下,3/12排一行
超小分辨率下,6/12排兩行(第一行佔滿,自動float:left)
<div class="container"> <div class="row"> <div class="col-xs-6 col-sm-3">col-xs-6 col-sm-3 (1) sdfsdfsdflsjfsl;dfjsdl;kj sdfsdfsdflsjfsl;dfjsdl;kj </div> <div class="col-xs-6 col-sm-3">col-xs-6 col-sm-3 (2)</div> <div class="col-xs-6 col-sm-3">col-xs-6 col-sm-3 (3)</div> <div class="col-xs-6 col-sm-3">col-xs-6 col-sm-3 (4)</div> </div> </div>
而後咱們給每一個col容器編號,並在編號爲1的col容器裏添加內容,如圖。
經過檢查元素可知,全部col
塊都設置了float:left
,(1)中添加內容後內容後容器高度擴大到第二行位置,使得本來應該在左邊的(3)容器沒法左對齊,這時須要清除浮動。
<body> <div class="container"> <div class="row"> <div class="col-xs-6 col-sm-3">col-xs-6 col-sm-3 (1) sdfsdfsdflsjfsl;dfjsdl;kj sdfsdfsdflsjfsl;dfjsdl;kj </div> <div class="col-xs-6 col-sm-3">col-xs-6 col-sm-3 (2)</div> <div class="clearfix visible-xs"></div> <div class="col-xs-6 col-sm-3">col-xs-6 col-sm-3 (3)</div> <div class="col-xs-6 col-sm-3">col-xs-6 col-sm-3 (4)</div> </div> </div> </body>
<div class="clearfix visible-xs"></div>
,此代碼含義爲:只在超小分辨率的狀況下(前提),清除左右的浮動元素,則(3)號容器得以另起行並向左排列。清除浮動後如圖:
clearfix
功能,能夠向其添加文本內容,並將1234容器重置回原來的內容,看看具體實現。<body> <div class="container"> <div class="row"> <div class="col-xs-6 col-sm-3">col-xs-6 col-sm-3 (1)</div> <div class="col-xs-6 col-sm-3">col-xs-6 col-sm-3 (2)</div> <div class="clearfix visible-xs">ss</div> <div class="col-xs-6 col-sm-3">col-xs-6 col-sm-3 (3)</div> <div class="col-xs-6 col-sm-3">col-xs-6 col-sm-3 (4)</div> </div> </div> </body>
不使用Bootstrap定義的容器,如將.container
換爲別的class。如:ID