通过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 相关文章推荐
JQuery 将元素显示在屏幕的中央的代码
Feb 27 Javascript
Node.js中调用mysql存储过程示例
Dec 20 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
Sep 05 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
Mar 01 Javascript
原生JS和jQuery版实现文件上传功能
Apr 18 Javascript
浅谈jquery点击label触发2次的问题
Jun 12 Javascript
JS 对java返回的json格式的数据处理方法
Dec 05 Javascript
JS实现DIV高度自适应窗口示例
Feb 16 Javascript
vue实现百度搜索下拉提示功能实例
Jun 14 Javascript
BootStrap selectpicker后台动态绑定数据的方法
Jul 28 Javascript
js仿360开机效果
Dec 26 Javascript
vue打包npm run build时候界面报错的解决
Aug 13 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
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
2019/06/19 Javascript
开源一个微信小程序仪表盘组件过程解析
2019/07/30 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
Python使用QQ邮箱发送Email的方法实例
2017/02/09 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
python3下实现搜狗AI API的代码示例
2018/04/10 Python
python判断无向图环是否存在的示例
2019/11/22 Python
python3 webp转gif格式的实现示例
2019/12/10 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
python递归函数用法详解
2020/10/26 Python
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
最热门的自我评价
2013/12/30 职场文书
汽车技术服务英文求职信范文
2014/01/02 职场文书
信访工作者先进事迹
2014/01/17 职场文书
超市客服工作职责
2014/06/11 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
哈姆雷特读书笔记
2015/06/29 职场文书
Python list列表删除元素的4种方法
2021/11/01 Python
JavaScript展开运算符和剩余运算符的区别详解
2022/02/18 Javascript
Python中的协程(Coroutine)操作模块(greenlet、gevent)
2022/05/30 Python
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python