Bootstrap_1.響應式網頁、Bootstrap、全局CSS樣式

1 響應式網頁

1.1 概述

  1. 響應式網頁定義
    Responsive Web Design:響應式網頁設計,專爲改進移動互聯網瀏覽體驗提出的概念。
    基本理念:集中創建頁面的圖片和排版大小,智能地根據用戶行爲和使用的設備環境進行相應佈局(自動更改佈局、圖片、文字效果)——一個頁面兼容各種終端
  2. 響應式網頁構成
    1)不能固定寬度,必須是流式網格佈局(Fluid:流式、流動式、液態);
    2)可伸縮的圖片和文字,隨容器大小改變;
    3)CSS3 Media Query能根據瀏覽設備的寬和高調用不同CSS

響應式佈局網頁問題:代碼複雜度極大增加,只適用於內容不太多的頁面(企業官網、門戶網站)

1.2 測試響應式網頁

  1. 瀏覽器設備模擬器
    簡單方便;測試效果有限
  2. 第三方工具
    無需添置太多真實設備,測試方便;但測試效果有限,需進一步驗證;(phonegap,Android ADT,IOS Xcode,www.browserstack.com)
  3. 真實設備.
    測試效果真實可靠,但測試任務量較大

1.3 編寫響應式網頁

  1. 允許網頁寬度自動調整
    在head標籤中聲明viewport元標籤

    <head>
    	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0 user-scalable=no">
    </head>
    

    viewport:元標籤(視口),IOS最先引入,手機中顯示網頁內容的虛擬窗口的大小一般遠大於手機屏幕,HTML可以指定視口大小
    width:視口的寬度,取值爲數值或device-width;
    initial-scale:初始縮放倍率
    maximum-scale:允許縮放的最大倍率
    minimum-scale:允許縮放的最小倍率
    user-scalable:是否允許用戶手動縮放;1/0/yes/no
    height:視口高度,一般不指定
    IOS專用屬性:minimal-ui:ios ui設置在ios設備上隱藏導航欄和地址欄
    一般設置視口寬度爲設備寬度,不允許縮放

  2. 不使用絕對寬度
    所有元素的寬不能指定固定值,必須使用相對寬度:width:60%或auto;

  3. 相對大小的字體
    使用font-size:rem/em

  4. 流式佈局
    使用流式佈局+彈性佈局(float+flex):佈局各個區塊位置都是浮動的;搭配媒體查詢技術(CSS Media Query):響應式網頁必備條件,可以自動根據當前瀏覽器設備的不同選擇執行部分CSS樣式

  5. 圖片自適應
    實現圖片的自動縮放:img{max-width:100%;}或者根據客戶端屏幕大小加載不同尺寸的圖片

  6. 選擇加載CSS
    不推薦根據瀏覽器不同加載不同CSS文件:

    <link rel="stylesheet" href="tinyScreen.css" media="screen and (max-device-width:400px)">
    <link rel="stylesheet" href="smallScreen.css" media="screen and (min-width:400px) and (max-device-width:600px)">
    
  7. CSS的@media規則
    推薦根據媒體查詢不同屏幕寬度選擇執行CSS文件中部分CSS規則

       @media screen and (min-widht:768px) and (max-diwth:991px) {
       	選擇器樣式
       }
    

2 Bootstrap

2.1 Bootstrap

2.1.1 Bootstrap定義

簡潔、直觀、強悍的前端開發框架讓web開發變得迅速簡單
官網:htttp://getbootstrap.com
中文網站:http://www.bootcss.com
Bootstrap是最受歡迎的HTML、CSS和JS框架,用於開發響應式佈局、移動設備優先的WEB項目
Bootstrap提供Sass變量和大量mixin、響應式扎個系統、可擴展的預製組件、基於jQuery的強大插件系統

