浅谈DOCTYPE对$(window).height()取值的影响


Posted in Javascript onJuly 21, 2016

前言:公司项目需要用到一个弹框垂直居中,网上类似的垂直居中弹出层大同小异,因为项目是基于Jquery 下的,所以用$(window).height()-layer.height())/2 +$(document).scrollTop()取得垂直的位移。测了各种浏览器没问题,后台人员移值到项目中后,出问题了,当页面超出一屏时,在 chrome和FF下,弹出框不是在当前屏的垂直居中,而是相对于整个网页的居中。

查阅各方资料,所有结论都指出:

1.窗口高度,$(window).height()

2.文档高度,$(document).height()

3.被卷起的高度,$(window).scrollTop()

找到原因:而后,发现后台人员的页面没有设DOCTYPE,所以在chrome中,$(window).height()=$(document).height(),$(document).height()表示在网页实际内容高度没有满一屏时表示整个窗口的高度(窗口放大缩小时这个值会变化),页当超过一屏时表示为整个网页内容的实际高度,这点没有异议,跟设不设DOCTYPE没有影响。但是:$(window).height()在DOCTYPE为transitional.dtd时无论网页内容实际高度超不超出满屏情况下,都等于是整个窗口的高度(窗口放大缩小时这个值会变化),如果没有设DOCTYPE则$(window).height()=$(document).height(),在即当内容超一屏时$(window).height()为网页实际高度,并不是所说的等于窗口高度。

解决办法:

s要取得窗口的高度,只能根据DOCTYPE来做相应的更改,在没有设DOCTYPE时做如下处理

if($(document).height()>=$(window).height()){
  _windowHeight=document.body.clientHeight;
  }else{//alert($(window).height());
  _windowHeight=$(document).height();
  };

在有设DOCTYPE为transitional.dtd时,windowHeight=$(window).height()

以上这篇浅谈DOCTYPE对$(window).height()取值的影响就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js星星评分效果
Jul 24 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
Aug 10 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
Aug 05 Javascript
全面介绍javascript实用技巧及单竖杠
Jul 18 Javascript
BootStrap无限级分类(无限极分类封装版)
Aug 26 Javascript
js完整倒计时代码分享
Sep 18 Javascript
微信小程序选择图片和放大预览图片功能
Nov 02 Javascript
解析Vue 2.5的Diff算法
Nov 28 Javascript
Vue实现todolist删除功能
Jun 26 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
Sep 04 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
Dec 29 jQuery
js单线程的本质 Event Loop解析
Oct 29 Javascript
jQuery新窗口打开外链接
Jul 21 #Javascript
JS for循环中i++ 和 ++i的区别介绍
Jul 20 #Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
Jul 20 #Javascript
Node.js如何自动审核团队的代码
Jul 20 #Javascript
js只执行1次的函数示例
Jul 20 #Javascript
JQuery为元素添加样式的实现方法
Jul 20 #Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
Jul 20 #Javascript
You might like
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
php计算税后工资的方法
2015/07/28 PHP
PHP函数超时处理方法
2016/02/14 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
拖动table标题实现改变td的大小(css+js代码)
2013/04/16 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
AngularJS  自定义指令详解及实例代码
2016/09/14 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
解析Vue 2.5的Diff算法
2017/11/28 Javascript
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访-EG篇
2018/04/03 DOTA
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
python操作MySQL数据库具体方法
2013/10/28 Python
详解Python的Django框架中的模版相关知识
2015/07/15 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
python多线程并发实例及其优化
2019/06/27 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
如何用python批量调整视频声音
2020/12/22 Python
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
迟到早退检讨书
2014/02/10 职场文书
开工典礼策划方案
2014/05/23 职场文书
实施意见格式范本
2015/06/05 职场文书
Mysql文件存储图文详解
2021/06/01 MySQL
python 远程执行命令的详细代码
2022/02/15 Python
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android
浅谈Redis缓冲区机制
2022/06/05 Redis