1)使用rem进行等比缩放

rem作用于非根元素时,相对于根元素字体大小;rem作用于根元素字体大小时,相对于其出初始字体大小

比如根元素(html)设置font-size=12px; 非根元素设置width:2rem;则换成px表示就是24px;

如果根元素设置成font-size=1rem;则根元素换成px就是相对于初始字体大小,一般是12px;

原理分析:rem屏幕适配就是一种等比缩放效果

一般来说设计稿是基于p6(750),或者是p5(640)的尺寸,以p6为例子:

设置:<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1,user-scale=no">

(function (doc, win) {
var docEl = doc.documentElement
var resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'
var recalc = function () {
var clientWidth = docEl.clientWidth
if (!clientWidth) {
return
}
if (clientWidth >= 750) { // 避免无无限放大
docEl.style.fontSize = '100px'
} else {
docEl.style.fontSize = 100*(clientWidth / 750) + 'px' // 设置根元素的font-size
}
}
if (!doc.addEventListener) {
return
}
win.addEventListener(resizeEvt, recalc, false)
doc.addEventListener('DOMContentLoaded', recalc, false)
})(document, window)

一般是配合scss 进行使用:

mixin.scss

@function px2rem($val) {
@return #{$val*2/100}rem;
}

xxx.vue

@import '~/sass/mixin.scss';

.des-word {
width: px2rem(30)
height: px2rem(20);
line-height: px2rem(20);
text-align: left;
color: #434c5f;
letter-spacing: 0;
word-break: break-all;
}   

存在的问题:对于文本段落来说,一般是不建议使用rem进行设置的,字体的大小和字体宽度,并不成线性关系,所以字体大小不能使用rem。

普遍的做法是使用媒体查询,固定几种字体大小【根元素是html ,如果一个元素设置为xrem那么他的大小是根据根元素字体大小进行变化的】

@media screen and (min-width: 320px) {
body {font-size: 16px}
}
@media screen and (min-width: 481px) and (max-width:640px) {
body {font-size: 18px}
}
@media screen and (min-width: 641px) {
body {font-size: 20px}
}  
div{
  font-size:1.5em
}

字体大小是可以继承的,这就是意味着,可以使用em ,进行字体大小设置。

em作为font-size的单位时,其代表父元素的字体大小,em作为其他属性单位时,代表自身字体大小

比如父元素font-size:12px;

自身元素如果写成:font-sise:2em;则自身元素用px表示就是24px(相对父元素字体大小);

但是自身元素设置:width:2rem,那么自身元素用px表示就是48px(相对自身字体大小);

2)使用vw进行适配布局

相对于视口的宽度。视口被均分为100单位的vw

如果屏幕宽度为200px,那么1vw=2px

