rem實(shí)現(xiàn)響應(yīng)式布局的思路詳解
正文
你是不是經(jīng)常被問(wèn)一個(gè)問(wèn)題:Vue的響應(yīng)式原理是什么?哈哈哈... 先不講原理,想想Vue的響應(yīng)式是指什么?Vue的響應(yīng)式是指data中的數(shù)據(jù)變化,然后視圖(dom)會(huì)跟著變化。那么響應(yīng)式布局可以理解為就是xx變化,然后布局跟著變化。那這個(gè)xx指的是什么呢?為什么布局要跟著變化呢? 下面一一來(lái)解答。
為什么要使用響應(yīng)式布局?
因?yàn)槲覀優(yōu)g覽網(wǎng)頁(yè)的設(shè)備屏幕大小不一樣,例如有屏幕大的有屏幕小的手機(jī)。
16px的字體在iPhone6/7/8上展示效果:

16px的字體在iPad上展示效果:

寫移動(dòng)端H5網(wǎng)頁(yè)的時(shí)候,一般設(shè)計(jì)稿是以375px也就是iPhone6/7/8的屏幕寬度去設(shè)計(jì)的,當(dāng)有用戶使用iPad打開(kāi)的時(shí)候效果就會(huì)很不好,這顯然不是我們想看到的。
如何實(shí)現(xiàn)響應(yīng)式布局呢?
也就是說(shuō)我們?nèi)绾卧趇Pad上看到和iPhone6/7/8也差不多的效果呢?沒(méi)錯(cuò)你肯定想得到,那就是在iPad上的字體太小了,字體要設(shè)置得大一點(diǎn)才行。也就是說(shuō)要實(shí)現(xiàn)字體的大小和隨著不同屏幕大小的變化。那如何實(shí)現(xiàn)在不同屏幕大小下,讓字體大小也不一樣呢?
那就是利用媒體查詢根據(jù)不同的屏幕設(shè)置各種屏幕寬度下的根元素font-size,然后布局使用rem代替px為長(zhǎng)度單位,從而實(shí)現(xiàn)響應(yīng)式布局。
那什么是媒體查詢?
developer.mozilla.org/zh-CN/docs/…詳細(xì)的就不展開(kāi)了,例如下面這段代碼就是指在最大屏幕寬度為374px的設(shè)備下,將根元素(html)的字體設(shè)置為86px
@media only screen and (max-width: 374px) {
html {
font-size: 86px
}
}
那么什么是rem?
rem 是一個(gè)相對(duì)根元素(html)的長(zhǎng)度單位px 是一個(gè)絕對(duì)長(zhǎng)度單位em 同樣也是一個(gè)相對(duì)長(zhǎng)度單位,只不過(guò)相對(duì)的是父元素如上面所設(shè)置的將html的font-szie設(shè)置為86px, 那么1rem就等于86px。
怎么計(jì)算出各個(gè)尺寸屏幕下的html元素font-size要設(shè)置為多少呢?
這個(gè)就得找一下各個(gè)屏幕尺寸下的代表機(jī)型,然后以其中一個(gè)為標(biāo)準(zhǔn),計(jì)算出其他的。一般是以iPhone6/7/8為標(biāo)準(zhǔn),為什么?因?yàn)楝F(xiàn)在設(shè)計(jì)稿大多是以iPhone6/7/8的屏幕寬度375px來(lái)設(shè)置的。
比較小的屏幕:iPhone5屏幕寬度:320px、標(biāo)準(zhǔn)的屏幕:iPhone6/7/8屏幕寬度:375px比較大的屏幕:iPhone6/7/8 Plus屏幕寬度:414px其他更多的比如iPad的屏幕:768px
如果將標(biāo)準(zhǔn)的屏幕寬度設(shè)置為100px
@media only screen and (min-width: 375px) and (max-width: 413px) {
html {
font-size: 100px
}
}
那么小屏幕的 100 / x = 375 / 320 x = 85.333...
@media only screen and (max-width: 374px) {
html {
font-size: 85px
}
}
那么大屏幕的 100 / x = 375 / 414 x = 110.4
@media only screen and (min-width: 414px) and (max-width: 767px) {
html {
font-size: 110px
}
}
更大屏幕的 100 / x = 375 / 768 x = 204.8
@media only screen and (min-width: 768px) {
html {
font-size: 204px
}
}
那么將.box的font-size就可以用rem為單位了,在標(biāo)準(zhǔn)的375px屏幕下,1rem就是100px,那么16px,就是 0.16rem。
.box {
font-size: 0.16rem;
}
...
<div class="box">
什么是響應(yīng)式布局?
</div>
在iPhone5上展示效果:

