通过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复制表单元素附源码分享效果演示
Sep 30 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
Feb 05 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
Jan 05 Javascript
基于JavaScript实现购物车功能
Feb 07 Javascript
angularjs定时任务的设置与清除示例
Jun 02 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
Jul 05 Javascript
angular或者js怎么确定选中ul中的哪几个li
Aug 16 Javascript
浅谈webpack下的AOP式无侵入注入
Nov 12 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
Oct 25 Javascript
layui树形菜单动态遍历的例子
Sep 23 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
Jul 20 Javascript
vue-cli —— 如何局部修改Element样式
Oct 22 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中redis的用法深入解析
2014/02/20 PHP
php setcookie函数的参数说明及其用法
2014/04/20 PHP
php代码审计比较有意思的例子
2014/05/07 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
使用js实现数据格式化
2014/12/03 Javascript
使用Node.js配合Nginx实现高负载网络
2015/06/28 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
js模块加载方式浅析
2017/08/12 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
2018/09/28 Javascript
Vue动态创建注册component的实例代码
2019/06/14 Javascript
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
vue添加自定义右键菜单的完整实例
2020/12/08 Vue.js
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
小小聊天室Python代码实现
2016/08/17 Python
python机器学习之神经网络(一)
2017/12/20 Python
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
Python中字典的浅拷贝与深拷贝用法实例分析
2018/01/02 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
Python 实现微信自动回复的方法
2020/09/11 Python
python模块内置属性概念及实例
2021/02/18 Python
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
企业元宵节主持词
2014/03/25 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
培训师岗位职责
2015/02/14 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
2016年少先队活动总结
2016/04/06 职场文书
深入理解go slice结构
2021/09/15 Golang
JavaScript组合继承详解
2021/11/07 Javascript