移動(dòng)端web開(kāi)發(fā)基礎(chǔ)(二)

布局方式

1、流式布局(百分比布局)

通過(guò)將盒子的寬度設(shè)置成百分比,從而根據(jù)屏幕的寬度來(lái)進(jìn)行伸縮,不受固定像素的限制,而內(nèi)容則向兩側(cè)填充。

百分比寬度 = 目標(biāo)元素的寬度 / 父級(jí)元素的寬度,高度的變化需要配合媒體查詢。

圖片百分比: 圖片的寬度和高度比較彈性化。當(dāng)圖片不設(shè)置寬高時(shí),則按原始大小顯示;當(dāng)設(shè)置圖片百分比時(shí),寬高的變化則是按等比例加載(建議設(shè)置上限值,以免超出)

2、rem布局

rem(root em),是一個(gè)相對(duì)單位,類(lèi)似em,em是相對(duì)父級(jí)元素的字體大小,而rem則是相對(duì)于<html>元素的字體大小。

rem的優(yōu)勢(shì):父元素的文字大小可能不一致,而整個(gè)頁(yè)面只有一個(gè)<html>,通過(guò)媒體查詢改變html根元素的字體大小,就可以整體改變所有頁(yè)面中的文字大小。

媒體查詢

媒體查詢(Media Query),是CSS3中的新語(yǔ)法。通過(guò)使用媒體查詢,可以針對(duì)不同的媒體類(lèi)型定義不同的樣式,也可以針對(duì)不同的屏幕尺寸設(shè)置不同的樣式。

語(yǔ)法規(guī)范: @media mediatype and|not|only (media feature) { css樣式 }

  • 以@media: 開(kāi)頭
  • mediatype :媒體類(lèi)型,取值有:all(默認(rèn),所有設(shè)備)、screen(PC、Pad、Phone)、 TV、print(打印機(jī))
  • 關(guān)鍵字: and | not | only(and指)
  • media feature: 媒體特性,必須用小括號(hào)包裹 (width、min-width、max-width)

語(yǔ)法示例:有兩種實(shí)現(xiàn)形式。

  • 1、引入外部CSS文件
    <link rel="stylesheet" href="mediaQuery.css" media="screen and (min-width: 768px)">
    
  • 2、內(nèi)部樣式表中書(shū)寫(xiě)css代碼片段的形式
    @media  screen and (min-width: 768px) {
      /* css樣式 */
    }
    

在寫(xiě)多個(gè)媒體查詢時(shí),為了防止混亂,媒體查詢的條件最好按照從小到大或者從大到小的順序?qū)?,一般?xí)慣從小到大來(lái)寫(xiě),代碼顯得更簡(jiǎn)潔

3、flex布局

flex(flexible box),彈性布局,用來(lái)為盒模型提供最大的靈活性,任何一個(gè)容器都可以指定為flex布局。

父級(jí)容器設(shè)置為flex布局后,子元素的float、clear和vertical-align屬性將失效。

在flex布局中,采用flex布局的元素,稱(chēng)為flex容器,其所有子元素則自動(dòng)變?yōu)槿萜鞒蓡T,稱(chēng)為flex項(xiàng)目(flex item)。

flex布局,其原理就是通過(guò)給父級(jí)元素增加flex屬性,來(lái)控制子元素的位置和排列方式,從而實(shí)現(xiàn)元素的整體布局。

flex布局中常用的屬性:

針對(duì)父級(jí)flex容器

  • flex-direction: 設(shè)置主軸方向(flex 項(xiàng)目的排列方向),flex布局中分主軸和側(cè)軸,設(shè)置好主軸后,剩下的就是側(cè)軸

    屬性值 描述
    row 默認(rèn)值,水平方向,從左往右
    row-reverse 水平方向,從右往左
    column 垂直方向,從上往下
    column-reverse 垂直方向,從下往上
  • flex-wrap:設(shè)置flex項(xiàng)目是否換行

    屬性值 描述
    nowrap 默認(rèn)值,不允許換行
    wrap 允許換行

