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旋转动画实例代码
Sep 11 HTML / CSS
如何利用CSS3制作3D效果文字具体实现样式
May 02 HTML / CSS
html5+css3气泡组件的实现
Nov 21 HTML / CSS
CSS3贝塞尔曲线示例:创建链接悬停动画效果
Nov 19 HTML / CSS
纯CSS3实现圆圈动态发光特效动画的示例代码
Mar 08 HTML / CSS
HTML5 Canvas实现文本对齐的方法总结
Mar 24 HTML / CSS
html5 touch事件实现触屏页面上下滑动(二)
Mar 10 HTML / CSS
HTML5 对各个标签的定义与规定:body的介绍
Jun 21 HTML / CSS
html5 css3实例教程 一款html5和css3实现的小机器人走路动画
Oct 20 HTML / CSS
html5开发三八女王节表白神器
Mar 07 HTML / CSS
手对手的教你用canvas画一个简单的海报的方法示例
Dec 10 HTML / CSS
CSS实现五种常用的2D转换
Dec 06 HTML / CSS
CSS 还能这样玩?奇思妙想渐变的艺术
css3 实现文字闪烁效果的三种方式示例代码
Css预编语言及区别详解
用position:sticky完美解决小程序吸顶问题的实现方法
Apr 24 #HTML / CSS
position:sticky 粘性定位的几种巧妙应用详解
六种css3实现的边框过渡效果
Apr 22 #HTML / CSS
HTML+CSS+JS实现图片的瀑布流布局的示例代码
You might like
咖啡与牛奶
2021/03/03 冲泡冲煮
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
2007/08/19 PHP
学习并汇集javascript匿名函数
2010/11/25 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
2015/03/15 Javascript
AngularJS入门之动画
2016/07/27 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
2017/07/22 jQuery
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
python实现校园网自动登录的示例讲解
2018/04/22 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
Python根据文件名批量转移图片的方法
2018/10/21 Python
python爬取指定微信公众号文章
2018/12/20 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
2019/07/22 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
研究生自我鉴定范文
2013/10/30 职场文书
毕业生求职推荐信
2013/11/04 职场文书
运动会致辞稿50字
2014/02/04 职场文书
应届生自荐信范文
2014/02/21 职场文书
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
师德师风自查总结
2014/10/14 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
2014年学校办公室工作总结
2014/12/19 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
餐饮店长岗位职责
2015/04/14 职场文书
教师教育心得体会
2016/01/19 职场文书
HR在给员工开具离职证明时,需要注意哪些问题?
2019/07/03 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
sql字段解析器的实现示例
2021/06/23 SQL Server
详解SQL的窗口函数
2022/04/21 Oracle