基于rem布局
来源:互联网 发布:convertio for mac 编辑:程序博客网 时间:2024/05/17 03:29
为了让移动端网页在不同尺寸的手机下都可以优雅地展示,可以用媒体查询、百分比布局、弹性布局flex、rem布局等。而rem布局在移动端开发中无疑是一种不错的自适应解决方案,核心就是html根节点的font-size属性和resize事件,以及rem单位。
1、核心思路:当窗口或框架调整大小时会触发resize事件(页面首次加载则模拟触发),此时根据变化后文档的宽度重新计算文档根节点的基础font-size值,那么基于rem单位的DOM元素就会重新计算像素值并重新渲染。
2、关键代码:
/** * 移动页面自适应布局-基于rem布局 * 当屏幕宽度为320px时,1rem代表20px */(function(doc, win) { var docEl = doc.documentElement; var resizeEvt = 'orientationchange' in window ? 'orientationchange': 'resize'; var recalc = function() { var clientWidth = docEl.clientWidth; if (!clientWidth) return; docEl.style.fontSize = 20 * (clientWidth / 320) + 'px'; }; // 不同浏览器resize事件处理机制不同 // 使用定时器延迟处理resize回调函数以降低重复响应 var recalcTimer = null; var delaycalc = function() { win.clearTimeout(recalcTimer); recalcTimer = win.setTimeout(recalc, 100); }; // 移动端不需要考虑事件注册函数的兼容性 if (!doc.addEventListener) return; win.addEventListener(resizeEvt, delaycalc, false); // DOMContentLoaded事件只在DOM文档树加载完毕触发,此处不用延迟处理 doc.addEventListener('DOMContentLoaded', recalc, false);})(document, window);
3、注意要点:
- 触发resize事件的操作:resizeTo 和 resizeBy、横纵屏操作、缩小放大页面窗口、拖动改变页面窗口等引起页面窗口大小改变的操作。
- 在 IE 和 Opera 等浏览器中,只要窗口的边框被改变一个像素,resize事件就会被触发;而在MozillaFirefox等其他浏览器中,只在停止对窗口的大小改变时才触发resize事件【优雅的解决方案——通过setTimeout定时器延迟100ms再执行resize事件。】
阅读全文
1 0
- 基于rem布局
- 基于rem的响应式布局
- 基于rem的移动端布局注意事项
- 【移动端】页面自适应布局—基于rem布局
- rem布局
- rem布局
- rem布局
- 关于rem布局
- rem 响应式布局
- 简单说说rem布局
- 移动端rem布局
- rem布局实现自适应
- 移动布局之rem
- 移动端rem布局
- rem自适应布局
- 手机端适配-rem布局
- 移动布局rem
- 移动端rem布局
- Android的获取摄像头的data
- Hinton Neural Networks课程笔记1b:神经网络模拟的大脑机理
- BZOJ 3680 爬山算法 解题报告
- Restructuring Company CodeForces
- C语言中static关键字的作用
- 基于rem布局
- Windows Git与github通过ssh进行远程协作
- android 简易音乐播放器的实现
- IDA Pro脱壳实战(一)
- android实现三种视频播放
- C++ replace函数
- G
- HTML学习笔记一
- Genymotion虚拟机下载技巧