通过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 相关文章推荐
提高网站信任度的技巧
Oct 17 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
Jul 29 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
Sep 25 Javascript
jQuery中animate用法实例分析
Mar 09 Javascript
JavaScript实现倒计时跳转页面功能【实用】
Dec 13 Javascript
javascript 显示全局变量与隐式全局变量的区别
Feb 09 Javascript
vue2中filter()的实现代码
Jul 09 Javascript
Axios学习笔记之使用方法教程
Jul 21 Javascript
vue里面父组件修改子组件样式的方法
Feb 03 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
Dec 10 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
Jul 17 Javascript
浅谈JavaScript节流和防抖函数
Aug 25 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后台多用户权限组思路与实现程序代码分享
2012/02/13 PHP
PHP Session 变量的使用方法详解与实例代码
2013/09/11 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
JsRender for object语法简介
2014/10/31 Javascript
JQuery为元素添加样式的实现方法
2016/07/20 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
原生js实现旋转木马轮播图效果
2017/02/27 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
基于原生js运动方式关键点的总结(推荐)
2017/10/01 Javascript
Node.js使用supervisor进行开发中调试的方法
2019/03/26 Javascript
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
JS实现多功能计算器
2020/10/28 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
Django的session中对于用户验证的支持
2015/07/23 Python
Python 结巴分词实现关键词抽取分析
2017/10/21 Python
简单实现python画圆功能
2018/01/25 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
Django model select的多种用法详解
2019/07/16 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
个人简历的自荐信
2013/10/23 职场文书
公司离职证明范本
2014/01/13 职场文书
毕业证丢失证明
2014/01/15 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
故宫英文导游词
2015/01/31 职场文书
党校学习个人总结
2015/02/15 职场文书
大学生求职自荐信范文
2015/03/04 职场文书
Vue router配置与使用分析讲解
2022/12/24 Vue.js