在iPhone6/7/8上展示效果:

在iPhone6/7/8 Plus上展示效果:

在iPad上展示效果:

怎么樣,是不是在各種尺寸屏幕下看到的效果是差不多的。這就是所謂隨著屏幕變化,布局跟著變化的響應(yīng)式布局實(shí)現(xiàn)的思路,同時(shí)是基于rem來(lái)實(shí)現(xiàn)的,rem不僅僅只用于font-size來(lái)設(shè)置字體大小,如果你只是設(shè)置字體變大,盒子的寬度這些還是用px那就會(huì)出問(wèn)題。凡是可以設(shè)置數(shù)值的屬性都可以用rem為單位,例如width、 height...。基于rem的響應(yīng)式布局是整個(gè)頁(yè)面所有的長(zhǎng)度單位都使用rem,這只是實(shí)現(xiàn)響應(yīng)式布局的一種方式。
完結(jié)感想
響應(yīng)式布局的優(yōu)勢(shì)就是一套代碼,為不同寬度的設(shè)備提供渲染效果不一樣的網(wǎng)頁(yè),而只需要維護(hù)一套代碼。不需要針對(duì)不同的設(shè)備來(lái)寫多套代碼,同時(shí)解決了屏幕小內(nèi)容會(huì)擁擠、屏幕大一點(diǎn)的話內(nèi)容又看不清楚的問(wèn)布局題。
以上就是rem實(shí)現(xiàn)響應(yīng)式布局的思路詳解的詳細(xì)內(nèi)容,更多關(guān)于rem響應(yīng)式布局思路的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vue + vuex todolist的實(shí)現(xiàn)示例代碼
這篇文章主要介紹了vue + vuex todolist的實(shí)現(xiàn)示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
C#實(shí)現(xiàn)將一個(gè)字符轉(zhuǎn)換為整數(shù)
下面小編就為大家分享一篇C#實(shí)現(xiàn)將一個(gè)字符轉(zhuǎn)換為整數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
基于vue寫一個(gè)全局Message組件的實(shí)現(xiàn)
這篇文章主要介紹了基于vue寫一個(gè)全局Message組件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Vue.js中vue-property-decorator的使用方法詳解
vue-property-decorator是一個(gè)用于在Vue.js中使用TypeScript裝飾器的庫(kù),它能夠簡(jiǎn)化 Vue 組件的定義,使代碼更加簡(jiǎn)潔和可維護(hù),它能夠簡(jiǎn)化Vue組件的定義,使代碼更加簡(jiǎn)潔和可維護(hù),本文將深入探討vue-property-decorator的使用方法,并展示如何在Vue.js項(xiàng)目中應(yīng)用它2024-08-08
vite創(chuàng)建一個(gè)標(biāo)準(zhǔn)vue3+ts+pinia項(xiàng)目
本文主要介紹了vite創(chuàng)建一個(gè)標(biāo)準(zhǔn)vue3+ts+pinia項(xiàng)目,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
最后說(shuō)說(shuō)Vue2 SSR 的 Cookies 問(wèn)題
這篇文章主要介紹了最后說(shuō)說(shuō)Vue2 SSR 的 Cookies 問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
vue給對(duì)象添加屬性沒(méi)有響應(yīng)式的問(wèn)題及解決
這篇文章主要介紹了vue給對(duì)象添加屬性沒(méi)有響應(yīng)式的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
vue3響應(yīng)式實(shí)現(xiàn)readonly從零開(kāi)始教程
這篇文章主要為大家介紹了vue3響應(yīng)式實(shí)現(xiàn)readonly從零開(kāi)始教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
Vue3的路由守衛(wèi)以及登錄狀態(tài)儲(chǔ)存過(guò)程
這篇文章主要介紹了Vue3的路由守衛(wèi)以及登錄狀態(tài)儲(chǔ)存過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
解決vue中對(duì)象屬性改變視圖不更新的問(wèn)題
下面小編就為大家分享一篇解決vue中對(duì)象屬性改變視圖不更新的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02

