移动端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 box-sizing属性使用参考指南
Jan 08 HTML / CSS
CSS3网格的三个新特性详解
Apr 04 HTML / CSS
CSS3实例分享--超炫checkbox复选框和radio单选框
Sep 01 HTML / CSS
CSS3 仿微信聊天小气泡实例代码
Apr 05 HTML / CSS
深入剖析webstorage[html5的本地数据处理]
Jul 11 HTML / CSS
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
Jan 09 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(二)
Jan 21 HTML / CSS
用HTML5实现网站在windows8中贴靠的方法
Apr 21 HTML / CSS
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
Jul 11 HTML / CSS
基于 HTML5 WebGL 实现的医疗物流系统
Oct 08 HTML / CSS
html5 横向滑动导航栏的方法示例
May 08 HTML / CSS
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
人大复印资料处理程序_补充篇
2006/10/09 PHP
用PHP的ob_start();控制您的浏览器cache!
2006/11/25 PHP
PHP语法速查表
2006/12/06 PHP
同台服务器使用缓存APC效率高于Memcached的演示代码
2010/02/16 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
使用javascript访问XML数据的实例
2006/12/27 Javascript
js创建子窗口并且回传值示例代码
2013/07/02 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
使用jspdf生成pdf报表
2015/07/03 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
理解javascript async的用法
2017/08/22 Javascript
vue3.0 搭建项目总结(详细步骤)
2019/05/20 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
原生js实现照片墙效果
2020/10/13 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
python颜色随机生成器的实例代码
2020/01/10 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
智能室内花园:Click & Grow
2021/01/29 全球购物
设计总监岗位职责
2013/12/07 职场文书
干部培训自我鉴定
2014/01/22 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
员工开除通知书
2015/04/25 职场文书
校园运动会广播稿
2015/08/19 职场文书
关于公司年会的开幕词
2016/03/04 职场文书