移动端适配谈起

Posted soul is free

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移动端适配谈起相关的知识,希望对你有一定的参考价值。

移动端适配谈起

常用单位

px

绝对单位,一个 px 是一个点,一个像素,比如常常听到的电脑像素是1024x768的,表示的是水平方向是1024个像素点,不会随屏幕变大变小而变化。

em

相对单位,相对于父级的字体大小。如果自身定义了font-size按自身来计算(浏览器默认字体是16px)。不设置的话默认 1em = 16px。em的值并不是固定的,会继承父级元素的字体大小

// 浏览器默认的大小
<style>
    .p {
        font-size: 1em; // 16px
    }
</style>

<body>
    <p class="p">这是p标签</p>
</body>
// 元素嵌套计算的大小
<style>
    .footer {
        font-size: 20px;
    }

    .inner {
        font-size: 1.2em;
    }
</style>

<body>
    <div class="footer">
        1
        <div class="inner inner2">
            2
            <div class="inner inner3">3</div>
        </div>
    </div>
</body>

.footer 的字体大小为 20px
.inner2 的字体大小为 20px * 1.2 = 24px
.inner3 的字体大小为 24px * 1.2 = 28.8px
rem

相对单位,root em,相对于根元素即 html 的字体大小。

<style>
    .inner {
        font-size: 2rem; // 浏览器默认字体16px 16px * 2 = 32px
    }
</style>

<body>
    <div class="inner">3</div>
</body>
<style>
    html {
        font-size: 50px;
    }

    .inner {
        font-size: 2rem; // 50px * 2 = 100px
    }
</style>
rem等比适配

flexible.js 布局详解

// 根据不同设备添加不同的data-dpr值,比如说1、2或者3
// 将屏幕宽度等分为 10份

假如当前设计稿为 750px 
font-size=750/10=75px
设计稿上的元素 rem 值就为 元素px/75
75px=75/75=1rem
12px=12/75=0.16rem
假设设计图宽为375px 对标 iphone6 物理像素是375 因为 dpr为2 那么其设备像素为750px
设计图上的20px 在iphone6上其实是20*2=40px

那么我们可以这么做
fontSize = documentEle.clientWidth / 750 * 100px;
rem =20 * 2 / 100 = 0.4rem

// 或者 
fontSize = documentEle.clientWidth / (750 / 2) * 100px;
rem =20 / 100 = 0.2rem

为什么乘以100 font-size 在chrome强制最小字体为12号
为什么乘以2 dpr 物理像素 * dpr = 设备像素
vw

浏览器内部的可视区域大小 1-100

vw:1vw等于视口宽度的1%。
vh:1vh等于视口高度的1%。
vmin:选取vw和vh中最小的那个
vmax:选取vw和vh中最大的那个

以上是关于移动端适配谈起的主要内容,如果未能解决你的问题,请参考以下文章

前端移动端适配 - 媒体查询适配方案

前端移动端适配 - 媒体查询适配方案

前端移动端适配 - 媒体查询适配方案

适配方案之移动端适配

PC端移动端页面适配方案

## 原声做移动端适配适配