移动端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 相关文章推荐
CSS中垂直居中的简单实现方法
Jul 06 HTML / CSS
全方位了解CSS3的Regions扩展
Aug 07 HTML / CSS
CSS3弹性盒模型flex box快速入门心得(必看篇)
May 24 HTML / CSS
详解CSS3中字体平滑处理和抗锯齿渲染
Mar 29 HTML / CSS
详解CSS3原生支持div铺满浏览器的方法
Aug 30 HTML / CSS
HTML5 声明兼容IE的写法
May 16 HTML / CSS
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
Jan 30 HTML / CSS
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
Jan 31 HTML / CSS
基于IE10/HTML5 开发
Apr 22 HTML / CSS
html5 figure和figcaption的使用方法
Sep 10 HTML / CSS
解析html5 canvas实现背景鼠标连线动态效果代码
Jun 17 HTML / CSS
CSS实现切角+边框+投影+内容背景色渐变效果
Nov 01 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中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
使用php-timeit估计php函数的执行时间
2015/09/06 PHP
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
vue router demo详解
2017/10/13 Javascript
浅谈webpack4.x 入门(一篇足矣)
2018/09/05 Javascript
vue favicon设置以及动态修改favicon的方法
2018/12/21 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
使用vue完成微信公众号网页小记(推荐)
2019/04/28 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
[04:41]2014DOTA2国际邀请赛 Liquid顺利突围晋级正赛
2014/07/09 DOTA
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
用TensorFlow实现lasso回归和岭回归算法的示例
2018/05/02 Python
Sanic框架应用部署方法详解
2018/07/18 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
python多进程并行代码实例
2019/09/30 Python
python 实现波浪滤镜特效
2020/12/02 Python
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
Yves Rocher伊夫·黎雪美国官网:法国始创植物美肌1959
2019/01/09 全球购物
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
2015年幼儿园德育工作总结
2015/05/25 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers
python创建字典及相关管理操作
2022/04/13 Python