HTML5中 rem适配方案与 viewport 适配问题详解


Posted in HTML / CSS onApril 27, 2021

H5 端 rem 适配方案与 viewport 适配

rem

rem 是 CSS3 新增的一个相对单位(root em,根 em)
只根据当前页面 HTML 页面的 font-size 设置,如果根目录的 font-size 为 18px,则 1rem=18px

媒体查询设置

@media screen and (min-width: 320px) {
  html {
    font-size: 32px;
  }
}
@media screen and (min-width: 375px) {
  html {
    font-size: 37.5px;
  }
}
@media screen and (min-width: 414px) {
  html {
    font-size: 41.4px;
  }
}
@media screen and (min-width: 750px) {
  html {
    font-size: 75px;
  }
}

使用 JS 动态修改

<script>
  // 根据屏幕尺寸大小调整html的fontsize
  function setHtmlFontSize() {
    const width = document.documentElement.clientWidth;
    document.documentElement.style.fontSize = width / 10 + "px";
  }
  //   初始化
  setHtmlFontSize();
  //   监听屏幕尺寸变化事件
  window.addEventListener("resize", setHtmlFontSize);
  //   监听屏幕翻转事件
  window.addEventListener("orientationchange", setHtmlFontSize);
</script>

viewport

通过缩放来实现移动端各个尺寸的适配

适配方案 动态创建 mate viewport 属性,根据当前屏幕尺寸动态设置缩放值

Viewport 属性

 

属性 说明 备注
width 以 px 为单位定义 viewport 的宽度 一个正整数或者额字符串 device-width
height 以 px 为单位定义 viewport 的高度 一个正整数或者额字符串 device-height
initial-scale 定义设备的 dips 宽度与 viewport 尺寸之间的比例 一个 0.0 到 10.0 之间的正数
maximum-scale 定义最大缩放值,他的值必需大于等于 minimum-scale 的值 一个 0.0 到 10.0 之间的正数
minimum-scale 定义最小缩放值,他的值必需小于等于 maximum-scale 的值 一个 0.0 到 10.0 之间的正数
user-scalable 一个布尔值,用户是否可以缩放页面 yes 或 no

使用 js 动态设置 viewport 属性

原理:通过设置 viewport 的 initial-scale 相关属性 , 将所有设备布局视口的宽度调整为设计图的宽度

//定义设计稿宽度为375
const DESIGN_WIDTH = 375;
//通过设置meta元素中content的initial-scale值达到移动端适配
const setViewport = function () {
  //计算当前屏幕的宽度与设计稿比例
  let scale = window.screen.width / DESIGN_WIDTH;
  // 获取元素
  let meta = document.querySelector("meta[name=viewport]");
  let content = `width=${DESIGN_WIDTH}, initial-scale=${scale}, maximum-scale=${scale}, minimum-scale=${scale}`;
  // 判断是否已存在
  if (!meta) {
    meta = document.createElement("meta");
    meta.setAttribute("name", "viewport");
    document.head.appendChild(meta);
  }
  meta.setAttribute("content", content);
};
setViewport();
//   监听屏幕变化事件
window.addEventListener("resize", setViewport);
//   监听屏幕翻转事件
window.addEventListener("orientationchange", setViewport);

到此这篇关于HTML5中 rem适配方案与 viewport 适配问题详解的文章就介绍到这了,更多相关html5 rem适配内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
五款漂亮的纯CSS3动画按钮的实例教程
Nov 21 HTML / CSS
CSS3制作彩色进度条样式的代码示例分享
Jun 23 HTML / CSS
利用CSS3实现进度条的两种姿势详解
Mar 21 HTML / CSS
CSS3效果:自定义“W”形运行轨迹实例
Mar 29 HTML / CSS
使用HTML5 IndexDB存储图像和文件的示例
Nov 05 HTML / CSS
HTML5移动端手机网站开发流程
Apr 25 HTML / CSS
HTML5 移动页面自适应手机屏幕四类方法总结
Aug 17 HTML / CSS
在canvas上实现元素图片镜像翻转动画效果的方法
Mar 20 HTML / CSS
html5 canvas的绘制文本自动换行的示例代码
Sep 17 HTML / CSS
Html5跳转到APP指定页面的实现
Jan 14 HTML / CSS
HTML实现代码雨源码及效果示例
Feb 25 HTML / CSS
HTML基础详解(上)
Oct 16 HTML / CSS
CSS 还能这样玩?奇思妙想渐变的艺术
css3 实现文字闪烁效果的三种方式示例代码
Css预编语言及区别详解
用position:sticky完美解决小程序吸顶问题的实现方法
Apr 24 #HTML / CSS
position:sticky 粘性定位的几种巧妙应用详解
六种css3实现的边框过渡效果
Apr 22 #HTML / CSS
HTML+CSS+JS实现图片的瀑布流布局的示例代码
You might like
php实现扫描二维码根据浏览器类型访问不同下载地址
2014/10/15 PHP
php实现singleton()单例模式实例
2014/11/06 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
2016/11/16 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
JS隐藏参数post传值实例
2013/04/18 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
javascript中mouseover、mouseout使用详解
2015/07/19 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
JavaScript原型继承_动力节点Java学院整理
2017/06/30 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
Python while true实现爬虫定时任务
2020/06/08 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
英国口碑最好的的维他命胶囊品牌:Myvitamins(有中文站)
2016/12/03 全球购物
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
香港零食网购:上仓胃子
2020/06/08 全球购物
工地资料员岗位职责
2013/12/31 职场文书
大学生的自我鉴定范文
2014/01/21 职场文书
质量安全标语
2014/06/07 职场文书
文秘自荐信
2014/06/28 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
2014年六五普法工作总结
2014/11/25 职场文书
高中班主任评语
2014/12/30 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android