通过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 相关文章推荐
Iframe thickbox2.0使用的方法
Mar 05 Javascript
JavaScript 面向对象的 私有成员和公开成员
May 13 Javascript
IE6下通过a标签点击切换图片的问题
Nov 14 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
Jan 09 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
Jul 09 Javascript
innerText 使用示例
Jan 23 Javascript
JS中如何比较两个Json对象是否相等实例代码
Jul 13 Javascript
js倒计时显示实例
Dec 11 Javascript
js登录滑动验证的实现(不滑动无法登陆)
Jan 03 Javascript
JavaScript函数的4种调用方法实例分析
Mar 05 Javascript
JS前端模块化原理与实现方法详解
Mar 17 Javascript
JavaScript代码实现简单计算器
Dec 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
七款最流行的PHP本地服务器分享
2013/02/19 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
Laravel 5 学习笔记
2015/03/06 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
从JavaScript 到 JQuery (1)学习小结
2009/02/12 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
JS判断数组里是否有重复元素的方法小结
2019/05/21 Javascript
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
Python实现打印螺旋矩阵功能的方法
2017/11/21 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
python字典与json转换的方法总结
2020/12/28 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
耐克美国官网:Nike.com
2016/08/01 全球购物
TOWER London官网:鞋子、靴子、运动鞋等
2019/07/14 全球购物
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
夜不归宿检讨书
2014/02/25 职场文书
食堂标语大全
2014/06/11 职场文书
主要领导对照检查材料
2014/08/26 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
小学课改工作总结
2015/08/13 职场文书