移动web开发的特点

  1. 运行在手机端web页面(H5页面): 对于手机而言,兼容HTML5所有的新特性
  2. 跨平台性:可以运行在PC端、IOS端 、安卓端,
  3. 基于webview:webView是移动端提供的运行JavaScript的环境,是系统渲染Web网页的一个控件,可与页面JavaScript交互,实现混合开发,其中Android和 IOS又有些不同:
  4. 告别 IE 拥抱webkit:对于日常的PC开发来说,需要兼容各种各样厂商的浏览器,但是对于移动web,基本就告别了浏览器厂商的兼容性,因为移动端手机webview基本上都是基于webkit内核。
  5. 更高的适配性和性能要求:程序运行在手机端,但手机屏幕尺寸各式各样,性能方面跟PC相比要相对差一点,网络状况也是错综复杂。

Rem 布局适配原理

rem 是(font size of the root element),就是一个字体单位,根据 html 根元素的字体大小,实时变化 。 浏览器 默认字体大小是 16px 。

  • 字体单位:值根据 html 根元素字体大小而定,同样可以作为宽度,高度等单位
  • 适配原理:将 px 替换成 rem ,动态修改 html 的font-size适配
  • 兼容性:IOS6.1+ 和Android2.1+,基本覆盖所有流行的手机系统

rem 基准值及数值计算

基准值: html 根元素字体大小的值,默认font-size: 16px,适配需要根据屏幕尺寸动态修改html font-size,方式:Media Query(媒体查询) 和 JS 动态获取

数值计算:px 值经换算得到的 rem 值 ,如1rem = 16px ,10rem = 160px

750的设计稿,宽高240px, 字体大小24px , 使用以下方式实现适配

Media Query(媒体查询)

在一些相对简单的页面,可以使用定高宽度百分比的布局,而使用Media Query(媒体查询)和Flex布局,也基本上能够达到实现响应式布局的要求。

但是移动端屏幕尺寸太多了,针对每一个尺寸都写一套media 不太现实,写css样式时也不应该依赖css的顺序,后一个覆盖前一个,这样不利于维护和代码的可读性。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no">
<title>Rem</title>
<style type="text/css">
.box {
width: 10rem;
height: 10rem;
background-color: blue;
font-size:1rem;
color: #fff;
} @media screen and (max-width:376px) and (min-width:321px) {
html {
font-size: 24px;
}
}
@media screen and (max-width:320px) {
html {
font-size: 20px;
}
}
</style>
</head> <body>
<div class="box">
hello rem
</div>
</body>
</html>

scss 工程使用函数计算

rem:37.5px 就是页面的基准值,写样式时须以一个确定的屏幕来作为参考(视觉稿), 假如视觉稿是以 iphone6 的屏幕为基准设计的,iPhone6 的屏幕大小是 375px,

@function px2rem($px){
$rem : 37.5px;
@return ($px/$rem) + rem;
} /* 使用 */
.box {
width: px2rem(240px);
height: px2rem(240px);
background-color: blue;
font-size:px2rem(24px);
color: #fff;
}

JS动态获取屏幕的宽度

以一个确定的屏幕来作为参考(视觉稿),再通过JS动态获取屏幕的宽度,设置rem基准值:

  <style type="text/css">
.box {
width: 5rem; // 以一个确定的屏幕来作为参考(视觉稿) 1rem = 37.5px
height: 5rem;
background-color: blue;
font-size:1rem;
color: #fff;
}
</style> <body>
<div class="box">
hello rem
</div>
</body>
<script>
// 获取视窗宽度
let htmlWidth = document.documentElement.clientWidth || document.body.clientWidth
console.log(htmlWidth); let htmlDom = document.getElementsByTagName('html')[0]
htmlDom.style.fontSize = htmlWidth/10 + 'px' // 监听页面 缩放事件
window.addEventListener('resize',function(){
let htmlWidth = document.documentElement.clientWidth || document.body.clientWidth
htmlDom.style.fontSize = htmlWidth/10 + 'px' // iP6, 375 / 10 = 37.5
}) </script>

直接将html 的 font-size 设置成 100px

一般情况,根据px值 计算rem值较为繁琐,还可以将 html 的 font-size 设置成 100px,直接将数值除以 100 在加上 rem 。

  <style type="text/css">
.box {
width: 2.4rem; // 以一个确定的屏幕来作为参考(视觉稿) 1rem = 37.5px
height: 2.4rem;
background-color: blue;
font-size:0.24rem;
color: #fff;
}
html{
font-size:100px;
}
</style> <body>
<div class="box">
hello rem
</div>
</body>

