html移动端适配方案rem

为了做到一次开发的网页能够在不同尺寸的移动端设备上适配,我们需要使设计稿上标注的固定尺寸在不同设备上按照设备大小的比例显示不同的尺寸。

比如设计稿是按照 IPhone6 的 750px 像素设计的,设计稿上的头部导航条的高度是75px。

那么在 IPhone6 的手机上导航条显示的高度就是75px,在640px像素的手机上显示的高度就应该是(640/750) * 75 = 64px,以此类推,在不同像素手机上元素的大小就是(实际设备大小/设计稿大小)*设计稿上该元素的大小

而在实际开发中,我们不可能通过这样的计算来设计每一个元素的宽高,因为代价太大。

那么既然一个元素在不同设备上的大小比例等于不同设备之间的比例,显然这里我们需要一个变量,这个变量与设备大小相关,是根据不同设备计算出来的不同的值,元素实际大小 = 一个常量 * 该变量

常量自然取得是设计稿中的大小,那么答案呼之欲出,变量用的就是css新特性中的REM值,这个属性本身就是一个变量

当然设计rem值的核心就是通过js来根据设备的大小,按照公式计算出html的font-size值

这里介绍两种做法:

  • 淘宝做法

    把rem值设为设备大小/10,比如750px的rem=75px;640px的rem=64px,那么设计稿(750px)中一个75px的元素用rem表示就是1rem,由此可以做到在640设备里显示是64px。所以在根据750px的设计稿编写css时,元素的大小就是(设计稿标注大小 / 75(设计稿的rem值))+ ‘rem‘

    但是这种方法的缺点就是有时结果是十分复杂的小数,不便计算

  • 网易做法

    接着上述淘宝描述,为了方便计算,我们现在不想让元素的大小还需要除以75这个750px中的rem值,而是想让750px中的rem值是1,也就是说750px设计稿中的rem计算为(750 / 750) = 1,那么当然为了保证别的设备中的rem值能够和750px中的rem值拥有原有的比例关系(也就是实际设备大小 / 设计稿大小),就需要这样计算设备的rem值:(设备大小 / 750)。

    如此,就可以在设计元素的大小直接使用设计稿中的大小,但是单位要换为rem。

总结:这两种方案十分类似,只是在计算的方法上有所不同,但是最为最为关键的要点就是保证不同设备rem值之间的比例等于设备大小的比例,如此才能保证元素在使用rem作为单位时也保有相同的比例,从而做到真正的适配方案。

参考文章:http://www.cnblogs.com/well-nice/p/5509589.html

时间: 2024-08-28 12:22:49

html移动端适配方案rem的相关文章

移动端适配方案-rem(基础篇)

常见移动web适配方案一般有3种方法,如下图: ①:定高,宽度百分比(百分比适配简单,一般用来做一些适配性不高的页面,比如只有一些文字和图片等简单的屏幕适配) ②:flex (更多的用于复杂页面的布局.具体参照阮一峰大神写的-Flex 布局教程:语法篇和实例篇 http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool   (语法篇) http://www.ruanyifeng.com/blog/2015

rem移动端适配方案

一. rem vs em 单位 定义 特点 rem font size of the root element 以根元素字体大小为基准 em font size of the element 以父元素字体大小为基准 二.js计算 为了避免造成因为动态设置<html>元素的font-size而造成页面抖动,一般这部分代码我们放在header底部去加载,并内联到html文档里面. <script> const oHtml = document.getElementsByTagName(

移动端适配方案

Flexible适配方案 最早的文章,是15年阿里手淘团队的移动端适配方案. 设计师常选择iPhone6作为基准设计尺寸,交付给前端的设计尺寸是按750px * 1334px为准(高度会随着内容多少而改变). 前端开发人员通过一套适配规则自动适配到其他的尺寸. 先了解一些基本概念 视窗viewport 简单理解,viewport是严格等于浏览器的窗口,在桌面浏览器中,viewport就是浏览器窗口的宽度高度. 但是在移动端的viewport太窄,为了能更好的为css布局服务,所以提供了两个vie

还在用rem做移动端适配?最新移动端适配方案vw,vh了解一下!

vw,vh都是相对于屏幕视口的单位. vw:相对于视口的宽度.视口被均分为100单位的vw: vh:相对于视口的高度.视口被均分为100单位的vh: vmax:相对于视口的宽度或高度中较大的那个.其中最大的那个被均分为100单位的vmax: vmin:相对于视口的宽度或高度中较小的那个.其中最小的那个被均分为100单位的vmin: 解释完相关观念,下面就来说说具体的适配方案: 一般UI给的设计稿都是采用750X1334的,因此可以使用sass来编写一个函数: 1 $containerWidth:

移动端适配方案研究

初次接触移动端的时候,以为终于可以不用像pc那样考虑令人头疼的ie浏览器兼容问题,有强大的css3的帮助,可以随心所欲..可是后来才发现原来移动端各种层次不齐的终端更会让人抓耳挠腮,同样的页面在不同的手机上显示的完全不一样的效果,于是抛开功能,页面适配性也成了一个大的课题. 说到移动端,下面这一行代码大家一定不陌生: <meta name="viewport" content="width=device-width, initial-scale=1, maximum-s

h5移动端适配方案

flex布局 flex布局,不使用rem,直接使用px. <!DOCTYPE html> <html> <head> <title></title> <style> /*利用flex属性,可以实现块级元素1:1:1*/ /*简单的就能使里面的内容居中(尤其是垂直居中,好用到爆)*/ .box{ display: flex;width: 50px;height: 30px; /*默认 row*/ flex-direction:colum

08-移动端开发教程-移动端适配方案

由于移动端的特殊性,屏幕的尺寸碎片化严重,要想很好的适配不同的尺寸的设备,需要我们前端开发相比PC端要做一些基层的适配方案. 1. 常见的适配方案 百分比+固定高度布局方案 固定屏幕为理想视口宽度 少许的媒体查询设置字体 水平百分比布局 水平方向部分也可以使用弹性布局 Rem解决方案 Rem的大小取值:根据页面的dpr动态改变 Rem的取值: 1rem = 100px 或者 1rem = 1/10 * 理想视口的宽度 chrome浏览器字体小于12px(会被重置为12px) 固定设计稿的宽度开发

Vue移动端适配方案.md

移动端主要采用rem布局,vue+webpack,通过webpack编译,将css中px自动转成rem或其它单位,这里采用px2rem-loader进行转换,最后引入lib-flexible,实现不同设备不同分辨率的弹性适配. 实现步骤 第一步:引入lib-flexible # 下载lib-flexible npm i lib-flexible --save # 在vue入口main.js导入 // The Vue build version to load with the `import`

手淘H5移动端适配方案flexible源码分析

移动端适配一直是一个值得探讨的问题,在业余时间我找了一些页面,查看了一些厂商对于移动端H5页面的适配方案,看到了几个典型的例子,今天就来记录一下我看到的第一个典型的例子,也是我们公司目前普通H5项目正在使用的适配方案. 这个适配方案是lib-flexible,在看这个源码的同时,我想先来回顾一下几个概念: 1.  viewport 在移动设备上,viewport是设备屏幕用来显示我们网页的那一块区域,或者说是浏览器(或者Hybird App内的webview)用来展示我们网页的那部分区域,vie