移动端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 相关文章推荐
HTML5如何适配 iPhone IOS 底部黑条
Mar 09 HTML / CSS
CSS3 优势以及网页设计师如何使用CSS3技术
Jul 29 HTML / CSS
一款纯css3实现的漂亮的404页面的实例教程
Nov 27 HTML / CSS
css3实现多个元素依次显示效果
Dec 12 HTML / CSS
详解css position 5种不同的值的用法
Jul 30 HTML / CSS
详解通过变换矩阵实现canvas的缩放功能
Jan 14 HTML / CSS
html5指南-7.geolocation结合google maps开发一个小的应用
Jan 07 HTML / CSS
HTML5之SVG 2D入门12—SVG DOM及DOM操作介绍
Jan 30 HTML / CSS
Web时代变迁及html5与html4的区别
Jan 06 HTML / CSS
浅谈html5之sse服务器发送事件EventSource介绍
Aug 28 HTML / CSS
基于HTML5 Canvas的3D动态Chart图表的示例
Nov 02 HTML / CSS
使用Html5中的cavas画一面国旗
Sep 25 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
web方式ftp
2006/10/09 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
javascript 获取表单file全路径
2009/12/31 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
简单的js表单验证函数
2013/10/28 Javascript
快速解决jQuery与其他库冲突的方法介绍
2014/01/02 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
Node.js中HTTP模块与事件模块详解
2014/11/14 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
Angular中管道操作符(|)的使用方法
2017/12/15 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
JS实现的tab切换并显示相应内容模块功能示例
2019/08/03 Javascript
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
python: 自动安装缺失库文件的方法
2018/10/22 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
python3+PyQt5 实现Rich文本的行编辑方法
2019/06/17 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
html5使用canvas画三角形
2014/12/15 HTML / CSS
移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
2018/09/19 HTML / CSS
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
.net软件工程师应聘上机试题
2015/03/10 面试题
助残日活动总结
2014/08/27 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
结婚仪式主持词
2015/06/29 职场文书
幼儿园毕业典礼家长致辞
2015/07/29 职场文书
八年级数学教学反思
2016/02/17 职场文书
React自定义hook的方法
2022/06/25 Javascript
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS