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编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
Jan 07 HTML / CSS
一款纯css3实现的响应式导航
Oct 31 HTML / CSS
html5+css3气泡组件的实现
Nov 21 HTML / CSS
CSS3 @font-face属性使用指南
Dec 12 HTML / CSS
纯css3实现走马灯效果
Dec 26 HTML / CSS
CSS3中的transform属性进行2D和3D变换的基本用法
May 12 HTML / CSS
基于 HTML5 WebGL 实现的垃圾分类系统
Oct 08 HTML / CSS
通过Canvas及File API缩放并上传图片完整示例
Aug 08 HTML / CSS
HTML5实现文件断点续传的方法
Jan 04 HTML / CSS
H5 canvas实现贪吃蛇小游戏
Jul 28 HTML / CSS
HTML5拖放API实现自动生成相框功能
Apr 07 HTML / CSS
HTML CSS 一个标签实现带动画的抖音LOGO
Apr 26 HTML / CSS
CSS 还能这样玩?奇思妙想渐变的艺术
css3 实现文字闪烁效果的三种方式示例代码
Css预编语言及区别详解
用position:sticky完美解决小程序吸顶问题的实现方法
Apr 24 #HTML / CSS
position:sticky 粘性定位的几种巧妙应用详解
六种css3实现的边框过渡效果
Apr 22 #HTML / CSS
HTML+CSS+JS实现图片的瀑布流布局的示例代码
You might like
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
PHP向socket服务器收发数据的方法
2015/01/24 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
PHP文件操作详解
2016/12/30 PHP
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
js 判断文件类型并控制表单提交示例代码
2013/11/14 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
AngularJS实现分页显示数据库信息
2016/07/01 Javascript
js实现无缝滚动图
2017/02/22 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
Python range与enumerate函数区别解析
2020/02/28 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
python如何调用php文件中的函数详解
2020/12/29 Python
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
美国折扣宠物药房:Total Pet Supply
2018/05/27 全球购物
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
化学学院毕业生自荐信范文
2013/12/17 职场文书
会计职业生涯规划范文
2014/01/04 职场文书
九年级英语教学反思
2014/01/31 职场文书
食品安全工作方案
2014/05/07 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
婚庆答谢词
2015/01/04 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
房产遗嘱范本
2015/08/06 职场文书
MongoDB使用场景总结
2022/02/24 MongoDB