移动端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轻松实现清新 Loading 效果的简单实例
Jun 06 HTML / CSS
CSS3实现超慢速移动动画效果非常流畅无卡顿
Jun 15 HTML / CSS
使用CSS3的背景渐变Text Gradient 创建文字颜色渐变
Aug 19 HTML / CSS
CSS3中的Media Queries学习笔记
May 23 HTML / CSS
css3 clip实现圆环进度条的示例代码
Feb 07 HTML / CSS
CSS3 @media的基本用法总结
Sep 10 HTML / CSS
HTML5+lufylegend实现游戏中的卷轴
Feb 29 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
Mar 22 HTML / CSS
Html5新增标签有哪些
Apr 13 HTML / CSS
HTML5中的拖放实现详解
Aug 23 HTML / CSS
手摸手教你用canvas实现给图片添加平铺水印的实现
Aug 20 HTML / CSS
HTML速写之Emmet语法规则的实现
Apr 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二分查找二种实现示例
2014/03/12 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
2015/07/02 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
JS之小练习代码
2008/10/12 Javascript
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
jquery div 居中技巧应用介绍
2012/11/24 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
vue2.0结合Element实现select动态控制input禁用实例
2017/05/12 Javascript
Vue之Watcher源码解析(2)
2017/07/19 Javascript
vuex 项目结构目录及一些简单配置介绍
2018/04/08 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
python字符串替换示例
2014/04/24 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
Python基于matplotlib绘制栈式直方图的方法示例
2017/08/09 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
python 实现dict转json并保存文件
2019/12/05 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
汇科协同Java笔试题
2012/03/31 面试题
学生处主任岗位职责
2013/12/01 职场文书
小学生优秀评语大全
2014/04/22 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
公司保洁员管理制度
2015/08/04 职场文书
使用Python开发贪吃蛇游戏 SnakeGame
2022/04/30 Python