移动端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 相关文章推荐
让IE6支持css3,让 IE7、IE8 都支持CSS3
Oct 09 HTML / CSS
css3圆角边框和边框阴影示例
May 05 HTML / CSS
利用css3如何设置没有上下边的列表间隔线
Jul 03 HTML / CSS
CSS3 实现图形下落动画效果
Nov 13 HTML / CSS
HTML5对手机页面长按会粘贴复制禁用的解决方法
Jul 19 HTML / CSS
HTML5 Canvas 起步(1) - 基本概念
May 12 HTML / CSS
HTML5 Canvas概述
Aug 26 HTML / CSS
HTML5 Canvas的常用线条属性值总结
Mar 17 HTML / CSS
手机端用rem+scss做适配的详解
Nov 15 HTML / CSS
css3带你实现3D转换效果
Feb 24 HTML / CSS
flex布局中使用flex-wrap实现换行的项目实践
Jun 21 HTML / CSS
微信小程序纯CSS实现无限弹幕滚动效果
Sep 23 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求最大子序列和的算法实现
2011/06/24 PHP
简单实用的PHP防注入类实例
2014/12/05 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
Bootstrap模态框使用详解
2017/02/15 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
p5.js 毕达哥拉斯树的实现代码
2018/03/23 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
Python实现批量下载文件
2015/05/17 Python
Python中Class类用法实例分析
2015/11/12 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
解决Python requests 报错方法集锦
2017/03/19 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
孕妇装中的著名品牌:Isabella Oliver(伊莎贝拉·奥利弗)
2016/10/31 全球购物
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
《藏戏》教学反思
2014/02/11 职场文书