ps 可能篇幅比较长,请大家耐心看看

今天有人在群里问我 动态获取高度怎么获取  我就说jq中的outerHeight、 height 、innerHeight   原生的height clientHeight、scrollHeight、offsetHeight  按道理百度一下 就ok 了  但是他问了一句这些有什么区别? 哎呦 我去 我还真的需要整理一下   好吧 咱们开始整理一下

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>动态获取div的高度问题</title>
<style type="text/css">
*{margin:0; padding: 0; border: none; }
body{padding: 100px;}
#div1{width: 200px; height: 200px; margin:10px; border: 1px solid red; }
</style>
</head>
<body>
<div id="div1"></div>
</body>
</html>

咱们先弄一个div放在这里   然后测试一下这些的区别 然后总结一下

这个是火狐中的盒模型解析出来的结果 请看好

下边咱们开始 直接写js  开始测试

先说一下这个height (因为他奇葩)有两点

1、height:

(1)其实Height高度跟其他的高度有点不一样,在javascript中它是属于对象的style对象属性中的一个成员,它的值是一个字符类型的,而另外 三个高度的值是int类型的,它们是对象的属性.因此这样document.body.height就会提示undenifine,而必须写成 document.body.style.height   (好坑)

(2)只能在div在行内样式设置了height才能获取到(注意是行内 )----------->更坑

那么关于height的代码咱们发一下 (实际项目中应该用不到这么坑的东西了吧)

所以这个height 你在行内写了多少就是多少了(当然没有padding  border之类的计算了)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>动态获取div的高度问题</title>
<style type="text/css">
*{margin:0; padding: 0; border: none; }
body{padding: 100px;}
#div1{width: 200px; height: 200px; margin:10px; border: 1px solid red; }
</style>
</head>
<body>
<div id="div1" style="height:200px"></div>
<script type="text/javascript">
window.onload=function () {
var oDiv =document.getElementById('div1');
alert( oDiv.style.height)//200
}
</script>
</body>
</html>

2、clientHeight: 是可见区域的宽度  也就是算上padding    不算border 的

window.onload=function  () {
var oDiv =document.getElementById('div1');
alert( oDiv.clientHeight)
}//结果也是200

3、scrollHeight:它其实就是滚动条可滚动的部分还要加上boder的高度还要加上横向滚动条不可用的高度,与clientHeight比起来,多个border的高度跟横向滚动条不可用的高度.

我测试以后 发现火狐和谷歌都是不一样的数值  哎。。看来这个是不好用的  那就不上代码了  忽略它吧  倒是有很多项目中有获取到屏幕的顶部的距离这个效果之类的 等下次再说(感觉已写 就写出来的多了)

4、offsetHeight:均表示是自身的高度,如果有设置boder和padding的话还应该加上boder的值(例子中没有写padding 你可以自己加上是计算在内的)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>动态获取div的高度问题</title>
<style type="text/css">
*{margin:0; padding: 0; border: none; }
body{padding: 100px;}
#div1{width: 200px; height: 200px; margin:10px; border: 1px solid red; }
</style>
</head>
<body>
<div id="div1" ></div>
<script type="text/javascript">
window.onload=function () {
var oDiv =document.getElementById('div1');
alert( oDiv.offsetHeight)//202 加上border
}
</script>
</body>
</html>

好了原生的写完了 看一下就知道怎么回事了

下边开始说jq方法 看看封装以后是怎么样的

1、outerHeight:api 解释的很详细啊

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>动态获取div的高度问题</title>
<style type="text/css">
*{margin:0; padding: 0; border: none; }
body{padding: 100px;}
#div1{width: 200px; height: 200px; margin:10px; border: 1px solid red; }
</style>
</head>
<body>
<div id="div1" ></div>
<script type="text/javascript"src="http://libs.baidu.com/jquery/2.0.3/jquery.min.js"></script>//百度的cdn
<script type="text/javascript">
$(function () {
alert($("#div1").outerHeight());//202
})
</script>
</body>
</html>

如果不设置为true的话 那么计算外部高度就是本身的200px+边框的2px ------->=202px;

如果你设置为true的话那么结果就是222 就加上了内边距20px

2、height:详细的api啊

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>动态获取div的高度问题</title>
<style type="text/css">
*{margin:0; padding: 0; border: none; }
body{padding: 100px;}
#div1{width: 200px; height: 200px; margin:10px; border: 1px solid red; }
</style>
</head>
<body>
<div id="div1" ></div>
<script type="text/javascript"src="http://libs.baidu.com/jquery/2.0.3/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
alert($("#div1").height());//200px
})
</script>
</body>
</html>

看着和js中的height是一样的啊 (除了原生的那两点坑爹)结果是一样的  而且jq还能直接设置数值 也就说获取之后可以直接设置他的height

