element 手机适配_关于手机适配的方案(transform)

本文介绍了两种手机适配方法。一种使用transform进行缩放,通过设置根元素字体大小来实现不同屏幕尺寸下的比例适配,同时解决因缩放导致的body高度问题。另一种方法是利用postcss-pxtorem将px单位转换为rem单位,简化适配过程。
摘要由CSDN通过智能技术生成

手机按照750px 的设计稿样式排版。页面在750px的屏幕上显示正常

1 var doc =document2 var docEle =doc.documentElement3 varwidth4 functionsetRootFontSize(){5 width =docEle.getBoundingClientRect().width6 doc.querySelector('#main').style = `transform: scale(${width / 750})`7 }8 setRootFontSize()

在其他尺寸的屏幕上,按照比例进行缩放。

遇到的问题: 由于在样式加载后进行了缩放,所以body的高度没有改变,仍然是缩放之前的高度,所以在页面加载之后需要设置重新设置body的高度,方法如下:

1 functionsetHeight() {2 console.log(doc.querySelector('#main').clientHeight)3 doc.body.style.height = (doc.querySelector('#main').clientHeight * width / 750) + 'px'

4 }5 if (doc.readyState === "complete") {6 setHeight()7 } else{8 window.onload =setHeight9 }

document.readystatus 在加载中是loading状态,加载完成之后转为complate状态。需要在此时重新设置body的高度、

完整代码:

void function(){var doc =documentvar docEle =doc.documentElementvarwidthfunctionsetRootFontSize(){

width=docEle.getBoundingClientRect().width

doc.querySelector('#main').style = `transform: scale(${width / 750})`

}

setRootFontSize()functionsetHeight() {

console.log(doc.querySelector('#main').clientHeight)

doc.body.style.height= (doc.querySelector('#main').clientHeight * width / 750) + 'px'}if (doc.readyState === "complete") {

setHeight()

}else{

window.οnlοad=setHeight

}

}()

二: 使用rem适配

1:  npm install postcss-pxtorem --save-dev

安装postcss的依赖

2: 修改配置文件 .postcssrc.js

1 //https://github.com/michael-ciniawsky/postcss-load-config

2

3 module.exports ={4

5 "plugins": {6 //to edit target browsers: use "browserslist" field in package.json

7 "autoprefixer": {},8 "postcss-pxtorem": {9 rootValue: 16,10 unitPrecision: 5,11 propWhiteList: [],12 selectorBlackList: ['className'],13 replace: true,14 mediaQuery: false,15 minPixelValue: 2

16 }17 }18 }

这样样式以px为单位,输出的样式为rem单位

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值