web自适应的实现和原理

预读 rem

rem作为一个单位是受 html 标签的 font-size 变化而变化的

<html style="font-size:24px;">
	<body>
		<div style="font-size:.5rem;"></div>
	</body>
</html>

因上可得:通过控制 html 的 font-size 来达到一个简单的自适应

实现自适应

html 中添加

<meta name="viewport" content="width=device-width, initial-scale=1" />

这条代码的作用为控制显示宽度
网页宽度默认等于屏幕宽度(width=device-width)
原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。



然后添加一个 **script** 标签,或新建且引入 写入以下代码
(function (){
  function setPixelRatio (){  // 作用:当某个标签没有使用rem作为单位,那么不进行自适应
    document.body ? document.body.style.fontSize = 12 * window.devicePixelRatio + 'px' : document.addEventListener('DOMContentLoaded',setPixelRatio)	//DOMContentLoaded事件,在HTML文档加载和解析完成之后触发,不会等待stylesheets, images, and subframes加载结束。
  } //设置设备像素比
  setPixelRatio()	// 可注释


  function setFontSize() {  //动态设置html的font-size
    document.documentElement.style.fontSize = document.documentElement.clientWidth / 10 + 'px'
  }

  setFontSize()
  window.addEventListener("resize",setFontSize) //当页面宽度发生变化时触发
  window.addEventListener("pageshow",function (e){e.persisted && setFontSize()})  //页面前进或后退都重新设置像素比
}())

至此通过动态修改 html 的 font-size 实现了一个简单的自适应
setFontSize 函数将页面宽度取 十分之一 作为 html 的 font-size 的大小
原因是需要配合一个 vscode插件 便于开发和设计图便于计算
如设计图宽度为 375px,那么 px2rem-plus 栏值应为 375 / 10
在开发时即可快速运算出对应的rem大小
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值