.offsetWidth 和 .offsetHeight
要获取元素占用的实际空间量,其中一种方法是使用 HTMLElement.offsetWidth 和 HTMLElement.offsetHeight 属性:
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
<style>
#divId {
height: 200px;
width: 350px;
padding: 20px;
margin: 25px;
border: 2px solid green;
}
</style>
</head>
<body>
<div id="divId">
<p>获取元素的高度和宽度,包括填充和边框。</p>
<p id="demo"></p>
</div>
<button onclick="GetHeightWidth()">Click on button</button>
<script>
function GetHeightWidth() {
let elem = document.getElementById("divId");
let width = "Width: " + elem.offsetHeight + "px<br>";
let height = "Height: " + elem.offsetWidth + "px";
document.getElementById("demo").innerHTML = width + height;
}
</script>
</body>
</html>
.offsetWidth 和 .offsetHeight 是只读属性是只读的。
第一个以整数形式返回布局元素的宽度,第二个以整数形式返回元素的高度(包括垂直填充和边框)。
在这些属性的情况下,如果元素被隐藏(例如,通过将元素或者祖先之一上的 style.display 设置为“none”值),则返回 0。
.getBoundingClientRect()
.getBoundingClientRect() 函数在执行 CSS 转换后以浮点数形式返回元素的尺寸和位置:
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
<style>
#div1 {
height: 200px;
width: 300px;
overflow: auto;
}
#myDiv {
width: 250px;
height: 150px;
border: 1px solid red;
}
#div2 {
width: 1000px;
height: 1000px;
}
</style>
</head>
<body>
<div id="div1">
<div id="myDiv"> 使用滚动条更改位置。</div>
<div id="div2"></div>
</div>
<br />
<button onclick="GetPosition()">获取红色框的位置</button>
<div id="demo"></div>
<script type="text/javascript">
function GetPosition() {
let div = document.getElementById("myDiv");
let rect = div.getBoundingClientRect();
x = rect.left;
y = rect.top;
width = rect.right - rect.left;
height = rect.bottom - rect.top;
document.getElementById("demo").innerHTML = (" Left: " + x + " Top: " + y + " Width: " + width + " Height: " + height);
}
</script>
</body>
</html>
大多数情况下 .offsetWidth 和 .offsetHeight 与 .getBoundingClientRect() 函数的宽度和高度相同,如果没有对元素应用任何变换。
如果存在转换,则属性返回元素的布局宽度和高度,而 getBoundingClientRect() 返回渲染宽度和高度。
.offsetWidth 和 .offsetHeight 属性将值四舍五入为整数。
如果你想要一个小数值,你应该使用元素 .getBoundingClientRect()。
在本教程中,我们将推荐两种检索 HTML 元素实际宽度和高度的方法。
日期:2020-06-02 22:16:25 来源:oir作者:oir
