移动端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制作精致的照片墙特效
Jun 07 HTML / CSS
CSS3圆角和渐变2种常用功能详解
Jan 06 HTML / CSS
纯CSS3实现扇形动画菜单(简化版)实例源码
Jan 17 HTML / CSS
css3+伪元素实现鼠标移入时下划线向两边展开的效果
Apr 25 HTML / CSS
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
Mar 15 HTML / CSS
Html5实现如何在两个div元素之间拖放图像
Mar 29 HTML / CSS
整理HTML5的一些新特性与Canvas的常用属性
Jan 29 HTML / CSS
HTML5 Canvas绘制五星红旗
May 04 HTML / CSS
HTML5头部标签的一些常用信息小结
Oct 23 HTML / CSS
浅谈Html5页面打开app的一些思考
Mar 30 HTML / CSS
关于HTML5+ API plusready的兼容问题
Nov 20 HTML / CSS
使用HBuilder制作一个简单的HTML5网页
Jul 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
一首老MP3,致敬WAR3经典
2021/03/08 魔兽争霸
PHP加密解密类实例分析
2015/04/20 PHP
PHP云打印类完整示例
2016/10/15 PHP
js脚本学习 比较实用的基础
2006/09/07 Javascript
$()JS小技巧
2007/07/21 Javascript
javascript concat数组累加 示例
2009/09/03 Javascript
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
2011/04/07 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
js实现微信聊天界面
2020/08/09 Javascript
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
浅谈Python中copy()方法的使用
2015/05/21 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
神经网络python源码分享
2017/12/15 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
2019/05/13 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
如何使用Python进行PDF图片识别OCR
2021/01/22 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
css3实现超立体3D图片侧翻倾斜效果
2014/04/16 HTML / CSS
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
智能电子应届生求职信
2013/11/10 职场文书
作风建设演讲稿
2014/05/23 职场文书
工程质量保证书
2015/05/09 职场文书
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS