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

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

1         var doc = document
2         var docEle = doc.documentElement
3         var width
4         function setRootFontSize(){
5             width = docEle.getBoundingClientRect().width
6             doc.querySelector('#main').style = `transform: scale(${width / 750})`
7         }
8         setRootFontSize()

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

 

 

 

 

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

1         function setHeight() {
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 = setHeight
9         }

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

 

 

 

完整代码:

<script type="text/javascript">
    void function (){
        var doc = document
        var docEle = doc.documentElement
        var width
        function setRootFontSize(){
            width = docEle.getBoundingClientRect().width
            doc.querySelector('#main').style = `transform: scale(${width / 750})`
        }
        setRootFontSize()

        function setHeight() {
            console.log(doc.querySelector('#main').clientHeight)
            doc.body.style.height = (doc.querySelector('#main').clientHeight * width / 750) + 'px'
        }
        if (doc.readyState === "complete") {
            setHeight()
        } else {
            window.onload = setHeight
        }
    }()
</script>

 

 

二: 使用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单位

 

转载于:https://www.cnblogs.com/summer0319/p/7725298.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值