移动端web开发之坑--自适应布局下的返回页面位置定位问题
2017-01-04 22:20
633 查看
话说这应该是移动开发小伙伴们经常用的一段代码,1rem=100px;兼容性也很好;然而产生这次问题的重点是
【功能描述】:点击资讯列表进入详细资讯页后,返回时页面定位在原位置
【产生问题】:位置错误
【原因】:来来来,有问题怎么办,调试咯~
原因一看很明显呀= 。=
此时$(window).scrollTop确实已经被设置了正确的值,但是资讯列表里的样式尺寸偏小。当单位设置正常后,页面伸展,页面偏移。
【解决】
既然这样的话,我们只要先计算单位在设置window的scrollTop就好了啊:)
当然如果页面环境简单的话,这样直接写也没什么影响
doc.addEventListener('DOMContentLoaded', recalc, false);当dom加载完才会设置根元素的值;(向下页面定位问题描述)
;(function (win,doc){ // rem响应式兼容设备 var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', recalc = function () { var clientWidth = docEl.clientWidth; if (!clientWidth) return; if(clientWidth>=750){ //750设计稿的宽 docEl.style.fontSize = '100px'; }else{ docEl.style.fontSize = 100 * (clientWidth / 750) + 'px'; } }; if (!doc.addEventListener) return; win.addEventListener(resizeEvt, recalc, false); doc.addEventListener('DOMContentLoaded', recalc, false); })(window,document);
【功能描述】:点击资讯列表进入详细资讯页后,返回时页面定位在原位置
【产生问题】:位置错误
【原因】:来来来,有问题怎么办,调试咯~
原因一看很明显呀= 。=
此时$(window).scrollTop确实已经被设置了正确的值,但是资讯列表里的样式尺寸偏小。当单位设置正常后,页面伸展,页面偏移。
【解决】
既然这样的话,我们只要先计算单位在设置window的scrollTop就好了啊:)
;(function (win,doc){ // rem响应式兼容设备 var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', recalc = function () { var clientWidth = docEl.clientWidth; if (!clientWidth) return; if(clientWidth>=750){ //750设计稿的宽 docEl.style.fontSize = '100px'; }else{ docEl.style.fontSize = 100 * (clientWidth / 750) + 'px'; } }, //这里是设置scrollTop的函数 reScrollTop = function(){ $(window).scrollTop(sessionStorage.getItem('scrollTop')); sessionStorage.removeItem('scrollTop'); /*...*/ }, if (!doc.addEventListener) return; win.addEventListener(resizeEvt, recalc, false); doc.addEventListener('DOMContentLoaded', function(){ recalc(); reScrollTop(); }, false); })(window,document);
当然如果页面环境简单的话,这样直接写也没什么影响
var clientWidth = document.documentElement.clientWidth; if(clientWidth>=750){ //750设计稿的宽 docEl.style.fontSize = '100px'; }else{ docEl.style.fontSize = 100 * (clientWidth / 750) + 'px'; }
$(window).scrollTop(sessionStorage.getItem('scrollTop')); //这个写在其功能函数里就好
相关文章推荐
- Vue.js每天必学之内部响应式原理探究
- top、clientTop、scrollTop、offsetTop
- scrollTop 用法说明
- 20分钟成功编写bootstrap响应式页面 就这么简单
- 利用js编写响应式侧边栏
- avalonjs制作响应式瀑布流特效
- 使用bootstrap3开发响应式网站
- 基于jQuery和CSS3制作响应式水平时间轴附源码下载
- jQuery Deferred和Promise创建响应式应用程序详细介绍
- 浅谈jQuery页面的滚动位置scrollTop、scrollLeft
- jquery.gridrotator实现响应式图片展示画廊效果
- CSS3 media queries结合jQuery实现响应式导航
- 解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
- document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
- BootStrap创建响应式导航条实例代码
- 深入浅析JavaScript中的scrollTop
- js中scrollTop()方法和scroll()方法用法示例
- 使用BootStrap建立响应式网页――通栏轮播图(carousel)
- Bootstrap优化站点资源、响应式图片、传送带使用详解3
- Bootstrap响应式侧边栏改进版