通过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 相关文章推荐
关于__defineGetter__ 和__defineSetter__的说明
May 12 Javascript
在JS中最常看到切最容易迷惑的语法(转)
Oct 29 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
Apr 22 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
Aug 21 Javascript
JavaScript数组随机排列实现随机洗牌功能
Mar 19 Javascript
input点击后placeholder中的提示消息消失
Jan 15 Javascript
详解springmvc 接收json对象的两种方式
Dec 06 Javascript
如何使用bootstrap框架 bootstrap入门必看!
Apr 13 Javascript
原生js获取left值和top值的三种方法
Aug 02 Javascript
详解Vue中watch的高级用法
May 02 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
Sep 21 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
Aug 12 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
php zlib压缩和解压缩swf文件的代码
2008/12/30 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
php动态生成缩略图并输出显示的方法
2015/04/20 PHP
jquery 回车事件实现代码
2011/08/23 Javascript
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
2012/02/27 Javascript
如何通过javascript操作web控件的自定义属性
2013/11/25 Javascript
javascript中打印当前的时间实现思路及代码
2013/12/18 Javascript
当前流行的JavaScript代码风格指南
2014/09/10 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
2017/01/24 Javascript
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
python命令行参数用法实例分析
2019/06/25 Python
pybind11在Windows下的使用教程
2019/07/04 Python
python 消费 kafka 数据教程
2019/12/21 Python
Python post请求实现代码实例
2020/02/28 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
微信端html5页面调用分享接口示例
2018/03/14 HTML / CSS
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
提高EJB性能都有哪些技巧
2012/03/25 面试题
销售总监工作职责
2013/11/21 职场文书
校园自助餐厅的创业计划书
2013/12/26 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
小学生反邪教心得体会
2016/01/15 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
浅谈python中的多态
2021/06/15 Python
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python