区分clientHeight、scrollHeight、offsetHeight

区分clientHeight、scrollHeight、offsetHeight区分clientHeight、scrollHeight、offsetHeightclientHeight:元素的可见高度scrollHeight:元素的整体高度offsetHeight:元素的高度参考文献:[1]搞清clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop[2]js中offsetHe…

大家好,又见面了,我是你们的朋友全栈君。

区分clientHeight、scrollHeight、offsetHeight

clientHeight、offsetHeight、scrollHeight都是用来描述DOM元素的高度的属性;对于同一个元素,它们分别表示的高度值会有所不同。具体如下:

clientHeight:

只读属性,所表示的元素高度包括:元素的内容高度(如果有下滚动条,需减去下滚动条的高度,下滚条默认高度为17px)+上下padding;不包括上下border、上下margin、下滚动条高度(如果元素有下滚动条,则clientHeight表示的高度不包含下滚动条)。

offsetHeight:

只读属性,所表示的元素高度包括:元素的内容高度(如果有下滚动条,需减去下滚动条的高度,下滚条默认高度为17px)+上下padding+上下border+下滚动条高度(如果元素有下滚动条,则offsetHeight表示的高度包含下滚动条);不包括上下margin;我们通过css设置的高度、上下padding、上下border组成了offsetHeight的值。

scrollHeight:

只读属性,如果元素内的子元素高度大于该元素,scrollHeight所表示的元素高度为:元素内子元素的高度+该元素的上下padding;如果元素内的子元素高度小于该元素,scrollHeight所表示的元素高度为:该元素的内容高度(如果有下滚动条,需减去下滚动条的高度,下滚条默认高度为17px)+该元素的上下padding,此时,与clientHeight在数值上相等。

下面两个demo可以很好地证明以上表述:

demo1(如果元素内的子元素高度大于该元素):

  • html
<div class="container"> <div class="box"></div> </div> 
  • css
.container{ 
     overflow: auto; width: 1000px; height: 500px; padding: 20px 40px; border: 10px dashed #f44336; margin: 30px 40px; background: #ffeb3b; } .box{ 
     width: 500px; height: 2000px; background: #2196f3; } 

这里写图片描述

demo2(如果元素内的子元素高度小于该元素):

  • html
<div class="container"> <div class="box"></div> </div> 
  • css(如果有下滚动条)
.container{ 
     overflow: scroll; width: 1000px; height: 500px; padding: 20px 40px; border: 10px dashed #f44336; margin: 30px 40px; background: #ffeb3b; } .box{ 
     width: 500px; height: 200px; background: #2196f3; } 

这里写图片描述

  • css(如果没有下滚动条)
.container{ 
     width: 1000px; height: 500px; padding: 20px 40px; border: 10px dashed #f44336; margin: 30px 40px; background: #ffeb3b; } .box{ 
     width: 500px; height: 200px; background: #2196f3; } 

这里写图片描述

总结:

1、clientHeight与offsetHeight的区别在于是否将元素的border以及下滚动条高度(如果有下滚动条)计算在内;

2、如果元素内的子元素高度小于该元素,该元素的scrollHeight与clientHeight在数值上相等;

3、如果元素内的子元素高度大于该元素,scrollHeight所表示的元素高度为:元素内子元素的高度+该元素的上下padding;

参考文献:

[1] css clientheight、offsetheight、scrollheight详解
[2] 搞清clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop
[3] js中offsetHeight、clientHeight、scrollHeight等相关属性区分总结

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163742.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 计算机二级中的9种运算问题:笛卡尔积,自然连接,交,并,选择,投影。。。

    计算机二级中的9种运算问题:笛卡尔积,自然连接,交,并,选择,投影。。。这九种运算分为7种二元运算2种一元运算用文字和例子来分别解释上面几个概念:7种二元运算:1.笛卡儿积:          已知           如果算X1和X2的笛卡尔积                      则:                   首先将属性(或者叫…

    2022年7月11日
    30
  • 廖雪峰git学习资料-涂改笔记

    廖雪峰git学习资料-涂改笔记注意:本文章是看廖雪峰官网资料整理而来原地址如下:http://www.liaoxuefeng.com/附件为git常用命令 前言:注意的问题如果是首次提交会第一步:先在本地建立一个一样的仓库,称本地仓库。 第二步:在本地进行commit操作将把更新提交到本地仓库; 第三步:将服务器端的更新pull到本地仓库进行合并,最后将合并好的本地仓库push到服务…

    2025年9月27日
    5
  • php面试问答

    php面试问答

    2021年11月7日
    45
  • noip2013 day1

    noip2013 day11.转圈游戏(circle.cpp/c/pas)【问题描述】n个小伙伴(编号从0到n-1)围坐一圈玩游戏。按照顺时针方向给n个位置编号,从0到n-1。最初,第0号小伙伴在第0号位置,第1号小伙伴在第1号位置,……,依此类推。游戏规则如下:每一轮第0号位置上的小伙伴顺时针走到第m号位置,第1号位置小伙伴走到第m+1号位置,……,依此类推,…

    2025年6月30日
    1
  • CListCtrl大数据显示[通俗易懂]

    CListCtrl大数据显示[通俗易懂]CListCtrl是个很方便的东西,但是当数据大到一个程度(比如说10万条数据),显示速度就会非常的慢。解决办法就是用虚拟列表。CListCtrl显示数据的原理是将需显示的所有数据拷贝在它内部的一块空间里,然后显示出来。一但数据量过大,拷贝的时间就会延长,显示速度当然也就非常慢了。而虚拟列表则不需要将显示数据拷贝到内部空间,它的做法是当需要显示某个数据时,才将数据拷入内部空间。看上去好像和普通CLi

    2022年6月23日
    27
  • vb.net从数据库中取数据

    vb.net从数据库中取数据1.设置从Model中的SubMain启动2.程序结构3.Model14.FormStudentSysMain.vb5.FormSearchStudent.vb6.运行结果

    2022年7月3日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号