通过JAVAScript实现页面自适应


Posted in Javascript onJanuary 19, 2007

有时候,我们可能需要象新版的Yahoo邮箱一样,让一些数据显示块可以根据页面大小进行自适应。事实并不难,但是如果单纯用CSS控制的话,往往不能完全实现我们要的效果,这时候需要借助javascript,Javascript可以让我我们实现司空见怪的自适应页面,在iSunXoft的HR开源项目就应用到.
        实现原理:
         获取IE显示屏幕的宽高.确定哪些对象是绝对位置是固定的,那些是不固定的,哪些长宽是固定,然后象WIN FORM程序一样,根所软件界面的大小,进行设计相关对象的长宽,绝对位置等属性,但是在WEB上程序没有办法实时检测到窗口大小变化,只能用让实现自适应的方法通过SetTimeout 函数进行隔时递归调用.
         下面是摘自iSunXoft Hr开源项目SysForm.aspx实现的方法.
         注:$("")是有变化的元素.
   var h;
   var w;
   function resize()
   {   

    var he = document.body.offsetHeight;
    var wi = document.body.offsetWidth;
    if($("DataTable").style.display.toLowerCase()==""||$("DataTable").style.display.toLowerCase()=="inline")
    {
     if (h==he&&w==wi)
     {
      if($("leftMenu").style.display.toLowerCase() == "none" )
      {
       $("DivDataList").style.width = wi - 30;
      }
      else
      {
       $("DivDataList").style.width = wi - 223;
      }        
      setTimeout("resize()",1000);
      return;
     }
     h = he;
     w = wi;

     if (he>100)
     {
      $("DivDataList").style.height = he - 172;

     }
     if(wi>200)
     {
      $("DivDataList").style.width = wi - 223;
      if($("leftMenu").style.display.toLowerCase() == "none" )
      {
       $("DivDataList").style.width = wi - 30;
      }
     }
    }

    if($("DataEmpWidows").style.display.toLowerCase()=="inline"||$("DataEmpWidows").style.display.toLowerCase()=="")
    {
     if (h==he&&w==wi)
     {
      if($("leftMenu").style.display.toLowerCase() == "none" )
      {
       $("DataEmpWidows").style.width = wi - 30;
      }
      else
      {
       $("DataEmpWidows").style.width = wi - 223;
      }        
     }
     h = he;
     w = wi;
     if (he>150)
     {
      $("DataEmpWidows").style.height = he - 132;
     }
     if(wi>200)
     {
      $("DataEmpWidows").style.width = wi - 223;
      if($("leftMenu").style.display.toLowerCase() == "none" )
      {
       $("DataEmpWidows").style.width = wi - 30;
      }
     }

    }
    if(typeof($("EipWindows")) != "undefined")
    {
     //if($("EipWindows").style.display.toLowerCase()=="inline")
     //{
     // if (h==he&&w==wi)
     // {
     //  if($("leftMenu").style.display.toLowerCase() == "none" )
     //  {
     //   $("EipWindows").style.width = wi - 30;
     //  }
     //  else
     //  {
     //   $("EipWindows").style.width = wi - 223;
     //  }        
     // }
     // h = he;
     // w = wi;
     // if (he>150)
     // {
     //  $("EipWindows").style.height = he - 132;
     // }
     // if(wi>200)
     // {
     //  $("EipWindows").style.width = wi - 223;
     //  if($("leftMenu").style.display.toLowerCase() == "none" )
     //  {
     //   $("EipWindows").style.width = wi - 30;
     //  }
     // }    
     //}
    }
    setTimeout("resize()",1000);
   }
   resize();

   然后就在网页上调用resize();一旦窗口大小有变化,或是分辩率有变化,都能确保能够实现真正意义上的自适应.

Javascript 相关文章推荐
共享自己写一个框架DreamScript
Jan 20 Javascript
js操作iframe的一些方法介绍
Jun 25 Javascript
原生js轮播(仿慕课网)
Feb 15 Javascript
Angular2利用组件与指令实现图片轮播组件
Mar 27 Javascript
vuejs事件中心管理组件间的通信详解
Aug 09 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
Aug 30 Javascript
详解react-native-fs插件的使用以及遇到的坑
Sep 12 Javascript
详解开源的JavaScript插件化框架MinimaJS
Oct 26 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
Nov 17 Javascript
Vue项目结合Vue-layer实现弹框式编辑功能(实例代码)
Mar 11 Javascript
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
May 18 Javascript
JavaScript中MutationObServer监听DOM元素详情
Nov 27 Javascript
Javascript----文件操作
Jan 18 #Javascript
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
Jan 16 #Javascript
javaScript对象和属性的创建方法
Jan 15 #Javascript
jQuery 1.0.4 - New Wave Javascript(js源文件)
Jan 15 #Javascript
新浪的图片新闻效果
Jan 13 #Javascript
jQuery中文入门指南,翻译加实例,jQuery的起点教程
Jan 13 #Javascript
用htc组件制作windows选项卡
Jan 13 #Javascript
You might like
Views rows style模板重写代码
2011/05/16 PHP
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
PHP curl 抓取AJAX异步内容示例
2014/09/09 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
PHP实现文件上传功能实例代码
2017/05/18 PHP
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
JS防止用户多次提交的简单代码
2013/08/01 Javascript
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
Node.js操作Firebird数据库教程
2016/03/04 Javascript
微信小程序实现图片自适应(支持多图)
2017/01/25 Javascript
Vue自定义指令使用方法详解
2017/08/21 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
在小程序中推送模板消息的实现方法
2019/07/22 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
python使用百度翻译进行中翻英示例
2014/04/14 Python
python正则实现提取电话功能
2018/02/24 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
python 发送json数据操作实例分析
2019/10/15 Python
python实现IOU计算案例
2020/04/12 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
骆驼官方商城:CAMEL
2016/11/22 全球购物
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
如何将字串String转换成整数int
2015/02/21 面试题
杭州时比特电子有限公司SQL
2013/08/22 面试题
J2EE是技术还是平台还是框架
2016/08/14 面试题
青春励志演讲稿
2014/04/29 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
2015年征兵工作总结
2015/07/23 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
OpenCV绘制圆端矩形的示例代码
2021/08/30 Python
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle
Python采集壁纸并实现炫轮播
2022/04/30 Python