通过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 表格操作(交替显示、拖动表格行、选择行等)
Jul 29 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
Feb 16 Javascript
javascript判断非数字的简单例子
Jul 18 Javascript
firefox浏览器不支持innerText的解决方法
Aug 07 Javascript
深入领悟JavaScript中的面向对象
Nov 18 Javascript
node.js中的console用法总结
Dec 15 Javascript
JS往数组中添加项性能分析
Feb 25 Javascript
JavaScript实现控制打开文件另存为对话框的方法
Apr 17 Javascript
JavaScript中的parse()方法使用简介
Jun 12 Javascript
AngularJS表单和输入验证实例
Nov 02 Javascript
Angular中使用MathJax遇到的一些问题
Dec 15 Javascript
浅谈Vue的computed计算属性
Mar 21 Vue.js
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获取文件类型和文件信息的方法
2015/07/10 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
学习YUI.Ext 第三天
2007/03/10 Javascript
一个简单的js树形菜单
2011/12/09 Javascript
关于js new Date() 出现NaN 的分析
2012/10/23 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
轻松掌握JavaScript享元模式
2016/08/27 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
javascript实现根据函数名称字符串动态执行函数的方法示例
2016/12/28 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
python实现异步回调机制代码分享
2014/01/10 Python
python自动化测试之连接几组测试包实例
2014/09/28 Python
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
Django中间件实现拦截器的方法
2018/06/01 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
Python爬取YY评级分数并保存数据实现过程解析
2020/06/01 Python
python实现批处理文件
2020/07/28 Python
Java工程师面试集锦之Spring框架
2013/06/16 面试题
统计专业自荐书
2014/07/06 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
活动总结模板大全
2015/05/11 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL