1, 平常都经常用 document.documentElement.clientWidth 或 document.documentElement.clientHeight 来获取页面的宽度和高度, 其实任何一个元素都有clientWidth 和clientHeight 属性,它的值等于,元素的宽度或高度+ padding的值,如果有滚动条,还要减去滚动条的宽度和高度。 比如一个div

  1, 如果设置一个div 的宽度和高度,里面只有很少内容没有出现滚动条,那么这个div的clientWidth 和clientHeight 就是我们设置的width 和height。

<style>
  div {
	width: 300px;
	height: 100px;
	border: 1px solid blue;
	font: 30px arial;
  }
</style>
<div>
    clientHeight/ clientWidth
</div>
<script>
  var div = document.getElementsByTagName("div")[0];
  console.log(div.clientHeight);  // 100   同style样式中设置的一致
  console.log(div.clientWidth);  //  300   同style样式中设置的一致
</script>

  2, 如果同时给div元素设置了padding值, 那么div的clientWidth 和clientHeight就时 width + padding  和height + padding。

<style>
	div {
		width: 300px;
		height: 100px;
		padding: 20px;  /*增加了padding 20px*/
		border: 1px solid blue;
		font: 30px arial;
	}
</style>

console.log(div.clientHeight);  // 140  width + padding *2
console.log(div.clientWidth);  //  340  height + padding *2

  3, 如果给div 设置overflow: auto,同时里面的内容特别多,出现滚动条, 这是clientWidth 和clientHeight就时 width + padding -滚动条的宽度  和height + padding-滚动条的高度。

<style>
	div {
		width: 300px;
		height: 100px;
		padding: 20px; /*增加了padding 20px*/
		border: 1px solid blue;
		font: 30px arial;
		overflow: auto;
	}
</style>

<div>
	clientHeight/ clientWidth/clientHeight/ clientWidth
	clientHeight/ clientWidth/clientHeight/ clientWidth
	clientHeight/ clientWidth/clientHeight/ clientWidth
	clientHeight/ clientWidth
</div>
<script>
	var div = document.getElementsByTagName("div")[0];
	console.log(div.clientHeight);  // 123   width + padding *2 -滚动条的高度
	console.log(div.clientWidth);  // 323    height + padding *2 -滚动条的宽度
    // 滚动条的默认宽度和高度是17px;
</script>

  4, clientLeft/ clientTop: 他们指的是div 元素border 的宽度。 clientLeft 指的是border-left-width,clientTop 指的是 border-top-width;

div {
	width: 300px;
	height: 100px;
        border-style: solid;
        border-width: 30px 20px 10px 5px;
}    

console.log(div.clientTop);  //  30
console.log(div.clientLeft);  //  5

  

js 中与元素有关的高度的更多相关文章

  1. js中迭代元素特性与DOM中的DocumentFragment类型 笔记

    JS中迭代元素特性 在需要将DOM结构序列化为XML或者HTML字符串时,多数都会涉及遍历元素的特性,这个时候attributes属性就可以派上用场. 以下代码展示了如何迭代元素的每一个特性,然后将他 ...

  2. JS中获取元素属性的逆天大法

    给大家聊下js中获取元素属性的逆天大法,胆小慎入,切记切记!!! innerHTML.outerHTML.innerText .outerText.value.text().html(),val() ...

  3. 在Js中得到元素的子元素集合注意事项

    http://www.cnblogs.com/phonefans/archive/2008/09/04/1283739.html 在Js中得到元素的子元素集合注意事项 费话少说,直接看例子: 1 &l ...

  4. 详解JS中DOM 元素的 attribute 和 property 属性

    一.'表亲戚':attribute和property 为什么称attribute和property为'表亲戚'呢?因为他们既有共同处,也有不同点. attribute 是 dom 元素在文档中作为 h ...

  5. js中选定元素slice()

    选定元素slice() slice() 方法可从已有的数组中返回选定的元素. 语法 arrayObject.slice(start,end) 参数说明: 1.返回一个新的数组,包含从 start 到 ...

  6. (知识点)JS中获取元素的样式

    首先我们已经知道了JavaScript如果获取一个元素的内部样式,你可以这样做: <div id="box" style="width:100px;height:1 ...

  7. js中获取浏览器和屏幕高度

    Javascript: IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高 ...

  8. js中数组元素的添加和删除

    js中数组元素常用添加方法是直接添加.push方法以及unshift方法 删除方法则是delete.pop.shift 集修改方法为一身的则是splice 1.添加: (1)直接添加通常都是这样 va ...

  9. JS中获取元素使用getElementByID()、getElementsByName()、getElementsByTagName()的用法和区别

    Web标准下可以通过getElementById(), getElementsByName(), and getElementsByTagName()访问Documnent中的任一个标签:   1 g ...

随机推荐

  1. word自定义格式 并下载

    /** * * @param pRun * @param 20 间距 * @param fontSize 字体大小 * @param bold 是否加粗 * @param underLine 是否下划 ...

  2. Android仿“守望先锋”加载动画

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 效果图 实现思路 画一个小六边形 按效果图位置画七个小六边形 实现一个小六边形的显示与隐藏 ...

  3. sdk、jdk、jre、jvm、jdt、cdt分别都是什么东西

    1.sdk是什么 sdk,全称是 software development kit 中文译为软件开发工具包.kit 在英文中有工具箱,设备包,成套工具的意思. 从名字就可以看出sdk作为一个工具箱,其 ...

  4. sql语句把字段中的某个字符去掉

    sql语句把字段中的某个字符去掉 )),'http://demo.m-school.net','') 例如: )),'http://192.168.2.180','') )),'http://zpzx ...

  5. 夺命雷公狗-----React---17--事件常用的属性

    我们可以通过打印的方式将他打印出来看看,如下所示: <!DOCTYPE> <html> <head> <meta charset="utf-8&qu ...

  6. html5与html4的区别,如何一眼区分

    还是在面试过程中遇到的这个问题,但是当时感觉回答的不是很全面,回来以后自己做的总结: 以上这个问题如果教大家看源码,可能一眼很直观的就能认出,那个是html4,那个是html5,但是面试的时候问道这个 ...

  7. 二十三、Java基础--------网络编程

    Java中另一个重要技术就是网络编程了,为了更好的学习web方向的知识,有必要对java之网络编程好好学习,本文将围绕网络编程技术进行分析. 常见的网络协议:UDP.TCP UDP 1. 将数据源和目 ...

  8. 【金】nginx+uwsgi+django+python 应用架构部署

    网上有很多这种配置,但就是没一个靠普的,费了好大的力气才完成架构部署.顺便记录一下. 一.部署前的说明 先安装好 python,django,uwsgi,nginx软件后.后配置运行的软件是分先后的. ...

  9. C#抽象方法和虚拟方法理解

    http://www.cnblogs.com/denylau/archive/2010/04/11/1709573.html http://www.cnblogs.com/naariah/archiv ...

  10. mysql binlog日志查看及解码

    mysql bin log日志导出 mysqlbinlog  mysql-bin.000005 > /home/17bin.log 需要添加参数(--base64-output=decode-r ...