從零開始學 Web 之 移動Web(七)Bootstrap
一、常見的響應式框架
隨著Web應用變的越來越複雜,在大量的開發過程中我們發現有許多功能模組非常相似,比如輪播圖、分頁、選項卡、導航欄等,開發中往往會把這些具有通用性的功能模組進行一系列封裝,使之成為一個個元件應用到專案中,可以極大的節約開發成本,將這些通用的元件縮合到一起就形成了前端框架。
常見的響應式框架有:
1、Bootstrap
簡潔、直觀、強悍的前端開發框架,讓web開發更迅速、簡單。
來自 Twitter,粉絲眾多,是目前最受歡迎的前端框架。
2、Amaze UI
中國首個開源 HTML5 跨屏前端框架。
Amaze ~ 妹子UI,國人開發,後起之秀!
3、Framework7
Framework7 是一款免費、開源的移動HTML框架,主要用於開發混合手機App或者網頁App,某些應用場景的體驗幾乎與原生開發的 iOS 和 Android 應用一模一樣,同時也是一款不可獲取的應用原型快速開發及展示工具。
Framework7 主要的作用就是讓你有機會能夠使用 HTML,CSS 和 JavaScript 簡單明瞭地開發 iOS 和 Android 應用。Framework7 是完全開放的,它完全沒有限制你進行開啟腦洞的創造,同時還提供了一些解決方案。
Framework7 並不支援所有平臺。為了給你帶來最好的體驗感受,它只專注於 iOS 和 Google Material 設計風格。
二、bootstrap
Bootstrap是當前最流行的前端UI框架(有預製介面元件)
Bootstrap 是最受歡迎的 HTML、CSS 和 JS 框架,用於開發響應式佈局、移動裝置優先的 WEB 專案。
Bootstrap是基於HTML5和CSS3開發的,它在jQuery的基礎上進行了更為個性化和人性化的完善,形成一套自己獨有的網站風格,併兼容大部分jQuery外掛。
Bootstrap 的所有 JavaScript 外掛都依賴 jQuery。
1、BootStrap的版本瞭解
- 2.x.x:相容性好 / 程式碼不夠簡潔,功能不夠完善
- 3.x.x:穩定性好,放棄了IE6-IE7,對IE8的支援一般 /偏向於響應式佈局開發,移動裝置優先的web專案開發
- 4.x.x:測試階段,偏向於響應式,移動裝置
2、bootstrap 基本模板
<!--說明頁面是html5頁面-->
<!DOCTYPE html>
<!--頁面使用的語言環境-->
<html lang="zh-CN">
<head>
<!--指定當前頁面的字元編碼-->
<meta charset="utf-8">
<!--如果是IE,會使用最新的渲染引擎進行渲染-->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--標準的視口設定-->
<meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=0">
<!-- 上述3個meta標籤*必須*放在最前面,任何其他內容都*必須*跟隨其後! -->
<title>Bootstrap 101 Template</title>
<!-- Bootstrap核心樣式檔案 -->
<link href="../lib/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries: 這兩個檔案的引入是為了支援IE8下面的html5元素和媒體查詢:因為在IE8下面預設不支援HTML5和媒體查詢,所以需要引入兩個外掛-->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// 如果通過file://來檢視檔案,那麼respond.js檔案不能正常工作,說明必須在http://形式下訪問才有用-->
<!--html5shiv.min.js:為了在IE8下面支援HTML標籤
respond.min.js:為了在IE8下面支援媒體查詢-->
<!--[if lt IE 9]> <!--只有IE9之前才會載入這兩個檔案 lt:less than-->
<script src="../lib/html5shiv/html5shiv.min.js"></script>
<script src="../lib/respond.js/respond.js"></script>
<![endif]-->
</head>
<body>
<h1>你好,世界!</h1>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) bootstrap是依賴jquery的-->
<script src="../lib/jquery/jquery.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed bootstarp核心js檔案-->
<script src="../lib/bootstrap/js/bootstrap.min.js"></script>
</body>
</html>
3、bootstrap 佈局容器
bootstrap 的 css 樣式中,有一個起著支撐整個頁面框架的容器,也叫佈局容器,它類似於我們的版心結構。
1、.container
實現固定寬度並支援響應式佈局的容器。
當螢幕寬度 > 1200,則頁面寬度固定為 1170px
當螢幕寬度 992~1200,則頁面寬度固定為 970px
當螢幕寬度 768~992,則頁面寬度固定為 750px
當螢幕寬度 < 768,則頁面寬度固定為 100%.
2、.container-fluid
:實現寬度為全屏 100% 的容器。
4、bootstrap 柵格系統
概念:Bootstrap 提供了一套響應式、移動裝置優先的流式柵格系統,隨著螢幕或視口(viewport)尺寸的增加,系統會預設分為12列。
柵格系統用於通過一系列的行(row)與列(column)的組合來建立頁面佈局,你的內容就可以放入這些建立好的佈局中。
“行(row)”必須包含在 .container (固定寬度)或 .container-fluid (100% 寬度)中,以便為其賦予合適的排列(aligment)和內補(padding)。
你的內容應當放置於“列(column)”內,並且,只有“列(column)”可以作為行(row)”的直接子元素。你可以使用類似 .row 和 .col-xs-4 這種預定義的類,可以用來快速建立柵格佈局。Bootstrap 原始碼中定義的 mixin 也可以用來建立語義化的佈局。
通過為“列(column)”設定 padding 屬性,從而建立列與列之間的間隔(gutter)。通過為 .row 元素設定負值 margin 從而抵消掉為 .container 元素設定的 padding,也就間接為“行(row)”所包含的“列(column)”抵消掉了padding。
柵格系統中的列是通過指定1到12的值來表示其跨越的範圍。例如,三個等寬的列可以使用三個 .col-xs-4
來建立。
如果一“行(row)”中包含了的“列(column)”大於 12,多餘的“列(column)”所在的元素將被作為一個整體另起一行排列。
示例:
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3"></div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3"></div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3"></div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3"></div>
</div>
解釋:上面四個div,如果在超小螢幕上就 100%顯示(佔12柵格);在小螢幕上,每個div佔50%顯示;在中等螢幕上,每個div佔25%顯示;在大螢幕上,每個div佔33.33%顯示。
柵格引數:
.col-xs-
:超小螢幕 手機 (<768px)
.col-sm-
: 小螢幕 平板 (≥768px)
.col-md-
: 中等螢幕 桌面顯示器 (≥992px)
.col-lg-
: 大螢幕 大桌面顯示器 (≥1200px)
注意:
1.柵格系統是往上相容的:意味著小螢幕上的效果在大螢幕上也是可以正常顯示的人,但是大螢幕上的設定在小螢幕上卻無法正常顯示。
2.Row可以再次巢狀在列中。如果不能填滿整列,則預設從左排列,如果超出,則換行展示。
5、列排序
col-xs-offset-n
:往右偏移 n 個柵格,但是會影響後面所有元素也偏移 n 個柵格。(內部通過 margin-left 實現的)col-xs-push/pull-n
:push 往右推,pull 往左拉。往右偏移 n 個柵格,可能會與後面的元素重疊。(內部實現原理通過定位實現)
6、列巢狀
列巢狀就是列中還可以巢狀行,注意不能巢狀版心 container 和 container-fluid。
因為:
如果在外層沒有再包含container,那麼巢狀列的寬度就是參參照當前所在的柵格;
如果外層添加了container,那麼參照就是核心樣式檔案所設定的容器寬度
<div class="container">
<div class="row">
<div class="col-xs-1">1</div>
<div class="col-xs-1">2</div>
<div class="col-xs-6">
<!--
1.如果在外層沒有再包含container,那麼巢狀列的寬度就是參參照當前所在的柵格
2.如果外層添加了container,那麼參照就是核心樣式檔案所設定的容器寬度-->
<!--<div class="container">-->
<div class="row">
<div class="col-xs-6">3</div> <!--這裡的6佔的是直接父div的一半,而不是container的一半-->
<div class="col-xs-6">4</div>
</div>
<!--</div>-->
</div>
<div class="col-xs-1">4</div>
<div class="col-xs-1">5</div>
<div class="col-xs-1">6</div>
<div class="col-xs-1">7</div>
</div>
</div>
7、響應式工具
(無向上相容,內部實現是一個具體的範圍,沒有波及到其他區域)
.hidden-xs :在超小螢幕下不可見
.hidden-sm :在小螢幕下不可見
.hidden-md :在中等螢幕下不可見
.hidden-lg :在大螢幕下不可見
示例:
<div class="container">
<div class="row">
<div class="col-xs-1 hidden-sm">1</div> <!--在小螢幕下不可見-->
<div class="col-xs-1 hidden-xs">2</div> <!--在超小螢幕下不可見-->
<div class="col-xs-6 hidden-lg"> <!--在大螢幕下不可見-->
<div class="col-xs-1">4</div>
<div class="col-xs-1">5</div>
<div class="col-xs-1">6</div>
<div class="col-xs-1">7</div>
</div>
</div>
相關推薦
【高德地圖API】從零開始學高德JS API(七)——定位方式大揭祕
摘要:關於定位,分為GPS定位和網路定位2種。GPS定位,精度較高,可達到10米,但室內不可用,且超級費電。網路定位,分為wifi定位和基站定位,都是通過獲取wifi或者基站資訊,然後查詢對應的wifi或者基站位置資料庫,得到的定位地點。定位資料庫可以不斷完善不斷補充,所以,
《從零開始學Swift》學習筆記(Day67)——Cocoa Touch設計模式及應用之MVC模式
table control sdn rate term targe rac uitabbar bsp 原創文章,歡迎轉載。轉載請註明:關東升的博客 MVC(Model-View-Controller,模型-視圖-控制器)模式是相當古老的設計模式之中的一個,它最早出如今
《從零開始學Swift》學習筆記(Day60)——Core Foundation框架
類型轉換 字符 sso grid blog spa www water 轉載 創文章,歡迎轉載。轉載請註明:關東升的博客 Core Foundation框架是蘋果公司提供一套概念來源於Foundation框架,編程接口面向C語言風格的API。盡管在Swift中調用這樣
從零開始學Kotlin-使用接口(7)
如何 mark android interface inter rand 兩個 blog dtw 從零開始學Kotlin基礎篇系列文章 定義接口 使用關鍵字interface定義接口 interface InterfaceDemo7 { } 類或對象可以實現一個或者多個接
從零開始學習比特幣開發(七)-P2P網路建立流程之生成地址對並連線到指定地址
本節繼續講解比特幣P2P網路建立流程,這節講解的執行緒為’ThreadOpenAddedConnections’,它的作用是生成地址對並連線到指定地址。 本文可以結合比特幣系統啟動的的第12步的講解來看,可以更加系統的瞭解比特幣系統啟動的過程。 P2P 網路的建立是在比特幣系統啟動的第
webpack從零開始構建專案之rem問題(三)
使用webpack解決px轉rem的自適應問題 現在的專案配置已經可以正常執行 接下來我們要考慮下一個問題,由於VUE主要適用於移動端,所以我們需要一個自適應方案 由於這是一個大眾需求的剛需方案,所以我們大可不必自己手動去寫JS程式碼,重複造輪子 那麼我
從零開始學習音視訊程式設計技術(七) FFMPEG Qt視訊播放器之SDL的使用
前面介紹了使用FFMPEG+Qt解碼視訊並顯示。 現在我們就著手給它加上聲音播放。 播放聲音有很多種方式: 以windows系統為例,可以使用如下方法播放音訊: 1.直接呼叫系統API的wavein、waveout等函式 2.使用directsound播放
轉載:高德地圖API學習 從零開始學高德JS API(一)地圖展現
摘要:關於地圖的顯示,我想大家最關心的就是麻點圖,自定義底圖的解決方案了吧。在過去,marker大於500之後,瀏覽器開始逐漸卡死,大家都開始尋找解決方案,比如聚合marker啊,比如麻點圖啊。聚合marker裡面還有一些複雜的演算法,而麻點圖,最讓大家頭疼的,就是如何生成麻點圖,如何切圖,如何把圖片貼到地圖
《從零開始學Swift》學習筆記(Day 57)——Swift編碼規範之凝視規範:文件凝視、文檔凝視、代碼凝視、使用地標凝視
精品 -type mil 顯示 clas ber ansi tex text 原創文章。歡迎轉載。轉載請註明:關東升的博客 前面說到Swift凝視的語法有兩種:單行凝視(//)和多行凝視(/*...*/)。這裏來介紹一下他們的使用規範。 1、文件凝視文件凝視就在每個文
【SpringMvc】從零開始學SpringMvc之資料庫(二)
大家好,在上一篇中,我們介紹了SpringMvc 的搭建,這篇我們來看下SpringMvc連線資料庫。 【SpringMvc】從零開始學SpringMvc之初始化(一) 準備 首先, 需要安裝Mysql、Navicat(或者類似軟體)、有一點sql基礎,瞭解一點
【SpringMvc】從零開始學SpringMvc之初始化(一)
大家好,我們今天開始SpringMvc 這個系列,由於筆者也是安卓出身,對SpringMvc 也是接觸不久,所以,這個系列僅僅只是記錄筆者學習SpringMvc 過程中的心得,如有錯誤,歡迎指正。 在開始之前,我們需要準備一些東西,JDK、Eclipse(MyEclipse)、Tom
【SpringMvc】從零開始學SpringMvc之實現使用者登入(三)
大家好,在前2篇中,我們實現了SpringMvc的配置和資料庫連線,這一篇我們來用html/ajax實現一個簡單的登入功能。 【SpringMvc】從零開始學SpringMvc之初始化(一) 【SpringMvc】從零開始學SpringMvc之資料庫(二) 準
【SpringMvc】從零開始學SpringMvc之實現使用者管理(四)
大家好,在上一篇中,我們實現了使用者登入,這一篇我們來實現使用者的增刪改查。由於在第2篇中,我們已經建立好了資料庫,這裡就不在詳述了。 準備 這裡,我們用到了騰訊的前端模板引擎art-template,不熟悉的小夥伴可以先了解一番,或者有熟悉其他模板引擎的,也
從零開始學Java之五種內部類將執行緒隱藏類中
1.使用普通內部類繼承Thread類 <code class="hljs java has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box;
從零開始學C++之虛擬函式與多型(一):虛擬函式表指標、虛解構函式、object slicing與虛擬函式、C++物件模型圖
#include <iostream>using namespace std;class CObject {public: virtual void Serialize() { cout << "CObject::Serialize ..." <&
從零開始學Java之單例模式:懶漢模式和飽漢模式
單例模式:單例模式是一種常用的軟體設計模式。在它的核心結構中只包含一個被稱為單例類的特殊類。通過單例模式可以保證系統中一個類只有一個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。
從零開始學C++之IO流類庫(三):檔案的讀寫、二進位制檔案的讀寫、檔案隨機讀寫
#include <cassert>#include <iostream>#include <fstream>#include <string>using namespace std;struct Test { int a; int b; };i
從零開始學Java之出入門衛管理(二)
這個系統包含了四塊,第一塊就是人員管理,經理分配三位分別有“ABC"許可權的人,分別管理請假申請,請假審批,門衛登記管理。同時不屬於本公司的內部人員,如別的公司的人員如果想到本公司訪問,也是先通過這”ABC“許可權的三個人代為寫來訪申請,來訪審批,來訪門衛登記管理
從零開始學Java之 編寫簡單的工程
筆者本人從最初開始接觸C語言、C++、VC++、彙編到後來接觸PHP以及Java,在這些語言的使用過程中深刻感受到這些語言都是相同的編寫思路,程式碼編寫的方式也是大同小異,目前認為Java語言的亮點是package以及反射機制。 package不僅提供
從零開始學Python3之五——模組
from ... import ... 什麼的我就不寫了= =模組的 __name__每個模組都有一個名稱,模組中的語句可以找到它們所處的模組的名稱。當模組第一次被匯入時,它所包含的程式碼將被執行。我們可以通過這一特性來使模組以不同的方式執行,這取決於它是為自己所用還