谈谈利用JavaScript结合相对单位rem实现自适应布局的简单而实用的方法,亲用有效。
来源:互联网 发布:卡尔曼滤波算法应用 编辑:程序博客网 时间:2024/06/10 01:34
rem是css3新增的一个相对单位,相对的只是HTML根元素,可以只修改根元素字体大小就可以成比例地调整所有字体大小。我们可以巧妙地利用这一特性,实现页面自适应布局(尤其适合移动端适配)。
需求:当我们拿到一张设计稿,比如UI设计师设定的是iPhone6下的750px*1334px,那么我们应该如何实现适配iPhone5、iPhone4以及其他不同尺寸的屏幕?
有的伙伴也许想到了媒体查询,定制多套css样式。首先,我不否定这样做能实现,但这样的工作量还是比较大的,而且代码量也会很多,不利于性能优化。
以下介绍一种用JavaScript结合相对单位rem实现的方式。
①:在<head>里加上以下代码(设置viewpoint缩放为1.0)
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
②:编写脚本语言,动态设置根元素字体大小,其中designW为设计稿的宽度,其他值固定。
<script> (function () { var designW = 750; //设计稿宽 var font_rate = 100; //适配 document.getElementsByTagName("html")[0].style.fontSize = document.body.offsetWidth / designW * font_rate + "px"; document.getElementsByTagName("body")[0].style.fontSize = document.body.offsetWidth / designW * font_rate + "px"; //监测窗口大小变化 window.addEventListener("onorientationchange" in window ? "orientationchange" : "resize", function () { document.getElementsByTagName("html")[0].style.fontSize = document.body.offsetWidth / designW * font_rate + "px"; document.getElementsByTagName("body")[0].style.fontSize = document.body.offsetWidth / designW * font_rate + "px"; }, false); })();</script>③:以上设置完成后,就可以根据设计稿的像素完成网页的编写,假设设计稿中的一张img的大小为200px*300px,那么样式设置成如下:img{ width: 2rem; <!--(200/100)rem--> height: 3rem; <!--(300/100)rem-->}以上三步即可实现页面的只适应布局。(注:对图片清晰度要求较高)iPhone6展示效果如下:iPhone5展示效果如下:ipad效果如下:1920px*1080px等大屏幕展示效果如下:(显示也没问题,但建议用于自适应移动端,屏幕差别不算太大,展示更完美)。各位有其他的好方法欢迎交流。
阅读全文
2 0
- 谈谈利用JavaScript结合相对单位rem实现自适应布局的简单而实用的方法,亲用有效。
- 使用rem单位实现布局自适应
- rem是如何实现自适应布局的?
- rem是如何实现自适应布局的?
- html5如何利用rem实现自适应布局
- H5+JS+相对单位rem实现第三方支付页(输入金额+模拟数字键盘+自适应布局+大写金额)
- 用rem为单位写自适应的页面
- 移动端rem单位自适应的用法
- 简单的移动端rem布局方法
- rem布局实现自适应
- 移动端的自适应rem布局
- 移动端的自适应rem布局
- 利用线性布局和相对布局实现一个简单的页面
- 利用rem实现h5自适应
- Android 简单 相对布局的实现;
- 单位REM的理解
- CSS3 相对单位rem
- 前端自适应----单位rem
- 深度学习笔记5:池化层的实现
- github上传文件(利用git)
- redis的使用
- GitHub -- Git操作
- Win10 安装VC++6.0
- 谈谈利用JavaScript结合相对单位rem实现自适应布局的简单而实用的方法,亲用有效。
- RxJava操作符
- 用construct 2制作跳跃游戏
- 【ShaderForge】自发光漫反射小练习
- 深入Java集合学习系列:ArrayList的实现原理
- lca的三种算法【倍增 / RMQ / Tajan】
- Linux网络编程( epoll函数的使用) 多路IO 高并发服务器
- ORB-SLAM(二)性能
- 20171101