2.1.2 目錄說明

  1. css目錄——用於存放Bootstrap框架使用的樣式文件
    bootstrap.css:框架的樣式文件
    bootstrap.min.css:框架的樣式壓縮文件
    bootstrap-grid.css:框架的柵格文件
    bootstrap-reboot.css:框架的引導文件
  2. js目錄——用於存放Bootstrap框架使用的核心javascript文件
    bootstrap.js:框架的核心javascript文件
    bootstrap.min.js:框架的核心javascript壓縮文件

按順序導入4個文件:bootstrap.css、jquery.min.js、popper.min.js、bootstrap.min.js

2.1.2 模板

/*聲明*/
<!DOCTYPE html>
<html>
<head lang="en">
  /*元數據*/
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width,initial-scale=1"/>
  /*樣式*/
  <link rel="stylesheet" href="../css/bootstrap.css"/>
  /*腳本*/
  <script src="../js/jquery.min.js"></script>
  <script src="../js/popper.min.js"></script>
  <script src="../js/bootstrap.min.js"></script>
  <title></title>
</head>
<body>
//容器
<div class="container">

</div>
</body>
</html>

2.1.3 相關技術

Bootstrap許多組件需要依賴JavaScript運行,即依賴jQuery、Popper.js以及開發的JavaScript插件:jquery.min.js文件,popper.min.js文件

2.3 bootstrap.css

按順序導入4個文件:bootstrap.css-> jquery.min.js->popper.min.js->bootstrap.min.js

2.3.1 CSS Reset

有些HTML標籤在瀏覽器有默認的樣式
-html、body、h#、p、ul、li、a等;
需要使用css代碼改寫瀏覽器默認設置以保證兼容性;

2.3.2 box-sizing

box-sizing用於設置元素的框模型(盒模型)的方式,取值:
content-box:默認取值,寬度和高度指元素的內容框;
border-box:寬度高度設置元素的內邊距+左右邊框+內容寬高

3 全局CSS樣式

3.1 全局CSS樣式

Bootstrap需要使用HTML5的元素和屬性;

<!DOCTYPE html>
<html lang="zh-CN"></html>

爲了確保繪製和觸屏縮放,在<head>之中添加viewport元數據元素
<meta name=“viewport” content=“width=device-width, initial-scale=1”>

  1. 佈局容器
    .container用來固定寬度並支持響應式佈局的容器;
    .container-fluid類用於100%寬度,佔據全部視口(viewport)的容器
  2. 按鈕
    按鈕顏色:
    .btn-success;.btn-warning;.btn-danger;.btn-info;.btn-primary;.btn-secondary;.btn-dark;.btn-ligth;.btn-link
    按鈕邊框顏色:
    btn-outline-warning黃色邊框
    btn-outline-danger紅色邊框
    按鈕大小:
    btn-lg
    btn-sm
    btn-block
  3. 圖片
    rounded圓角圖片;
    rounded-circle橢圓圖片;
    img-thumbnail縮略圖;
    img-fluid響應式圖片,最大不超過原圖
  4. 文本
    字體大小:h#;
    對齊:text-left、text-center、text-right、text-justify、text-nowrap;
    斜體:font-italic
    字體粗細:font-weight-bold
    大小寫:text-lowercase、text-uppercase、text-capitalize(首字母大寫)
    顏色:text-success、text-warning、text-error、text-info、text-primary
  5. 列表
    無序列表ul和有序列表ol
    .list-unstyled去除點點
    .list-inline
    .list-group定義列表組
    .list-group-item定義列表項
    .active激活狀態
    .disabled禁用
    list-group-item-danger列表項顏色(不列舉)
  6. 表格
    基本表格.table
    條紋狀表格.table-striped
    帶邊框表格.table-bordered
    鼠標懸停.table-hover
    響應式表格(表格父級元素).table-responsive
    背景色table-danger
  7. 輔助樣式
    浮動float- * -left / float--right, 表示不同的屏幕lg/md/sm;使用.clearfix解決高度坍塌問題
    顯示/隱藏.visible/.invisible
    背景.bg-success/warning/info/dange/error/primary
    邊框.border-0去除邊框;-top/right/bottom/left設置單邊;-success/warning…邊框顏色
    圓角.rounded/.rounded-0圓角和去除圓角;.rounded-top/right/bottom/left
    居中對齊.mx-auto
    寬度.w- * ( * : 25/50/75/100 )
    高度.h- * ( * : 25/50/75/100 )
    外邊距m-0~5,分別表示0.25/0.5/1/1.5/3rem;m-auto;單邊設置mt/mr/mb/ml-1
    內邊距同外邊距,使用p代替m;
    內外邊距響應式:m-*-n,m取值爲m或者其單邊形式, *表示xl/lq/md/sm, n:0~5