flex-flow,是flex-direction和flex-wrap的復(fù)合屬性,寫(xiě)法:flex-flow: row nowrap;

  • justify-content:定義flex 項(xiàng)目在主軸上的對(duì)齊方式

    屬性值 描述
    flex-start 默認(rèn)值,從起始位置開(kāi)始
    flex-end 從末尾開(kāi)始
    center 居中
    space-around 平分剩余空間,每個(gè)項(xiàng)目?jī)蓚?cè)的邊距相同
    space-between 首尾兩邊貼邊,再平分剩余空間
  • align-items:flex項(xiàng)目在側(cè)軸上的排列方式,針對(duì)單行的flex-項(xiàng)目有效(默認(rèn)側(cè)軸為垂直方向)

    屬性值 描述
    flex-start 默認(rèn)值,從上往下
    flex-end 從下往上
    center 居中
    baseline 基于基線對(duì)齊(文本底部之下,不常用)
    stretch 拉伸,若項(xiàng)目未設(shè)置高度或?yàn)閍uto時(shí),將占滿容器高度
  • align-content:針對(duì)多行flex項(xiàng)目(flex項(xiàng)目換行的情況)在側(cè)軸上的排列方式(側(cè)軸以垂直為例)

    屬性值 描述
    flex-start 默認(rèn)值,從上往下
    flex-end 從下往上
    center 居中
    spece-around 項(xiàng)目在側(cè)軸方向平分剩余空間,每個(gè)項(xiàng)目?jī)蓚?cè)的邊距相同
    space-between 在側(cè)軸上,首尾兩邊貼邊,再平分剩余空間
    stretch 拉伸,所有flex項(xiàng)目的高度平分容器的高度

針對(duì)子級(jí)flex 項(xiàng)目

  • order:定義項(xiàng)目的排列順序,屬性值為數(shù)值型,數(shù)值越大,排列越靠前,默認(rèn)都為0

  • align-self: 設(shè)置單個(gè)項(xiàng)目的對(duì)齊方式,可覆蓋align-items的屬性值,可選屬性值與align-items一樣,默認(rèn)為auto,表示繼承父元素的align-items屬性值

  • flex-grow:定義單個(gè)flex項(xiàng)目的*擴(kuò)展比例(在整個(gè)flex容器中有剩余空間的情況下),該屬性值有:
    0:默認(rèn)值,不進(jìn)行擴(kuò)展

    其他正數(shù)數(shù)值: 在剩余空間中占據(jù)的比例,若只有一個(gè)元素取值大于1,則占滿整個(gè)剩余空間,若是多個(gè)元素都取值,則按比例劃分剩余空間

  • flex-shrik: 定義單個(gè)flex項(xiàng)目的收縮比例(在整個(gè)flex容器中的空間不足時(shí))
    1:默認(rèn)值,表示空間不足時(shí),等比縮小比例
    0:表示空間不足時(shí),不縮小

  • flex-basis:指定項(xiàng)目所占據(jù)的空間大小,當(dāng)與width同時(shí)存在時(shí),取flex-basis的值
    auto:默認(rèn)為項(xiàng)目本身大小
    像素值或百分比:自定義寬度

flex: 該屬性是flex-grow、flex-shrink以及flex-basis的綜合簡(jiǎn)寫(xiě)形式,該屬性值有:

auto: 相當(dāng)于 1 1 auto;
none: 相當(dāng)于 0 0 auto;
自定義數(shù)值: flex-grow flex-shrink flex-basis, 其中,flex-grow值為必須值,其他兩個(gè)屬性值不寫(xiě)時(shí), flex-shrink默認(rèn)為1,flex-basis默認(rèn)為 0% 。

注意,flex屬性只寫(xiě)一個(gè)值時(shí),這個(gè)值就是flex-grow,但實(shí)現(xiàn)的效果與flex-grow還是有區(qū)別的

例如:flex:1 和 flex-grow:1

flex:1 ---->相當(dāng)于設(shè)置了三個(gè)屬性,flex-grow:1; flex-shrink:1; flex-basis:0%;
flex-grow:1 -----> 只是設(shè)置了flex-grow:1;而flex-shrink取默認(rèn)值1,flex-basis取默認(rèn)值auto;

從這里不難發(fā)現(xiàn),兩者最大的差異在于flex-basis的值不同,這也是導(dǎo)致之后計(jì)算時(shí)的差異的關(guān)鍵原因。由于flex-basis的值的層疊性要高于width的屬性值,因此,兩者同時(shí)存在時(shí),取的是flex-basis的屬性值。

4、響應(yīng)式布局

響應(yīng)式的開(kāi)發(fā)原理: 使用媒體查詢,針對(duì)不同寬度的設(shè)備進(jìn)行布局和樣式的額設(shè)置,從而適配不同設(shè)備的目的。

在響應(yīng)式布局中,通過(guò)媒體查詢技術(shù),改變布局容器的大小,進(jìn)而改變布局容器中的子元素排列方式和大小,從而實(shí)現(xiàn)不同屏幕下所展示的不同頁(yè)面布局和樣式變化。

常見(jiàn)的響應(yīng)式屏幕尺寸劃分:

  • 1、超小屏幕: xs(Extra Small),width <= 767px

  • 2、小型屏幕: sm(Small),768px <= width <= 991px

  • 3、中型屏幕: md(Medium),992px <= width <= 1199px

  • 4、大型屏幕: lg(Large),width >= 1200px

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容