当前位置 : 主页 > 手机开发 > 无线 >

移动端适配方案

来源:互联网 收集:自由互联 发布时间:2021-06-10
首先,我们需要知道rem和em的基本概念。 rem: 相对于html根元素的fontsize。 em: 相对于当前元素的字体大小。 rem和em都能够根据屏幕大小做适配。 一、假设现在给出我们一张750px的设计图,

首先,我们需要知道rem和em的基本概念。

rem: 相对于html根元素的fontsize。 em: 相对于当前元素的字体大小。

rem和em都能够根据屏幕大小做适配。

 

一、假设现在给出我们一张750px的设计图,我们在设计图上量出200px*200px的div大小,并要求兼容320px、375px、420px、480px的屏幕大小。

解决1: 我们可以根据媒体查询+rem布局适配不同屏幕

1、我们根据设计图给定一个基准值100(1rem = 100px);

2、根据基准值适配不同的屏幕(750/100=当前屏幕大小/当前屏幕fontsize)。

@media (min-width:320px) {
    html {
        font-size: 42.666667px
    }
}
@media (min-width:375px) {
    html {
        font-size: 50px
    }
}
@media (min-width:420px) {
    html {
        font-size: 56px
    }
}
@media (min-width:480px) {
    html {
        font-size: 64px
    }
}

那么我们在开发时量取div大小为200px时,转化为rem单位

div {
    width: 2rem;
    height: 2rem;
}

我们取基准值为100,是为了我们算rem单位方便,当然,我们也可以在我们的编辑器中安装px2rem插件,安装后我们通过设置基准值大小,直接将我们量取的px转化为rem单位。

(点击编辑器小齿轮->设置->搜索px2rem->根目录font-size设置为100)

分享图片

那么问题来了,我们只做了四种不同屏幕尺寸的适配,如果我们想要兼容更多的屏幕尺寸,要做更多的媒体查询吗?

答案当然不是。

我们可以通过js代码根据屏幕大小修改html的font-size。

解决2:

<script>
    fn () {
        var screenWidth = window.innerWidth  //window.innerWidth屏幕宽度
        var baseWidth = 100
        var designWidth = 750
        if (screenWidth <=320) {  //为了适配浏览器时显示在屏幕中间,两边留白)
            screenWidth = 320
        }
        if (screenWidth >=750) {
            screenWidth = 750
        }
        document.documentElement.style.fontSize = baseWidth / designWidth * 
            screenWidth  //设置根元素font-size
    }
    fn() //初始化时调用一次
    window.addEventListener(‘resize‘, fn()) //屏幕尺寸发生改变时继续触发
}
</script>

这样,我们就可以完成不同屏幕尺寸的适配问题啦。

淘宝也给我们提供了一种适配方案,类似于我们的解决2,但是我们需要注意的是,这里的1rem = 75px, 所以我们将编辑器中rootfontSize改为75。

分享图片

我们下载flexible.js后,直接引入,在写样式时编辑器可以自动把我们的200px转化为2.66667rem了。

网友评论