通过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 相关文章推荐
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
Nov 05 Javascript
jQuery实现异步获取json数据的2种方式
Aug 29 Javascript
Javascript中的高阶函数介绍
Mar 15 Javascript
JavaScript模板引擎用法实例
Jul 10 Javascript
jquery代码规范让代码越来越好看
Feb 03 Javascript
jQuery用noConflict代替$的实现方法
Apr 12 jQuery
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
Oct 24 Javascript
详解使用React进行组件库开发
Feb 06 Javascript
vee-validate vue 2.0自定义表单验证的实例
Aug 28 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
Sep 27 Javascript
微信小程序使用npm包的方法步骤
Aug 13 Javascript
jQuery实现图片切换效果
Oct 19 jQuery
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
消息持续发送的完整例子
2006/10/09 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
php生成不重复随机数、数组的4种方法分享
2015/03/30 PHP
javascript 学习之旅 (1)
2009/02/05 Javascript
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
JS的encodeURI和java的URLDecoder.decode使用介绍
2014/05/08 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
详细介绍Python的鸭子类型
2016/09/12 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
2020/02/13 Python
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
机械制造专业个人的自我评价
2013/12/28 职场文书
个人自我评价和职业目标
2014/01/24 职场文书
医学生就业推荐表自我鉴定
2014/03/26 职场文书
财产公证书
2014/04/10 职场文书
《狼和小羊》教学反思
2014/04/20 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
慰问信格式规范
2015/03/23 职场文书
详解Python常用的魔法方法
2021/06/03 Python
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python
Spring Boot实现文件上传下载
2022/08/14 Java/Android