日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

html笔记(四)弹性盒+响应式

發(fā)布時間:2023/12/2 HTML 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html笔记(四)弹性盒+响应式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
大標題小節(jié)
一、彈性盒1. 標準盒模型和怪異盒模型
2. 彈性盒dipalay
3. 與display配合使用的其他屬性
4. 彈性盒的對齊方式
5. 彈性盒的默認特性
二、響應式布局1. 媒體查詢
2. 怎樣使用媒體查詢
3. 優(yōu)缺點以及使用場景
4. Meta 標簽的定義
5. 常見的屬性操作
三、多列布局
四、移動端布局1. 百分比彈性布局
2. rem
3. vw、vh

一、彈性盒

css 中盒子模型分為兩種: w3c 標準(標準盒模型)IE標準盒子模型(怪異盒模型)
通過 box-sizing: content-box(默認,標準盒模型)/border-box(怪異盒模型); 來轉換。

  • 大多數(shù)瀏覽器在采用 w3c 標準模型,而 IE 中采用 Microsoft 自己的標準;
  • 怪異模型是“部分瀏覽器在支持 w3c 標準的同時還保留了原來的解析模式”,怪異模式主要表現(xiàn)在 IE 內(nèi)核的瀏覽器。
  • 當沒有 doctype 時(即沒有<!DOCTYPE html>聲明時),IE6 會觸發(fā)怪異模式;。

1. 標準盒模型 和 怪異盒模型(IE 盒子模型):

(1)在標準模式下,一個塊的總寬度 = width + margin(左右) + padding(左右) + border(左右)

(2)在IE盒子模型下,一個塊的總寬度= width + margin(左右)(即width已經(jīng)包含了padding和border值);


(3)示例:給 div標簽 和 p標簽 設置一樣的寬高,但是 div標簽 有 border、padding 值。


2. 彈性盒 display

(兼容寫法:-webkit-display:)設置在父元素上。使用彈性盒后, float、vertical-align、多列等都樣式都無效;

display 的屬性值:

  • box,將對象作為彈性伸縮盒顯示。(伸縮盒最老版本);
  • inline-box,將對象作為內(nèi)聯(lián)塊級彈性伸縮盒顯示。(伸縮盒最老版本);
  • flexbox,將對象作為彈性伸縮盒顯示。(伸縮盒過渡版本);
  • inline-flexbox,將對象作為內(nèi)聯(lián)塊級彈性伸縮盒顯示。(伸縮盒過渡版本);
  • flex, 將對象作為彈性伸縮盒顯示。(伸縮盒最新版本);
  • inline-flex,將對象作為內(nèi)聯(lián)塊級彈性伸縮盒顯示。(伸縮盒最新版本);

3. display 配合使用的其他屬性:

(1)flex-direction:,排列方式(寫在父元素身上);
兼容寫法: -webkit-flex-direction:。

  • row,默認的排列方式,橫向從左到右排列(左對齊) ;
  • row-reverse,反轉橫向排列(右對齊,從后往前排,最后一項排在最前面);
  • column,縱向排列;
  • column-reverse,反轉縱向排列,從后往前排,最后一項排在最上面);

