移动端rem布局的两种实现方法


Posted in HTML / CSS onJanuary 03, 2018

据了解,现在有两种rem布局的样式控制,其中一种是通过css的媒体查询,另外一种是通过引入js来控制,这两种方法各有各的优点,但是我还是喜欢用引入js的方法来实现rem布局,尽管现在市面上大多数都在使用css媒体查询的方式实现,在此我就将这两种方法做一总结:

方法一:常用方法,css媒体查询

@media only screen and (max-width: 600px), only screen and (max-device-width:400px) {
  html,body {
    font-size:50px;
  }
}
@media only screen and (max-width: 500px), only screen and (max-device-width:400px) {
  html,body {
    font-size:40px;
  }
}
@media only screen and (max-width: 400px), only screen and (max-device-width:300px) {
  html,body {
    font-size:30px;
  }
}
.box{
  border: 1rem solid #000;
  font-size: 1rem;
}

对于这种方法而言,他仅仅通过css文件就可以实现,在加载页面的过程中,请求的文件较少,但是如果使用的两个移动端设备屏幕宽度相差不大,都在媒体查询所设置的同一区间,那么页面中的文字大小等不会变化,可是使用引入js的方法就不一样了。

方法二:引入js

// 需求:根据设计图的比例去动态设置不同屏幕下面对应的font-size值
// 这段JS不要添加入口函数,并且引用的时候放到最前面
// ui的大小根据自己的需求去改
// 设计图的宽度
var ui = 750;
// 自己设定的font值
var font = 40;
// 得到比例值
var ratio = ui/font;
var oHtml = document.documentElement;
var screenWidth = oHtml.offsetWidth;
// 初始的时候调用一次
getSize();
window.addEventListener('resize', getSize);
// 在resize的时候动态设置fontsize值
function getSize(){
  screenWidth = oHtml.offsetWidth;
  // 限制区间
  if(screenWidth <= 320){
    screenWidth = 320;
  }else if(screenWidth >= ui){
    screenWidth = ui;
  }
  oHtml.style.fontSize = screenWidth/ratio + 'px';
}

这种通过引入js的方法,面对不同尺寸的移动端设备,都能实现文字大小等尺寸的细微变化。

HTML / CSS 相关文章推荐
纯CSS实现预加载动画效果
Sep 06 HTML / CSS
细说CSS3中的选择符
Oct 17 HTML / CSS
css3 background属性调整增强介绍
Dec 18 HTML / CSS
CSS3制作日历实现代码
Jan 21 HTML / CSS
CSS3中的opacity属性使用教程
Aug 19 HTML / CSS
CSS3中几个新增加的盒模型属性使用教程
Mar 01 HTML / CSS
关于css兼容性问题及一些常见问题汇总
May 03 HTML / CSS
基于Canvas+Vue的弹幕组件的实现
Jul 23 HTML / CSS
html5 跨文档消息传输示例探讨
Apr 01 HTML / CSS
HTML5使用drawImage()方法绘制图像
Jun 23 HTML / CSS
HTML5 manifest离线缓存的示例代码
Aug 08 HTML / CSS
从QQtabBar看css命名规范BEM的详细介绍
Aug 07 HTML / CSS
css3实现波纹特效、H5实现动态波浪效果
Jan 31 #HTML / CSS
css3动画过渡实现鼠标跟随导航效果
Feb 08 #HTML / CSS
CSS3 calc()会计算属性详解
Feb 27 #HTML / CSS
CSS3 clip-path 用法介绍详解
Mar 01 #HTML / CSS
CSS3混合模式mix-blend-mode/background-blend-mode简介
Mar 15 #HTML / CSS
CSS3截取字符串实例代码【推荐】
Jun 07 #HTML / CSS
CSS3地图动态实例代码(圆圈向外扩散)
Jun 15 #HTML / CSS
You might like
经典PHP加密解密函数Authcode()修复版代码
2015/04/05 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
javascript 避免闭包引发的问题
2009/03/17 Javascript
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
JavaScript如何一次性展示几万条数据
2017/03/30 Javascript
vue.js路由跳转详解
2017/08/28 Javascript
JavaScript实现区块链
2018/03/14 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
Node.js console控制台简单用法分析
2019/01/04 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
原生js实现随机点名功能
2019/11/05 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
利用python获得时间的实例说明
2013/03/25 Python
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
pandas 对group进行聚合的例子
2019/12/27 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
Pycharm 跳转回之前所在页面的操作
2021/02/05 Python
教师评优的个人自我评价分享
2013/09/19 职场文书
应聘护士自荐信
2013/10/21 职场文书
一封普通求职者的求职信
2013/11/20 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
五五普法心得体会
2014/09/04 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
文明班级申报材料
2014/12/24 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
Java SSM配置文件案例详解
2021/08/30 Java/Android
MySQL表字段数量限制及行大小限制详情
2022/07/23 MySQL