3.2 柵格系統

3.2.1 概述

Bootstrap提供一套響應式、移動設備優先的流式柵格系統,隨着屏幕或視口(Viewport)的增加,系統自動分爲最多12列,通過一系列行與列的組合來創建頁面佈局

3.2.2 柵格系統工作原理

row必須包含在容器.container(固定寬度).container-fluid(100%寬度)內;row中包含一組column存內容,提供預定義的類,設置不同尺寸

<div class="row">
  <div class="col-4">col-4</div>
  <div class="col-4">col-4</div>
  <div class="col-4">col-4</div>
</div>
<h1>不同屏幕下不同的佔比</h1>
<div class="row">
  <div class="col-lg-4 col-md-2 col-sm-12">第一列</div>
  <div class="col-lg-4 col-md-8 col-sm-12">第二列</div>
  <div class="col-lg-4 col-md-2 col-sm-12">第三列</div>
</div>

3.2.3 柵格佈局

web頁面佈局的三種方法:

佈局方法 table佈局 div+css佈局 Bootstrap柵格佈局
優點 簡單易控制 語義正確,渲染效率高 簡單易控制,語義正確,渲染效率高,支持響應式
缺點 語義錯誤,渲染效率低 控制麻煩 頁面非常複雜就不適合使用柵格

柵格,每行12個單元格,元素在不同屏幕下佔的格子數
柵格佈局最外層使用容器.container定寬容器或.container-fluid變寬容器;容器中聲明.row每行平分12個單元格;行中聲明列.col(每列寬度佔比n/12)

總結:不同屏幕下列的適應性問題
col-xl-* 只能在xl屏幕下有效
col-lg-* 能在xl/lg屏幕下有效
col-md-* 能在xl/lg/md屏幕下有效
col-sm-* 能在xl/lg/md/sm屏幕下有效
小分辨率往大分辨率兼容
列偏移:使用列偏移指定列及其後的列向右偏移:offset-*-n,*表示屏幕像素類型,n表示1~11;底層原理是通過添加margin-left實現偏移

3.2.3 彈性佈局

使用d-*-flex、d- * -inline-flex類創建彈性容器; *代表xl/lg/md/sm

  1. 水平方向
    .flex- * -row設置彈性子元素水平顯示,默認效果;
    .flex- * -row-reverse設置右對齊顯示;
  2. 垂直方向
    .felx- * -column設置彈性子元素垂直方向現實;
    .flex- * -column-reverse翻轉子元素;
  3. 內容排列
    .justify-content-* -value用於修改主軸對齊方式,value取值:
    start默認
    end
    center
    between
    around
  4. 響應式flex類
    根據不同設備設置flex類從而實現頁面響應式佈局:sm,md,lg或xl;
    根據不同屏幕設備創建彈性盒子容器:.d-sm/md/lg/xl-flex;
    根據不同屏幕設備在水平方向/垂直方向顯示彈性子元素:.flex-*-row/column

3.3 表單

form標籤中引用class="form-inline/form-group"來控制方向;
如果只引用form-group添加下外邊距(堆疊表單);只引用form-inline變成彈性容器,默認內部項目主軸爲X軸;form中引用form-inline,內部項目引用form-group,form變成彈性容器,默認內部項目主軸X軸,所有項目變成彈性容器

//內聯表單
<form class="form-inline">
	<div class="form-group">
	</div>

樣式:
form-control/form-check
form-check-inline/form-check-input
form-check-label/form-text

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章