移动web开发适配秘籍Rem的更多相关文章

  1. 移动web开发适配方案之Rem

    移动端为什么要做适配 移动端相对PC端来说大部分浏览器内核都是基于Webkit的,所以大部分都支持CSS3的最新语法.但是由于手机的屏幕尺寸和分辨率都不太一样(尤其是安卓),所以不得不对不同分辨率的手 ...

  2. 移动 WEB 开发布局方式 ---- rem 适配布局

    一.rem 基础 1. rem 单位 em : 相对于父元素的字体大小来说的 <div> <p></p> </div> div { font-size: ...

  3. 移动web开发适配rem

    移动的meta标签 <meta  name="viewport" content="width=device-width, initial-scale=1,user ...

  4. web app变革之rem(手机屏幕实现全适配)

    以往web移动适配,常规写法是:media only screen @media only screen and (min-device-width: 320px){ //针对iPhone 3 } @ ...

  5. 移动端页面开发适配 rem布局原理

    主题 HTML移动端页面开发适配 rem布局原理 什么是适配,为什么要适配 我们拿到的设计图一般是以640,750,1080分辨率为基准设计的,而现在的手机终端各式各样,分辨率不同,逻辑像素不同 ,适 ...

  6. 移动web适配利器-rem

    移动web适配利器-rem 前言 提到rem,大家首先会想到的是em,px,pt这类的词语,大多数人眼中这些单位是用于设置字体的大小的,没错这的确是用来设置字体大小的,但是对于rem来说它可以用来做移 ...

  7. 移动端适配(rem & viewport)--移动端开发整理笔记(四)

    移动端适配 通过rem适配 em: 根据元素自身的字体大小来计算自己的尺寸 rem: (root em) 根据根节点(html)的字体大小来计算自己的尺寸   我们知道,在不同的手机设备,分辨率大小是 ...

  8. 转载:移动web开发规范

    本文来源:http://blog.csdn.net/joueu/article/details/44329825 以下是规范建议,均是日常在开发当中的的一些经验,仅供参考. 移动web开发规范 一.头 ...

  9. 移动Web开发小技巧

    移动Web开发小技巧 添加到主屏后的标题(IOS) name="apple-mobile-web-app-title" content="标题"> 启用  ...

  10. 超好:web app变革之rem

    感谢你的阅读,本文由 腾讯ISUX 版权所有,转载时请注明出处,违者必究,谢谢你的合作.注明出处格式:腾讯ISUX (https://isux.tencent.com/web-app-rem.html ...

随机推荐

  1. layui-框架学习小总结

    主要6点: 1.导航栏变成了类似tab的页签,支持关闭,点击刷新. 2.左侧菜单树可隐藏. 3.树的搜索. 4.表格的新增行,并保存到后台. 5.表格 加载 下拉框,并赋值,选择了值后把值同步到表格对 ...

  2. Vue cli使用Element UI

    当前的测试环境如下: ---- 新版的@vue/cli ---- Vue2.x版本 第一步:安装Element UI npm i element-ui -S 第二步:引入Element UI 在mai ...

  3. HTML——form表单

    表单主要是用来收集客户端提供的相关信息,提供了用户数据录入的方式,有多选.单选.单行文本.下拉列表等输入框,便于网站管理员收集用户的数据,是Web浏览器和Web服务器之间实现信息交流和数据传递的桥梁. ...

  4. 2024盘古石取证比赛(IPA+人工智能)

    前言 题目列表 IPA部分 1. 分析毛雪柳的手机检材,记账 APP 存储记账信息的数据库文件名称是: [ 答案格式:tmp.db ,区分大小写 ][ ★★★★☆ ] 通过icost软件可以定位rae ...

  5. mescroll.js 使用

    mescroll.js 使用 附:点击查看中文文档 第一步:引入css和js // unpkg的CDN: <link rel="stylesheet" href=" ...

  6. 解决使用`npm install`或`npm i`命令之后报`Unexpected token in JSON at position`错误的问题

    网上大多数的教程都是以下几个步骤挨个试一遍,包括 stackoverflow 上也是这么说的 删除node_modules文件夹 删除package-lock.json文件 强制清除npm缓存 npm ...

  7. uni-app mpvue wepy websocket的介绍

    uni-app 网址:https://uniapp.dcloud.io/ uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS.Android.H5.以 ...

  8. 基于服务器响应的实时天气数据进行JSON解析的详细代码及其框架

    #include <netinet/in.h> #include <arpa/inet.h> #include <stdio.h> #include <err ...

  9. Vue学习:12.生命周期实例

    两个小例子,巩固一下生命周期钩子函数. 实例1:初始化渲染 实现功能: 在 Vue 实例数据为空的情况下,用户在一进入页面就向服务器发送请求获取数据,并在数据返回后进行动态渲染. 思路: 创建一个 V ...

  10. idea导入maven项目发现有jar或插件无法下载检查idea中的maven配置,maven配置文件中需配置阿里云的镜像地址

    D:\apache-maven-3.2.3\conf\settings.xml <mirrors> <mirror> <id>nexus-public-snapsh ...