3、innerHeight:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>动态获取div的高度问题</title>
<style type="text/css">
*{margin:0; padding: 0; border: none; }
body{padding: 100px;}
#div1{width: 200px; height: 200px; margin:10px; border: 1px solid red; padding: 10px; }
</style>
</head>
<body>
<div id="div1" ></div>
<script type="text/javascript"src="http://libs.baidu.com/jquery/2.0.3/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
alert($("#div1").innerHeight());//220px
})
</script>
</body>
</html>

也就是说 会把当前的height数值加上内边框

总结: 写完了。。。。。。。。

从动态获取div高度的问题展开来看的更多相关文章

  1. JS获取div高度的方法

    有时在写页面时,需要获取一个div的高度.怎么才能获取呢?哈哈,先上结论.有两种方法. offsetHeight .clientHeight getComputedStyle offsetHeight ...

  2. 动态获取div的高度 随着窗口变化而变化

    // 1.jq法 <script> var winHeight = $(window).height(); $("#show").css("height&qu ...

  3. js使用offsetHeight获取div高度为0的问题

    今晚试了好久没弄出来,后来获取子一层的div就能获取到高度了 我的情况是这样的:我在最外面写一个<div id="mainBody">,  里面写bootstrap的d ...

  4. javascript获取div高度

    DOM的: 获得了div的高度值 = document.getElementById("目标id").offsetHeight;

  5. vue 动态获取div宽高有时候为0的情况

    项目背景: 需要使用echarts进行图表展示.由于div宽高是不固定的,因此需要先获取父级的宽高再把值赋予到图表的div中. 需要使用 this.$nextTick(() => {    }) ...

  6. jquery动态修改div高度

    <!DOCTYPE html> <html> <head> <script src="jquery-1.4.2.min.js">&l ...

  7. 获取iframe(angular 动态页面)高度

    问题比较特殊,google了好久才得到启示 开发的angular页面,需要嵌入到客户的web页中,以iframe方式.由于iframe的高度需要指定,而angular动态生成机制导致页面高度会随时变化 ...

  8. jquery动态改变div宽度和高度

    效果体验:http://keleyi.com/keleyi/phtml/jquery/23.htm 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD X ...

  9. Js动态获取iframe子页面的高度////////////////////////zzzz

    Js动态获取iframe子页面的高度   Js动态获取iframe子页面的高度总结 问题的缘由 产品有个评论列表引用的是个iframe,高度不固定于是引发这个总结. 方法1:父级页面获取子级页面的高度 ...

随机推荐

  1. MySQL索引,MySQL中索引的限制?

    MySQL中索引的限制: 1.MyISAM存储引擎引键的长度综合不能超过1000字节: 2.BLOB和TEXT类型的列只能创建前缀索引: 3.MySQL目前不支持函数索引: 4.使用!= 或者< ...

  2. ASIHTTPRequest框架使用总结系列之阿堂教程2(同步请求)

    从本篇开始,阿堂结合一些具体代码来说明.在ASIHTTPRequest框架中,与http请求相关的类有ASIHTTPRequest  和 ASIFormDataRequest,其中最常用的是 ASIH ...

  3. 设计模式之过滤器模式(php实现)

    /** * github地址:https://github.com/ZQCard/design_pattern * 过滤器模式(Filter Pattern)或标准模式(Criteria Patter ...

  4. JS创建对象的方式有几种

    相信但凡作为一个前端工程师,都被面试到过这个面试题目,HR考察的就是对oop思想的理解. 作为一个从后端转过来的怂逼,oop一直是心中的永远的痛啊. 这几天一直在通读js高级程序设计,重复理解js创建 ...

  5. Shell--变量的显示与设置、环境变量、语系变量

    1.变量的显示与设置:echo,unsetecho:显示一段文字,也可以读出变量内容并打印出来  格式echo $变量或者echo ${变量}语 法:echo [-neE][字符串]或 echo [- ...

  6. account for 与led to和result in的区别

    account for sth:be the explanation of sth; explain the cause of sth 作某事物的解释; 解释某事物的原因:His illness ac ...

  7. 全栈技术经理——团队管理:每周问问你的团队这这些问题 V1.0

    全栈技术经理--团队管理:每周问问你的团队这这些问题 V1.0 1.本周取得了哪些进展? ​ 通过回答这个问题可以让员工庆祝甚至夸耀一些自己的成果,包括那些跟最高优先级不相干而被忽视的小事情.借此你也 ...

  8. 10. 修改端口号【从零开始学Spring Boot】

    转载:http://blog.csdn.net/linxingliang/article/details/51637017 spring boot 默认端口是8080,如果想要进行更改的话,只需要修改 ...

  9. rabbit 函数参数详解

    http://blog.csdn.net/chwshuang/article/details/50512057 http://www.cnblogs.com/LiangSW/p/6224333.htm ...

  10. 把数据库里面的stu表中的数据,导出到excel中

    # 2.写代码实现,把我的数据库里面的stu表中的数据,导出到excel中 #编号 名字 性别 # 需求分析:# 1.连接好数据库,写好SQL,查到数据 [[1,'name1','男'],[1,'na ...