(2)order:,彈性盒子子元素順序(設置在子元素上

  • 負數(shù)靠前;(越小越前)
  • 0為原始位置;
  • 正整數(shù)靠后(越大越后);

給子元素設置了order,order值越大,順序越靠后;

<style>*{margin:0; padding:0;}ul{display: flex;background:#9f9;}li{list-style: none;width: 50px;height: 50px;border:1px solid #000;}ul.one li:nth-child(1){order:1}ul.one li:nth-child(2){order:0}ul.one li:nth-child(3){order:13}ul.one li:nth-child(4){order:-2}ul.one li:nth-child(5){order:-1} </style> <body><ul class="one"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul> </body>

(3)flex-grow:,彈性盒分配剩余空間(設置在子元素上

  • 0 為默認;
  • 分配提成(數(shù)字);
  • 沒有設置flex-grow的子元素寬度不變;
  • 設置flex-grow了的子元素寬度 = 原寬度 + 剩余寬度*分配剩余空間比例;
    • 分配剩余空間比例 = flex-grow值/所有flex-grow值之和。

    <style>*{margin:0; padding:0;}ul.two{display: flex;background:#9f9;width: 400px;} /*li的總寬度是50px*5=250;剩余空間是400-250=150px*/li{list-style: none;width: 50px;height: 50px;border:1px solid #000;}/*剩余空間總共分成了2+3=5份,第2個li占了2分,所以分配到了150*2/5=60px;總寬度是50+60=110px*/ul.two li:nth-child(2){flex-grow: 2;}ul.two li:nth-child(5){flex-grow: 3;} /*注意邊框的寬度也會被計算進去。這里為了方便看懂,就沒有把寬度減去了*/ </style> <body><ul class="two"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul> </body>

    (4)flex-shrink:,檢索彈性盒的收縮比率(子元素設置);

    • 1 默認;
    • 數(shù)字

    設置flex-shrink后,所有子元素寬度 = 原寬度 - 超出寬度*收縮占比;

    • 收縮占比=flex-shrink/(所有設置flex-shrink的值之和 + 沒有設置flex-shrink的子元素個數(shù));沒有設置flex-shrink的值=1。

    <style>*{margin:0; padding:0;}ul.three{display: flex;background:#9f9;width: 250px;} /*li的總寬度是50px*5=250;剩余空間是400-250=150px*/ul.three li{width:90px;}/*有5個li,總寬度是90px*5=450px,超出了450-250=200px;*//*flex-shrink默認是1,所以沒有設置的收縮比率都占了1,因此第3個li收縮了比率是2/8,也就是說收縮寬度=200*2/8=50,所以它的寬度=原寬度-收縮寬度=90-50=40px*/ul.three li:nth-child(3){flex-shrink: 2;}ul.three li:nth-child(4){flex-shrink: 3;}/*設置了flex-shrink之后,寬度=原寬度-收縮寬度=90-200*3/8=15px*/ </style> <body><ul class="three"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul> </body>

    (5)flex-basis:,檢索彈性盒伸縮準值(子元素設置);

    • auto 默認;
    • 數(shù)字px;

    設置了flex-basis:之后子元素的寬度=原寬度*伸縮比例。

    • 伸縮比例=子元素寬度總和/父元素寬度。

    <style>*{margin:0; padding:0;}ul{display: flex;background:#9f9;}/* 設置了flex-basis(相當于給子元素設置寬度,但是設置這個元素之后可以讓子元素的寬度按比列縮放) */ul.four{width: 300px;} /*伸縮準值:按比列縮放每個子元素。*/ul.four li{width: 110px;} /*所有l(wèi)i總寬度和=li*4+60=500px;要使500*?=父元素寬度300px,得到的?=0.6,所以出第3個li外,其他li寬度=110*0.6=66px*/ul.four li:nth-child(3){flex-basis:60px;} /*第3個li寬度=60*0.6=36;*/ </style>

    (6)flex:,伸縮性(設置在子元素上
    可以設置3個值,flex屬性是 flex-grow,flex-shrink 和 flex-basis 這3個CSS屬性的縮寫,推薦使用該屬性,而不是單獨書寫;

    • 設置一個值:分配剩余空間;
    • 設置三個值:0 0 百分比分配;
    <style>*{margin:0; padding:0;}ul{display: flex;margin-bottom:10px;text-align: center;}li{list-style: none;background:#efefef;margin:0 5px;}ul.one li{flex:1;}ul.two li{flex:1;}ul.three li:nth-child(1){flex:0 0 50%;}ul.three li:nth-child(2),ul.three li:nth-child(3){flex:1;}ul.four li:nth-child(1){flex:1;}ul.four li:nth-child(2){flex:0 0 33.3333%;}ul.five li:nth-child(1){flex:0 0 25%;}ul.five li:nth-child(2){flex:1;}ul.five li:nth-child(3){flex:0 0 33.3333%;} </style> <body><ul class="one"><li>1/2</li><li>1/2</li></ul><ul class="two"><li>1/3</li><li>1/3</li><li>1/3</li></ul> <ul class="three"><li>1/2</li><li>auto</li><li>auto</li></ul><ul class="four"><li>auto</li><li>1/3</li></ul> <ul class="five"><li>1/4</li><li>auto</li><li>1/3</li></ul> </body>

    (7)flex-wrap:,伸縮換行(寫在父元素上);

    • nowrap;,當子元素溢出父容器時不換行;
    • wrap; ,當子元素溢出父容器時自動換行;
    • wrap-reverse;,反轉 wrap 排列;

    (8)flex-flow:,伸縮流方向與換行(適用于父類容器上);

    • flex-direction;????
    • flex-wrap;????

    4. 彈性盒的對齊方式:

    (1)justify-content,主軸橫向對齊(設置在父元素上

    • flex-start;,左對齊;
    • flex-end;,右對齊;
    • center;,居中對齊;
    • space-between;,分開對齊;
    • space-around;,分開左右邊距對齊;

    (2)align-content:,主軸縱向對齊(設置在父類容器上,不常用);

    • flex-start;,上對齊;
    • flex-end;,下對齊;
    • center;,居中對齊;
    • baseline;,基線對齊;
    • strecth;,上下拉升對齊;

    (3)側軸對齊: align-items:(設置在父上,常用)、 align-self:(設置在子,讓某個子元素單獨布局);

    • flex-start;,上對齊;
    • flex-end;,右對齊;
    • center;,居中對齊;
    • baseline;,基線對齊;
    • strecth;,上下拉升對齊;

    5. 彈性盒的默認特性:

    (1)默認流向為橫向
    (2)若不寫寬度,默認寬度為 0 或者被內(nèi)容撐開;
    (3)彈性盒的高度,若不設置,高度與父元素一樣高;
    (4)彈性盒默認不換行;



    二、 響應式布局

    1. 媒體查詢

  • 使用媒體查詢原因:如果沒有CSS3的媒體查詢模塊,就不能針對設備特性(如視口寬度)設置特定的CSS樣式
  • 媒體查詢可以讓我們根據(jù)設備顯示器的特性(如視口寬度、屏幕比例、設備方向:橫向或縱向)為其設定CSS樣式,媒體查詢由媒體類型和一個或多個檢測媒體特性的條件表達式組成。媒體查詢中可用于檢測的媒體特性有 width 、 height 和 color (等)。
  • 好處: 使用媒體查詢,可以在不改變頁面內(nèi)容的情況下,為特定的一些輸出設備定制顯示效果。

  • 2. 怎樣使用 media(媒體查詢)

    在CSS文件中引入媒體查詢:

    • 媒體查詢寫在CSS樣式代碼的最后,CSS是層疊樣式表,在同一特殊性下,靠后的的樣式會覆蓋前面的樣式;

    (1)在頁面內(nèi)使用
    需要先在 html 文檔中添加以下代碼,用來兼容移動設備的顯示效果:
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"/>

    • width=device-width:寬度等于當前設備的寬度;
    • initial-scale=1:初始的縮放比例(默認為1);
    • maximum-scale=1:允許用戶縮放到得最大比例(默認為1);
    • user-scalable=no:用戶不能手動縮放;
    /*當設備屏幕寬度在320px——720px之間時,媒體查詢中body的背景色(background-color:red;)會重疊之前的body背景色; 當設備屏幕寬度在320px及以下時,媒體查詢中body的body背景色(background-color:blue;)會重疊之前的body背景色; */ <style> body{background: #f9f;} @media screen and (max-width:720px) and (min-width:320px){ /* and (min-width:320px)可省略*/body{background-color:red;} } @media screen and (max-width:320px){body{background-color:blue;} } </style>

    (2)媒體查詢外聯(lián) css 語法:
    ① <link rel="stylesheet" href="wide.css" media="screen and (min-width:1024px)" />,當屏幕寬度(最小寬度為1024px)大于等于1024px 時引入 wide.css的樣式。

    ② <link rel="stylesheet" href="mobile.css" media="screen and (max-width:320px)" />,小于等于 320px 時(最大寬度是 320px)使用 mobile.css 的樣式。

    ③<link rel=“stylesheet” href="medium.css" media="screen and (max-width:1024px) and (min-width:320px)" />,在 320px 和 1024px 之間的使用 medium.css的樣式。

    3. 優(yōu)缺點以及使用場景:

    (1)優(yōu)點:
    ① 多終端視覺和操作體驗非常風格統(tǒng)一;
    ② 兼容當前及未來新設備;
    ③ 響應式 web 設計中的大部分技術可以用在 WebApp 開發(fā)中;
    ④ 節(jié)約了開發(fā)成本,維護成本也降低很多;

    (2) 缺點:
    ① 兼容性:低版本瀏覽器兼容性有問題;
    ② 移動帶寬流量:相比較手機定制網(wǎng)站,流量稍大;
    ③ 但比較加載一個完整 pc 端網(wǎng)站顯然是小得多;
    ④ 代碼累贅,會出現(xiàn)隱藏無用的元素,加載時間加長;
    ⑤ 兼容各種設備工作量大;

    (3)適用場景:
    ① 對于重內(nèi)容的網(wǎng)站,例如形象展示,則比較適合使用響應式web設計;
    ② 對于重功能的網(wǎng)站,如電子商務類,則更推薦使用獨立移動網(wǎng)站;


    4. Meta 標簽定義:

  • 移動設備上的 viewport 就是設備的屏幕上能用來顯示我們的網(wǎng)頁的那一塊區(qū)域,再具體一點,就是瀏覽器上(也可能是一個 app 中的 webview)用來顯示網(wǎng)頁的那部分區(qū)域,
  • 但viewport又不局限于瀏覽器可視區(qū)域的大小,它可能比瀏覽器的可視區(qū)域要大,也可能比瀏覽器的可視區(qū)域要小。
  • (1)使用 viewport meta 標簽在手機瀏覽器上控制布局:
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1" />

    (2)隱藏蘋果瀏覽器的工具欄和菜單欄。 全屏顯示:
    <meta name="apple-mobile-web-app-capable" content="yes" />

    (3)設置Web App的狀態(tài)欄(屏幕頂部欄)的樣式:
    <meta name="apple-mobile-web-app-status-bar-style" content="blank" />


    5. 常見的屬性操作:

    (1)orientation: 設備方向;

    (2)portrait: 監(jiān)聽豎屏,指定輸出設備中的頁面可見區(qū)域高度大于或等于寬度;

    (3)landscape: 監(jiān)聽橫屏(除portrait值情況外,都是landscape);

    (4)min-width:、max-width: 適用于全部屏幕(手機和網(wǎng)頁)的查詢;

    (5)min-device-width:、max-device-width: 只用于手機分辨查詢;



    三、多列布局

    通過 CSS3,您能夠創(chuàng)建多個列來對文本進行布局 - 就像報紙那樣。
    Internet Explorer 9 以及更早的版本不支持多列屬性;

    多列屬性

    (1)創(chuàng)建多列: column-count: 數(shù)字;屬性規(guī)定元素應該被分隔的列數(shù);
    (2)規(guī)定列之間的間隔: column-gap: 數(shù)字px; 屬性規(guī)定列之間的間隔;
    (3)列規(guī)則: column-rule:數(shù)字px outset/solid/double/dotted/dashed #顏色 屬性設置列之間的寬度、樣式和顏色規(guī)則;

    • Internet Explorer 10 和 Opera 支持多列屬性。
    • Firefox 需要前綴 -moz-。
    • Chrome 和 Safari 需要前綴 -webkit-。

    <style> div{word-wrap: break-word;width: 400px;column-count: 3; /*規(guī)定被分成3列*/column-gap: 30px; /* 這里是文字列和文字列之間的距離*/column-rule: 4px double #f00; /*分隔線樣式*/ } </style> <div>當前大部分的瀏覽器支持的是W3c的標準盒模型,也保留了對怪異盒模型的支持,當然IE瀏覽器沿用的是怪異盒模型。怪異模式是“部分瀏覽器在支持W3C標準的同時還保留了原來的解析模式”,怪異模式主要表現(xiàn)在IE內(nèi)核的瀏覽器。 </div>

    四、移動端頁面布局


    移動端布局優(yōu)缺點:

  • 優(yōu)點:
    (1)移動端基本都兼容 h5、css3,所以可以放心的使用 css3 的樣式來布局;
    (2)移動端頁面一般都不大,所以標簽使用的并不多,開發(fā)時間沒有 web 端長;
  • 缺點: 移動端寬高尺寸不同,因此測量尺寸成為一個難題,無法非常精確的寫尺寸;
  • 因為無法使用正常尺寸,不能直接寫像素,通常用 2 種方式來寫;

    1. 百分比彈性布局:

    移動端頁面基本上和 web 端區(qū)別不大,但要考慮到移動端屏幕尺寸不大并且都是全屏布局,而且尺寸都不一樣,所以不能使用網(wǎng)頁的 固定尺寸 來布局,需要使用 百分比 來布局;

    (1)寬度的百分比是 屏幕寬度 的百分比數(shù);
    (2)高度的百分比是 父元素高度的百分比數(shù)。


    2. rem

    (1)rem 是永遠獲取 html 的 font-size 的值。
    例:html{font-size:100px;} 那么所有子元素 1rem = 100px;

    (2)通過 js 獲取屏幕尺寸,制定出一個系數(shù),去改變 html 的 font-size 值。
    例:當屏幕尺寸是 320px ,我想設置 1rem = 10%,那么就設置 html 的 font-size:32px; 通過 js 來設置屏幕尺寸÷10;


    3. vw,vh

    vw,vh 永遠跟隨屏幕大小變化而變化。

    (1)100vw = 屏幕的寬度;1vw = 1% 屏幕尺寸;
    (2)這樣更直觀的獲取百分比,但是少部分手機不支持,需要自己把控; vw 是為了的趨勢。
    (3)使用:html{font-size: 100÷設計圖寬度的1%vw;}
    其他元素: header{height:高度÷100rem;}

    /*假設設計圖寬度為640px,某個div高度88px,那么 640/6.4=100px; 設:100vw/6.4 = 15.625vw; 1rem/100 = 0.01rem * 88 = 1px *88 = 100px/100 = 1px 得: .88rem = 88px; */

    html筆記(一)html4+css2.0、css基礎和屬性、盒模型

    html筆記(二)html4+css2.0(元素類型、css精靈、寬度自適應、BFC、瀏覽器相關概述、css統(tǒng)籌)

    html筆記(三)html5+css3(html5、css3、文字相關)

    總結

    以上是生活随笔為你收集整理的html笔记(四)弹性盒+响应式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。