浅谈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 相关文章推荐
Valerio 发布了 Mootools
Sep 23 Javascript
Prototype使用指南之form.js
Jan 10 Javascript
JavaScript 对话框和状态栏使用说明
Oct 25 Javascript
select标记美化--JS式插件、后期加载
Apr 01 Javascript
JS实现鼠标单击与双击事件共存
Mar 08 Javascript
Bootstrap的图片轮播示例代码
Aug 31 Javascript
javascript实现省市区三级联动下拉框菜单
Nov 17 Javascript
js实现的奥运倒计时时钟效果代码
Dec 09 Javascript
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
Jan 28 Javascript
微信小程序 仿猫眼实现实例代码
Mar 14 Javascript
基于js实现判断浏览器类型代码实例
Jul 17 Javascript
Nest.js环境变量配置与序列化详解
Feb 21 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
PHP 存储文本换行实现方法
2010/01/05 PHP
关于php连接mssql:pdo odbc sql server
2011/07/20 PHP
php 错误处理经验分享
2011/10/11 PHP
PHP中鲜为人知的10个函数
2014/02/28 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
2015/02/15 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
jQuery定义插件的方法
2015/12/18 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
2016/08/11 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
简单实现IONIC购物车功能
2017/01/10 Javascript
vue组件之Alert的实现代码
2017/10/17 Javascript
浅谈angular2子组件的事件传递(任意组件事件传递)
2018/09/30 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
JSON 入门教程基础篇 json入门学习笔记
2020/09/22 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
python使用paramiko实现远程拷贝文件的方法
2016/04/18 Python
pymongo中group by的操作方法教程
2019/03/22 Python
python内存监控工具memory_profiler和guppy的用法详解
2019/07/29 Python
python 制作磁力搜索工具
2021/03/04 Python
一套C#面试题
2013/10/09 面试题
网吧最新创业计划书范文
2014/03/27 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
董事长助理岗位职责
2015/02/11 职场文书
导游词之昭君岛
2020/01/17 职场文书
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js