关于h5屏幕适配的更多相关文章

  1. 移动设备 h5屏幕适配

    <meta name="HandheldFriendly" content="true"><meta name="MobileOpt ...

  2. 那些H5用到的技术(6)——屏幕适配

    前言长屏适配单页适配参考 前言 曾经屏幕适配一直是个头疼的问题,各种坑,各种浏览器&设备兼容问题,好在的是,随着技术&标准的不断发展,这个问题得到了极大程度的解决,这篇文章主要对之前开 ...

  3. h5移动端屏幕适配

    1.rem <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  4. H5网页适配 iPhoneX,就是这么简单

    iPhoneX 取消了物理按键,改成底部小黑条,这一改动导致网页出现了比较尴尬的屏幕适配问题.对于网页而言,顶部(刘海部位)的适配问题浏览器已经做了处理,所以我们只需要关注底部与小黑条的适配问题即可( ...

  5. 【原】让H5页面适配移动设备全家 - 前端篇 - PPT

    7月份在部门内给设计中心的同事们带来<让H5页面适配移动设备全家 - 设计师篇 - PPT>的分享,在视觉和交互稿上提出页面适配的建议及提升页面体验的好处,促进前端和设计双方更好的合作,同 ...

  6. 【原】让H5页面适配移动设备全家 - 设计师篇 - PPT

    上一篇文章<pageResponse - 让H5适配移动设备全家>中分享了一个小插件让一套H5页面适配几乎所有移动设备,得到了一些同学的推荐和认可,这里感谢大家的支持. 在此之前也在部门前 ...

  7. Android屏幕适配笔记

    1.限定符 为了适配不同屏幕大小的android手机或android平板,有时候就需要利用限定符来为不同的屏幕设定不同的布局文件,在一般情况下我们都是在layout文件夹下为某个活动准备一个默认的布局 ...

  8. iOS开发点滴:iPhone屏幕适配

    最近开始做iOS开发,遇到一些小问题和解决方法,记录下.   今天是iPhone屏幕适配 iPhone5出来之后屏幕就有iPhone就有了2种尺寸:3.5寸和4寸,xcode 5 的IB设计器里面界面 ...

  9. IOS开发之绝对布局和相对布局(屏幕适配)

    之前如果做过Web前端页面的小伙伴们,看到绝对定位和相对定位并不陌生,并且使用起来也挺方便.在IOS的UI设计中也有绝对定位和相对定位,和我们的web前端的绝对定位和相对定位有所不同但又有相似之处.下 ...

随机推荐

  1. Rancher 企业级docker管理平台

    启动Rancher 加入ca证书: docker run -d  --restart=unless-stopped -p 8080:8080 -v /root/cacert.crt:/var/lib/ ...

  2. gitlab永久设置密码

    在 .gitconfig 文件中加入: [credential]       helper = store .git-credentials close address

  3. TCP为什么是三次握手,为什么不是两次或者四次 && TCP四次挥手

    这是一个很有意思的问题~ 首先,我们要知道TCP是全双工的,即客户端在给服务器端发送信息的同时,服务器端也可以给客户端发送信息.而半双工的意思是A可以给B发,B也可以给A发,但是A在给B发的时候,B不 ...

  4. Maven 入门篇(下)

    第一篇文章大概的介绍了一下Apache Maven以及它的下载和安装,并且运行了一个简单的示例.那么在对maven有了一点接触后,接下去的一步是要了解maven的核心概念,这样才能在使用maven的时 ...

  5. Zend Studio导致PHP插入数据库中文乱码【坑了个爹】

    用PHP往数据库里面插入数据,在执行INSERT语句前已经执行过 SET NAMES UTF8命令,MySql数据库的编码也确定是UTF8,然而插入中文的结果还是乱码. 找来找去,最后发现原来是用的I ...

  6. 使用MyEclipse将HTML5移动项目迁移到PhoneGap(一)

    MyEclipse开年钜惠 在线购买低至75折!立即开抢>> [MyEclipse最新版下载] 一.创建一个新的PhoneGap应用程序项目 PhoneGap应用程序项目的结构与HTML5 ...

  7. vue和微信小程序的区别、比较

    链接:https://segmentfault.com/a/1190000015684864 一.生命周期 先贴两张图: vue生命周期 小程序生命周期 相比之下,小程序的钩子函数要简单得多. vue ...

  8. 2018-2019-2 网络对抗技术 20165202 Exp1 PC平台逆向破解

    一.基础知识 掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码. NOP指令为空指令,当运行该指令时CPU不做任何事情,但是会占用一个指令的时间,当指令间需要有延时,可以插入NOP指令 ...

  9. 逆向路由器固件之SQL注入 Part3

    另寻他径 在前面的内容中,我们使用TEW-654TR路由器的tftp服务实现了获取目标的管理权限.但是要是tftp没有开放到外网怎么办?另寻他径:在这一篇中会我们来分析一个web应用上的漏洞. 初步分 ...

  10. 在C#中如何定义一个变长的结构数组?如果定义好了,如何获得当前数组的长度?

    用ArrayList,他就相当于动态数组,用add方法添加元素,remove删除元素,count计算长度