利用$(window).resize()实现窗口大小自适应宽度问题

© 版权声明:本文为博主原创文章,转载请注明出处

问题描述:利用iframe做页面引入,用$(window).resize()作自适应;结果窗口变小时,利用$(window).width()获取到的宽度总是小于浏览器宽度,在左边留下17px宽度的白条。

  代码如下:

1 <iframe id="main-wrapper" name="main-wrapper" src="zkt.htm" frameborder="0" style="float: right;"></iframe>
 1 // 自适应主页面大小
 2 $(window).resize(function () {
 3     
 4   initSize();
 5 
 6 }
 7 
 8 
 9 // 初始化主页面大小
10 function initSize() {
11 
12   var screenHeight = $(window).height();// 窗口高度
13   var navHeight = $("#topNav").height();// 顶部导航栏高度
14   var contentHeight = screenHeight - navHeight;// 内容区域高度
15   var screenWidth = $(window).width();// 窗口宽度
16 
17   $("#main-wrapper").width(screenWidth);// 设置内容区域宽度
18   $("#main-wrapper").css("margin-top", navHeight);// 设置内容区域margin-top
19   $("#main-wrapper").height(contentHeight);// 设置内容区域高度
20 
21 }

问题分析:在页面大小发生变化时,如果高度减小时,此时会出现滚动条,$(window).width()获取的宽度为减去滚动条之后的宽度,又因为iframe默认靠右,因此左边会出现空白。

解决方案判断当页面高度减小时,将宽度设置为$(window).width()加上滚动条(默认17px)的宽度即可。

 

 1 var initHeight = $(window).height() - $("#topNav").height();// 初始主页面高度
 2 
 3 // 自适应主页面大小
 4 $(window).resize(function () {
 5     
 6   initSize();
 7 
 8 }
 9 
10 
11 // 初始化主页面大小
12 function initSize() {
13 
14   var screenHeight = $(window).height();// 窗口高度
15   var navHeight = $("#topNav").height();// 顶部导航栏高度
16   var contentHeight = screenHeight - navHeight;// 内容区域高度
17   var screenWidth = $(window).width();// 窗口宽度
18 
19   if (initHeight > contentHeight) {// 初始高度大于现有高度,高度变小过程中会出现滚动条
20     screenWidth = screenWidth + 17;// 窗口宽度变为现有宽度+滚动条宽度
21   }
22   initHeight = contentHeight;// 将初始高度重置为现有高度
23 
24   $("#main-wrapper").width(screenWidth);// 设置内容区域宽度
25   $("#main-wrapper").css("margin-top", navHeight);// 设置内容区域margin-top
26   $("#main-wrapper").height(contentHeight);// 设置内容区域高度
27 
28 }

 

posted @ 2017-08-17 15:08  禁忌夜色153  阅读(22568)  评论(0编辑  收藏  举报