移动端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 相关文章推荐
使用CSS3实现字体颜色渐变的实现
Mar 09 HTML / CSS
使用CSS3代码绘制可爱的Hello Kitty猫
Aug 03 HTML / CSS
纯CSS实现设置半个字符的样式
Jul 03 HTML / CSS
CSS3 新增选择器的实例
Nov 13 HTML / CSS
详解使用canvas保存网页为pdf文件支持跨域
Nov 23 HTML / CSS
HTML5 WebGL 实现民航客机飞行监控系统
Jul 25 HTML / CSS
关于 HTML5 的七个传说小结
Apr 12 HTML / CSS
html5 css3实例教程 一款html5和css3实现的小机器人走路动画
Oct 20 HTML / CSS
HTML5标签嵌套规则详解【必看】
Apr 26 HTML / CSS
html5清空画布方法(三种)
Oct 16 HTML / CSS
HTML5的postMessage的使用手册
Dec 19 HTML / CSS
css height属性中的calc方法详解
Jun 03 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入门小知识
2008/03/24 PHP
Smarty变量调节器失效的解决办法
2014/08/20 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
javascript创建createXmlHttpRequest对象示例代码
2014/02/10 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
jQuery 常用代码集锦(必看篇)
2016/05/16 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
2020/04/18 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
JS代码实现页面切换效果
2021/01/10 Javascript
python求pi的方法
2014/10/08 Python
Python中断言Assertion的一些改进方案
2016/10/27 Python
Python实现的摇骰子猜大小功能小游戏示例
2017/12/18 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
Python Django中间件使用原理及流程分析
2020/06/13 Python
Python 内存管理机制全面分析
2021/01/16 Python
CSS3实现文本垂直排列的方法
2018/07/10 HTML / CSS
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
美特斯邦威官方商城:邦购网
2016/10/13 全球购物
Sephora丝芙兰马来西亚官方网站:国际化妆品购物
2018/03/15 全球购物
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
技校毕业生个人学习的自我评价
2014/02/21 职场文书
机关中层领导干部群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
人事行政助理岗位职责
2015/04/11 职场文书
小学运动会入场词
2015/07/18 职场文书
2015毕业设计工作总结
2015/07/24 职场文书
python爬虫请求库httpx和parsel解析库的使用测评
2021/05/10 Python
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android