JS中几种获取对象宽度和高度的区别

JS中几种获取对象宽度和高度的区别,第1张

1、clientWidth / clintHeight

clientWidth  = 元素宽度 + 元素的paddingLeft + 元素的paddingRight

clientHeight = 元素的高度 + 元素的paddingTop + 元素的paddingBottom

注意:如果该元素上存在上下滑动滚动条,则clientWidth的值不包括滚动条所占的宽度(即获得的clientWidth已经减去了滚动条的宽度)

注意:如果该元素上存在左右滑动滚动条,则clientHeight的值不包括滚动条所占的宽度(即获得的clientHeight已经减去了滚动条的高度)

2、clientTop / clientLeft

clientTop - 可视区域的上边距距离自身上边框的外边框的距离(即为上边框的宽度)

clientLeft - 可视区域的左边距距离自身左边框的外边框的距离(即为左边框的宽度)

没有滑动条的效果代码如下:

[html] view plain copy

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>获取元素的高度和宽度</title>

<style type="text/css">

#wrap{

height: 500px;

width: 500px;

background-color: skyblue;

margin: 0 auto;

border: 3px solid red;

overflow: scroll;

}

#content{

height: 200px;

width: 200px;

background-color: greenyellow;

margin: 0 auto;

border: 0px solid yellow;

border-width: 5px 6px 8px 12px;

padding: 5px 4px 6px 12px;

margin-top: 50px;

}

</style>

</head>

<body>

<div id="wrap">

<div id="content"></div>

</div>

</body>

<script type="text/javascript">

//获取content对象

var contentObj = documentgetElementById("content");

consolelog(contentObjclientHeight);

consolelog(contentObjclientWidth);

</script>

</html>  

以上结果输出的即为id为content的div的clientHeight 和 clientWidth 分别为 211 = height(200) + paddingTop(5) + paddingBottom(6)

有滚动条的代码如下,

在content div的里面添加一个id为one的div让新添加的div超出隐藏即可出现滚动条

[html] view plain copy

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>获取元素的高度和宽度</title>

<style type="text/css">

#wrap{

height: 500px;

width: 500px;

background-color: skyblue;

margin: 0 auto;

border: 3px solid red;

overflow: scroll;

padding: 5px;

}

#content{

height: 200px;

width: 200px;

background-color: greenyellow;

margin: 0 auto;

border: 0px solid yellow;

border-width: 5px 6px 8px 12px;

padding: 5px 4px 6px 12px;

margin-top: 50px;

overflow: scroll;

}

#one{

height: 300px;

width: 300px;

}

</style>

</head>

<body>

<div id="wrap">

<div id="content">

<div id="one"></div>

</div>

</div>

</body>

<script type="text/javascript">

//获取content对象

var contentObj = documentgetElementById("content");

consolelog(contentObjclientHeight);

consolelog(contentObjclientWidth);

consolelog(contentObjclientTop);

consolelog(contentObjclientLeft);

</script>

</html>  

最后输出的结果为clientHeight 和 clientWidth分别为 196 = height(200) + paddingTop(5) + paddingBottom(6) - 滚动条的宽度(15)

201 = width(200) + paddingLeft(12) + paddingRight(4) - 滚动条的宽度(15)

3、offsetHeight / offsetWidth

offsetHeight / offsetWidth实际上获取的内容和clientHeight / clientWidth的差别在于,offsetHeight和offsetWidth 不仅包括元素的高度和宽度和padding的值,而且包括border的宽度

注意:offsetHeight / offsetWidth包括滚动条的宽度(这一点与clientHeight / clientWidth)不同

[html] view plain copy

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>获取元素的高度和宽度</title>

<style type="text/css">

#wrap{

height: 500px;

width: 500px;

background-color: skyblue;

margin: 0 auto;

border: 3px solid red;

overflow: scroll;

padding: 5px;

}

#content{

height: 200px;

width: 200px;

background-color: greenyellow;

margin: 0 auto;

border: 0px solid yellow;

border-width: 5px 6px 8px 12px;

padding: 5px 4px 6px 12px;

margin-top: 50px;

overflow: scroll;

}

#one{

height: 300px;

width: 300px;

}

</style>

</head>

<body>

<div id="wrap">

<div id="content">

<div id="one"></div>

</div>

</div>

</body>

<script type="text/javascript">

//获取content对象

var contentObj = documentgetElementById("content");

consolelog(contentObjoffsetHeight);

consolelog(contentObjoffsetWidth);

consolelog(contentObjoffsetLeft);

consolelog(contentObjoffsetTop);

</script>

</html>  

输出的结果:offsetHeight = height(200) + paddingTop(5) + paddingBottom(6) + borderTop(5) + borderBottom(8)

offsetWidth = width(200) + paddingLeft(12) + paddingRight(4)  + borderLeft(12) + borderRight(6)

4、offsetTop / offsetLeft

offsetTop - 该元素的上边框的外边缘距离父级元素上边框的内边缘的距离

offsetLeft - 该元素的左边框的外边缘距离父级元素左边框的内边缘的距离

5、scrollHeight / scrollWidth

scrollHeight = 子级超出父级的元素的高度 + 父级的上下padding值

scrollWidth = 子级超出父级的元素的宽度 + 父级的左padding

6、scrollTop

scrollTop 元素滚动的距离

用clientHeight或offsetHeight。

对于没有具体设置高度的元素,不能直接用height获取高度。

clientHeight表示内容可见区域高度;offsetHeight不同浏览器数值不尽相同,除了clientHeight的高度外还包括边框等的高度。

你这样的写的话 不先赋值给thumbnail统一的高度的话恐怕页面会显得参差不齐而不是你想的4块模块平均撑开页面,还有你是把写进div你当背景,那就不需要js来处理这个问题。

<style>

#thumbnailbox{position: absolute;left:0;top:0;width:100%;height:100%;}

#thumbnailbox a{width:50%;height:50%;display:block;position:absolute;left:0;top:0;}

#thumbnailbox abg1{background:url(/images/1jpg) 50% 50% no-repeat;}

#thumbnailbox abg2{left:50%;background:url(/images/2jpg) 50% 50% no-repeat;}

#thumbnailbox abg3{top:50%;background:url(/images/3jpg) 50% 50% no-repeat;}

#thumbnailbox abg4{left:50%;top:50%;background:url(/images/4jpg) 50% 50% no-repeat;}

</style>

<div id="thumbnailbox">

<a href="post_1html" title="缩略图1" class="thumbnail bg1"></a>

<a href="post_1html" title="缩略图1" class="thumbnail bg2"></a>

<a href="post_1html" title="缩略图1" class="thumbnail bg3"></a>

<a href="post_1html" title="缩略图1" class="thumbnail bg4"></a>

</div>

以上就是关于JS中几种获取对象宽度和高度的区别全部的内容,包括:JS中几种获取对象宽度和高度的区别、怎么用js获取到外部样式表写的高度为auto的div的真实高度呢、JS能否获取动态class的宽度并赋值给高度,目的是实现响应式正方形,附HTML和CSS等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9786810.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存