初學rem布局筆記

2021-10-10 02:32:04 字數 3766 閱讀 6995

rem是乙個單位,首先有乙個概念上的認知,例如:

html 

div

//此時這個div的寬高就是5x20=100px

rem是根據根元素html的字型大小來計算的,跟父元素沒有關係。

em是先根據它自身的字型大小來計算,例如:

html 

div

此時就是乙個40x40的盒子

如果它自身沒有定義字型大小,那它就會根據父元素的字型大小來計算,如果父元素也沒有,就繼續一層一層往上找。

rem可以讓乙個頁面在不同的移動裝置上都可以正常顯示,它的本質是等比例縮放。

因為不同裝置的螢幕不同,從750px-320px不等,如果不進行等比縮放的話就會有留白等各種問題。

這裡的計算方式有兩種

1、手動設定不同螢幕寬度下的html字型大小

2、通過js來動態改變

這裡先看一下第一種:

我們以750px的手機螢幕為例,先將螢幕的寬度劃分為15等份,750/15=50px,這個作為在極端情況下螢幕的字型大小,也就是

@media screen and (min-width:750px) 

}

當螢幕寬度縮小為375px時,html的字型大小就是375/15=25px

可以發現在不同的螢幕寬度下,字型大小和螢幕寬度的比例是一樣的

當前主流的螢幕有

320px

360px

375px

384px

400px

414px

480px

510px

600px

620px

640px

720px

750px

這麼多種,所以要分別設定他們的字型大小,這時候就需要用到less預處理語言和**查詢

1.結構

@media mediatype and|not|only (media features)

2.mediatype(**的種類,移動端是希望在不同的手機螢幕大小上面設定不同的樣式,所以是screen)

- all 所有種類

- print 印表機

- screen 螢幕 (現階段主要使用)

3.與或非

現階段也只用到and,表示在螢幕上 並且 滿足條件時

4.media features

- width

- max-width--小於等於

- min-width--大於等於

less語言裡面新增了js的特性,我們乙個乙個解釋

1.定義變數
在乙個css檔案中,很多顏色、字型大小或者行高都是一樣的,我們可以定義乙個變數,比如定義乙個顏色為紅色的變數:

@color

: red;

這樣我們的變數就定義好了,如果有誰需要使用的話,直接呼叫就可以了:

div

這樣在修改樣式的時候我們只需要去修改變數的值就行了。

2.選擇器的巢狀
直接上例子:

html結構如下:

class

="box"

>

class

="wrap"

>

href

="#"

>

a>

div>

div>

我們想把a連線的字型顏色變成紅色,在css裡面應該這麼寫:

.box .wrap a

在less裡面我們可以這麼寫:

.box

}}

3. 計算
less裡面是支援加減乘除運算的,之前寫的750px螢幕寬度下的html字型大小為50px,如果是414px寬度下呢,我們是不方便計算的,這時候就可以利用運算了:

@media screen and (

min-width

: 414px)

}

當使用者建立了乙個less檔案時,跟著生成的還有乙個同名的css檔案,我們在less上面寫的**都會被自動轉化到css檔案上。

這樣就不需要再去拿計算器算了

4.混入
手動新增不同螢幕尺寸的html結構是這樣的

@media screen and (

min-width

: 320px) }

@media screen and (

min-width

: 360px) }

@media screen and (

min-width

: 375px) }

@media screen and (

min-width

: 384px) }

@media screen and (

min-width

: 400px) }

@media screen and (

min-width

: 414px) }

@media screen and (

min-width

: 480px) }

@media screen and (

min-width

: 510px) }

@media screen and (

min-width

: 600px) }

@media screen and (

min-width

: 620px) }

@media screen and (

min-width

: 640px) }

@media screen and (

min-width

: 720px) }

@media screen and (

min-width

: 750px)

}

裡面有很多的計算,非常的麻煩,怎麼樣可以更省力呢。

因為html的font-size都是通過螢幕畫素值/15得到的,所以我們可以定義乙個變數

@basefont

: 15;

然後定義乙個類名

.media (

@width)

}}

這樣的話,我們可以用類名加上變數值直接呼叫上面這個類就好了

.media (320px)

;.media (360px)

;.media (375px)

;.media (384px)

;.media (400px)

;.media (414px)

;.media (480px)

;.media (510px)

;.media (600px)

;.media (620px)

;.media (640px)

;.media (720px)

;.media (750px)

;

因為less檔案會自動把結果運算並輸入到css檔案裡,所以上面的**在css裡面就是第一步的樣子了

關於rem布局

我們知道,當使用rem布局,並配合js動態按照比例設定html標籤上的rem值時,整個頁面是按照螢幕的寬度來整體縮放的。對於高度不限制的頁面 也就是超出一屏頁面可以滾動 這種方案沒有任何問題,簡單暴力。但是對於一些需要布滿一整屏的頁面 比如現在流行的上下 左右滑動的那種 由於乙個頁面的元素必須在乙個...

移動布局rem

content width device width,minimum scale 1.0,maximum scale 1.0,user scalable no name viewport html 為什麼設定為37.5px?你也可以設定為其它的值。但為了易於換算和記憶,我們預設為每種螢幕設定他的基礎...

rem布局解析

移動端的螢幕大小各異,尤其是安卓機,千奇百怪,各種尺寸的機型都有,而且有1倍屏,2倍屏,3倍屏之分,作為精益求精的前端,我們希望找到一種完美適配各種機型的方案。rem是現在主流的移動端自適應布局方案,本文主要介紹了rem布局的原理和通用方案 首先說一下,我們想要達到的自適應效果是什麼。很簡單 元素 ...