版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第webpack的移動(dòng)端適配方案小結(jié)目錄rem
vw
適配第三方UI框架
結(jié)語
在移動(dòng)端開發(fā)的過程中,一個(gè)最常見的問題就是適配不同的屏幕寬度。目前比較常見的適配方案有rem和vw,它們都是css中的相對單位。
rem
W3C對rem的定義是font-sizeoftherootelement,它是一個(gè)只相對于瀏覽器的根元素(HTML元素)的font-size的來確定的單位,也就是說對于不同寬度的機(jī)型,我們只需要計(jì)算出對應(yīng)的根元素的字體大小,用同樣的css代碼可以實(shí)現(xiàn)等比適配。考慮最簡單的情況:
html代碼片段
//移動(dòng)頁面中不可少的meta,將設(shè)備屏幕的寬度設(shè)置成將文檔寬度
metaname="viewport"content="width=device-width,initial-scale=1,user-scalable=0"
js代碼片段
//根據(jù)文檔寬度計(jì)算根元素的字體大小,以文檔寬度的1/10為例,如果屏幕寬度為375,那么根元素font-size就為37.5px
varw=document.documentElement.clientWidth;
document.documentElement.style.fontSize=w/10+'px';
css代碼片段
//此時(shí)如果在css中寫
.div{
width:2rem;
//那么這個(gè)div的寬度就是75px,同理如果屏幕寬度為360,那么div就寬72px。
//日常開發(fā)中,比較常見的設(shè)計(jì)稿是750px,在設(shè)計(jì)稿中一個(gè)區(qū)域的高度為30px的話,
//在css中寫成height:0.4rem(30/75),就能完成等比縮放
而實(shí)際開發(fā)中,我們通常在webpack構(gòu)建的時(shí)候使用插件來實(shí)現(xiàn)rem適配:postcss-pxtorem和lib-flexible。
安裝:npmipostcss-pxtorem--D和npmiamfe-flexible--S
在webpack.config.js中配置postcss-loader
module.exports={
entry:"./src/index.js",
output:{
path:path.join(__dirname,"/dist"),
filename:"bundle.js"
module:{
rules:[
test:/\.css$/,
use:['style-loader','css-loader','postcss-loader']//配置postcss-loader
在項(xiàng)目根目錄新建.postcssrc.js文件,在其中寫入postcss-pxtorem插件配置
module.exports={
"plugins":{
"postcss-pxtorem":{
rootValue:75,//750的設(shè)計(jì)稿
propList:['*']
在entry指定的入口js文件("./src/index.js")中引入lib-flexible
import'amfe-flexible'
這樣,就可以在css中直接寫設(shè)計(jì)稿中的絕對像素值,比如一個(gè)div#test在750設(shè)計(jì)稿中的寬度為200px,就可以直接這樣寫,而不用換算了。
#test{
width:200px
vw
另外一種方案是使用vw:1%ofviewport'swidth,它是相對瀏覽器可視區(qū)域?qū)挾鹊膯挝弧?/p>
//移動(dòng)頁面中不可少的meta,將設(shè)備屏幕的寬度設(shè)置成將文檔寬度
metaname="viewport"content="width=device-width,initial-scale=1,user-scalable=0"
在移動(dòng)端,如果配置了width=device-width,那么100vw就是屏幕寬度。
使用vw布局,就不需要再像rem那樣,用js中去動(dòng)態(tài)設(shè)置根元素的font-size,而是直接相對于屏幕寬度。比如750的設(shè)計(jì)稿中,一個(gè)div的寬度是200px,那么就可以寫:width:200/750*100vw
而使用webpack,我們可以用postcss-px-to-viewport插件來實(shí)現(xiàn):
安裝:npmipostcss-px-to-viewport--D
如上rem那樣在webpack.config.js配置postcss-loader。
在項(xiàng)目根目錄新建.postcssrc.js文件,在其中寫入postcss-px-to-viewport插件配置
module.exports={
"plugins":{
'postcss-px-to-viewport':{
viewportWidth:750//750的設(shè)計(jì)稿
這樣也就可以在css中直接寫設(shè)計(jì)稿中的絕對像素值,示例同上rem的示例。
適配第三方UI框架
有時(shí)候我們在移動(dòng)端會(huì)使用其他組件庫,引用像vant、mint-ui這樣的第三方UI框架,因?yàn)榈谌娇蚣苡玫氖莗x單位,基于375px的設(shè)計(jì)稿,如果我們的項(xiàng)目是750px的設(shè)計(jì)稿,就不能用同一個(gè)viewportWidth進(jìn)行適配。
此時(shí)可以在.postcssrc.js中如下配置(以vw為例,rem也類似):
constpath=require('path')
module.exports=({file})={
//如果使用vantUI框架
constwidth=file.dirname.includes(path.join('node_modules','vant'))375:750;
return{
"plugins":{
"postcss-px-to-viewport":{
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 外勤機(jī)械工安全生產(chǎn)意識競賽考核試卷含答案
- 成品礦運(yùn)送工崗前基礎(chǔ)操作考核試卷含答案
- 信息通信網(wǎng)絡(luò)線務(wù)員安全意識測試考核試卷含答案
- 抽紗挑編工保密能力考核試卷含答案
- 2025年中原科技學(xué)院馬克思主義基本原理概論期末考試模擬題附答案
- 2024年灤縣輔警招聘考試真題匯編附答案
- 2024年重慶工程職業(yè)技術(shù)學(xué)院輔導(dǎo)員招聘備考題庫附答案
- 2024年鄭州信息科技職業(yè)學(xué)院輔導(dǎo)員考試筆試真題匯編附答案
- 企業(yè)信息化安全防護(hù)與應(yīng)急處置實(shí)務(wù)操作手冊
- 2025四川省成都市公務(wù)員考試數(shù)量關(guān)系專項(xiàng)練習(xí)題及參考答案1套
- 中深度鎮(zhèn)靜紅外線全身熱療方法課件
- 第四單元地理信息技術(shù)的應(yīng)用課件 【高效課堂+精研精講】高中地理魯教版(2019)必修第一冊
- 魯科版高中化學(xué)必修一教案全冊
- 管理養(yǎng)老機(jī)構(gòu) 養(yǎng)老機(jī)構(gòu)的服務(wù)提供與管理
- 提高隧道初支平整度合格率
- 2022年環(huán)保標(biāo)記試題庫(含答案)
- 2023年版測量結(jié)果的計(jì)量溯源性要求
- 建筑能耗與碳排放研究報(bào)告
- GB 29415-2013耐火電纜槽盒
- 中國古代經(jīng)濟(jì)試題
- 真空采血管的分類及應(yīng)用及采血順序課件
評論
0/150
提交評論