博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
移动端自适应——vw
阅读量:2240 次
发布时间:2019-05-09

本文共 2082 字,大约阅读时间需要 6 分钟。

之前写H5移动端都是使用window.innerWidth 获取视口的宽度,计算rem来写样式;

如:
计算rem

/******rem *******/(function(win){
var remCalc = {}; var docEl = win.document.documentElement, tid, hasRem = true; hasZoom = true; designWidth = 750; function refresh(){
var width = docEl.getBoundingClientRect().width; if(hasRem){ var rem = width/10; docEl.style.fontSize = rem + "px"; remCalc.rem = rem; var actualSize = parseFloat(window.getComputedStyle(document.documentElement)["font-size"]); if(actualSize!== rem && actualSize>0 && Math.abs(actualSize-rem)>1){ var remScaled = rem*rem/actualSize; docEl.style.fontSize = remScaled + "px"; } } if(hasZoom){ var style = document.getElementById('y_style'); if(!style){ style = document.createElement('style'); style.id = 'y_style'; } style.innerHTML = '._z{zoom:'+ width/designWidth + '}'; document.getElementsByTagName('head')[0].appendChild(style); } } function dbcRefresh(){
clearTimeout(tid); tid = setTimeout(refresh,100); } win.addEventListener("resize",function(){
dbcRefresh() },false); win.addEventListener("pageshow",function(e){
if(e.persisted){ dbcRefresh() } },false); refresh(); if(hasRem){ remCalc.refresh = refresh; remCalc.rem2px = function(d){
var val = parseFloat(d)/this.rem; if(typeof d==="string" && d.match(/px$/)){ val+="rem"; } return val }; win.remCalc = remCalc; }})(window);

css 样式,两倍图,所以除以 75

.loading-img{      width:24/75rem;      height:24/75rem;      margin-bottom: 40/75rem;    }

现在发现有更好的方法,省去计算rem 的步骤,目前为止发现兼容还不错

使用vw ,即当前视口的总宽度window.innerWidth,如 iphone6/7/8 的宽度为 375px,则100vw 就等于 375px,如果设计图是基于750做的图,一个切出来的图片为 200px*100px, 需要展示的大小 width: 200/7.5vw; height:100/7.5vw;

计算公式: css页面尺寸 = 图片实际尺寸/设计图宽度*100vw

转载地址:http://zkhbb.baihongyu.com/

你可能感兴趣的文章
Java实现简单的递归操作
查看>>
面试Java程序员需具备的11个技能
查看>>
HashMap 和 HashTable 到底哪不同 ?
查看>>
Java实现简单的递归操作
查看>>
Struts2工作原理和执行流程图
查看>>
在线预览Word,Excel~
查看>>
hibernate延迟加载(get和load的区别)
查看>>
关于文件拷贝效率问题
查看>>
MyBatis分页插件PageHelper的使用
查看>>
【MyBatis学习01】宏观上把握MyBatis框架
查看>>
【MyBatis学习02】走进MyBatis的世界
查看>>
【MyBatis学习03】原始dao开发方法及其弊端
查看>>
【MyBatis学习04】mapper代理方法开发dao
查看>>
【MyBatis学习05】SqlMapConfig.xml文件中的配置总结
查看>>
【MyBatis学习06】输入映射和输出映射
查看>>
【MyBatis学习07】动态sql
查看>>
【MyBatis学习08】高级映射之一对一查询
查看>>
【MyBatis学习09】高级映射之一对多查询
查看>>
【MyBatis学习10】高级映射之多对多查询
查看>>
【MyBatis学习11】MyBatis中的延迟加载
查看>>