第二種rem響應(yīng)式布局方案(等比縮放):
使用的時候按照1920的設(shè)計稿來做。100px=1rem,font-size設(shè)置成100px;750px的設(shè)計稿1rem=100px設(shè)置屏幕超過2560及以上,就固定1rem=200px,寬度小于600及以下,就固定1rem=32px
第三方庫用的一般是使用px單位,無法使用rem適配不同設(shè)備的屏幕。
解決辦法:使用px2rem-loader插件將第三方ui庫的px轉(zhuǎn)換成rem單位。
移動端設(shè)計稿一般都是750px的,所切的圖就是@2x的,在一些DPR為3.0的手機上使用@2x圖片大多數(shù)也會顯示的很清晰,這樣就是為什么設(shè)計稿要750px的
由你上邊說的應(yīng)該是Windows的印屏幕功能:先把文件的窗口打開,按有Windows圖標(biāo)的那個鍵+PrintScreen/SysRq在Windows的開始→程序→附件→畫圖在畫圖的窗口:編輯→粘帖或者直接按Ctrl+V以上個人經(jīng)驗供參考
這個方法的思路是,分別針對800、1280、1440、1600、1920等分辨率,創(chuàng)建不同的css文件。然后在各種分辨率下,寫css樣式表。
可能你會感覺針對一個頁面,要寫這么多不同的css樣式表,這個工作量肯定很大。其實也不盡然,根據(jù)我在這個項目中的實踐,發(fā)現(xiàn)這個工作量其實是比較小的。
首先,我們在做項目的時候,一般情況下會有一些范圍限制,比如這個項目只需要適配1280~1920分辨率即可。而且各個分辨率之間,我們有的時候只是對頁面上的元素進行寬高、尺寸、位置等進行調(diào)整,整體的一個框架是相似或者說是相同的。
不僅如此,有的時候項目的要求不高,沒有比較1:1高度還原設(shè)計稿,那么這個時候,我們在1440分辨率下的樣式表,在1280分辨率下也是實用的,這個時候,我們的工作量又進一步減少。
這個時候,我們可以先完成一個分辨率下的css樣式表。然后在這個基礎(chǔ)之上,對其他分辨率進行調(diào)整即可。這個過程我們只需要調(diào)整一些參數(shù)即可。
比如在我的項目里面,這對不同的分辨率,我只做了三個樣式表
這個時候,我們只需要在我們的HTML頁面的head/head標(biāo)簽中,使用js,根據(jù)不同的電腦分辨率,加載不同的css樣式表。注意這里的js一定要寫在head/head標(biāo)簽里面,這樣在加載頁面內(nèi)容之前,可以提前把css樣式表加載出來
這樣的話,就可以根據(jù)不同電腦的分辨率,就在不同的css樣式表。由此我們便完成了頁面使用不同的分辨率。
媒體查詢是CSS3的新特性,絕大多數(shù)瀏覽器都可兼容這一特性。這個方法的思路也是根據(jù)不同的分辨率,應(yīng)用不同的css樣式。
如果你對媒體查詢不熟悉,可以點擊鏈接進行學(xué)習(xí)這一新特性。菜鳥教程-CSS3@media查詢
這個思路和和方法一差不多,或者說方法一的思路和這個思路差不多,畢竟這也是官方的做法。我們有兩種使用媒體查詢的方式。
這個方法和方法一相同,也是通過判斷電腦的分辨率,來引入相對應(yīng)的css樣式表。
這個方法只有一個css演示表,在這個樣式表里面,根據(jù)不同的分辨率,寫不同的css樣式。
以上的方法的思路大同小異,根據(jù)我自己的經(jīng)歷,給大家提出一些小的建議。
因為我在公司的電腦的分辨率是1440,所以一開始我實在1440分辨率下寫得css樣式表,然后在這個基礎(chǔ)之上,去調(diào)整其他的分辨率。發(fā)現(xiàn)根據(jù)小分辨率樣式去調(diào)整大分辨率樣式比較簡單。當(dāng)然,也許你喜歡由大到小,這都無所謂,看個人興趣。
還有就是,我們在寫css樣式標(biāo)的時候,盡量寫得規(guī)整一點。某一部分的css樣式寫在一起,最好有注釋,這樣我們在其他分辨率下去調(diào)整的時候,不至于一頭霧水。
px:像素
em:一個M的寬度(面試:一個字的寬度)
rem:rootem根元素(html)的font-size//oppo個別機型不適用
vh:viewheight,視口高度100vh===視口高度
vw:viewwidth,視口寬度100vw===視口寬度
瀏覽器默認(rèn)font-size:16px;
Chrome瀏覽器默認(rèn)最小字號為12px:font-size:12px;
所以一般情況下,rem的font-size不要小于12px;
rem就是html元素的font-size,默認(rèn)為16px;(瀏覽器默認(rèn)font-size)
rem和em的區(qū)別:
1.metaviewport
metaname="viewport"content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/
2.媒體查詢
更具查詢結(jié)果選擇不同的css樣式,設(shè)置屏幕最大寬度,如果頁面范圍在這個寬度內(nèi)就可以顯示對應(yīng)的CSS,以最大500為例
style
@media(max-width:500px){
......
}
/style
3.動態(tài)rem方案
一切單位以屏幕寬度為標(biāo)準(zhǔn),就能完美還原設(shè)計稿。
動態(tài)REM思路:動態(tài)rem采用整體縮放的思想,在頁面渲染之前,使用JS獲取設(shè)備寬度并設(shè)置rem(1rem==htmlfont-size==viewportwidth),之后的布局單位全部使用rem來實現(xiàn)整體縮放。
在使用動態(tài)rem布局的移動端頁面中,很小的寬度如border-width依然使用px,因為即使使用rem,當(dāng)rem小于1px時,依然會被瀏覽器當(dāng)做1px使用。
前幾天開發(fā)公司產(chǎn)品官網(wǎng)的時候,遇到了一些適配問題,當(dāng)時選擇用postcss-px-to-viewport方案來實現(xiàn)適配,效果也很顯著,每個頁面都適配到位
step1.vue安裝postcss-px-to-viewport插件。
step2.配置適配插件的參數(shù)
使用PostCss配置文件時,在upostcss.config.js/u添加如下配置:
或者在upackage.json/u中,添加以下配置:
說明下幾個重要參數(shù)的使用:
適配存在的問題點:
注:執(zhí)行指令后在package.json的devDependencies分支可以看到相應(yīng)的版本,
2.在main.js中導(dǎo)入lib-fixible.
如果未使用vue的伙伴可以直接在前端中直接使用阿里的CDN,如下:
注:此處是postcss-px2rem而不是px2rem-loader,網(wǎng)上很多文章都引用是后者,會導(dǎo)致在配置時候無法成功配置。
在vue.config.js中配置如下配置即可,如未有此文件請自行搜索查詢創(chuàng)建配置。
集成以上兩個步驟,基本前端即可根據(jù)屏幕自行適配,但可能有部分伙伴會遇到data-dpr始終為1,遇到這個情況多半是因為在html頭中自己設(shè)置了metaname="viewport"...,
查看lib-flexble做了配置,默認(rèn)會根據(jù)屏幕為我們添加頭文件的,如果自行設(shè)置,那么只會進行修改設(shè)置的值而已,并不會再添加,所以導(dǎo)致data-dpr始終為1,所以把metaname="viewport"...去除.
本文分類:科技
瀏覽次數(shù):632次瀏覽
發(fā)布日期:2023-04-21 05:06:26
本文鏈接:http://www.cryptoarmband.com/net/5a3d9e08bfd07cf260af2c57cf0834e5.html