093_Element.getBoundingClientRect()方法和DOMRect对象

1. Element.getBoundingClientRect()

1.1. Element.getBoundingClientRect()方法返回值是一个DOMRect对象, 对象拥有left, top, right, bottom, x, y, width和height这几个以像素为单位的只读属性, 用于描述整个边框。除了width和height以外的属性是相对于视图窗口的左上角来计算的。

2. DOMRect对象

2.1. 一个DOMRect代表一个矩形。DOMRect从其父类DOMRectReadOnly继承属性, 不同之处在于它们不再是只读的。

2.2. DOMRectReadOnly.x, 返回DOMRect矩形原点的x坐标。

2.3. DOMRectReadOnly.y, 返回DOMRect矩形原点的y坐标。

2.4. DOMRectReadOnly.width, 返回DOMRect矩形的宽度。

2.5. DOMRectReadOnly.height, 返回DOMRect矩形的高度。

2.6. DOMRectReadOnly.top, 返回DOMRect的顶坐标值(与y具有相同的值, 如果height为负值, 则为y + height的值)。

2.7. DOMRectReadOnly.right, 返回DOMRect的右坐标值(与x + width具有相同的值, 如果width为负值, 则为x的值)。

2.8. DOMRectReadOnly.bottom, 返回DOMRect的底坐标值(与y + height具有相同的值, 如果height为负值, 则为y的值)。

2.9. DOMRectReadOnly.left, 返回DOMRect的左坐标值(与x具有相同的值, 如果width为负值, 则为x + width的值)。

3. 例子

3.1. 代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>Element.getBoundingClientRect()方法和DOMRect对象</title>

		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
			}

			#pDiv {
				width: 400px;
				height: 400px;
				margin: 30px; 
				border: solid 10px;
				/*position: relative;*/
				/*padding: 10px;*/
			}

			#myDiv {
				width: 200px;
				height: 150px;
				margin-left: 30px;
				margin-top: 50px;
				border: solid 10px;
				padding: 30px;
				/*auto如果内容被修剪, 则浏览器会显示滚动条以便查看其余的内容。*/
				overflow: auto;
				/*nowrap并所有的空白符, 忽略换行符, 并且不允许自动换行。*/
				white-space: nowrap; 
				/*direction: rtl;*/
			}
		</style>
	</head>
	<body>
		<div id="pDiv">
			<div id="myDiv">
				<h2>offsetWidth属性</h2>
				1. offsetWidth属性是一个只读属性, 它返回该元素的像素宽度, 宽度包含内边距(padding)、边框(border)和元素的垂直滚动条, 不包含外边距(margin), 是一个整数, 单位是像素px。<br />
				2. 语法: element.offsetWidth。
				<h2>offsetHeight属性</h2>
				1. offsetHeight属性是一个只读属性, 它返回该元素的像素高度, 高度包含内边距(padding)、边框(border)和元素的水平滚动条, 不包含外边距(margin), 是一个整数, 单位是像素px。<br />
				2. 语法: element.offsetHeight。
				<h2>offsetParent属性</h2>
				1. offsetParent是一个只读属性, 获得被定位的最近祖先元素。<br />
				2. 注意: offsetParent用于offsetLeft和offsetTop属性。<br />	
				3. 语法: element.offsetParent。 
				<h2>offsetLeft属性</h2>
				1. offsetLeft是一个只读属性, 返回当前元素相对于offsetParent节点左边界的偏移像素值。<br />
				2. 元素向左偏移的像素值包含: 元素的外边距(margin)和offsetParent元素的左侧内边距(padding)。<br />
				3. 语法: element.offsetLeft。
				<h2>offsetTop属性</h2>
				1. offsetLeft是一个只读属性, 返回当前元素相对于offsetParent节点顶部边界的偏移像素值。<br />
				2. 元素顶部偏移的像素值包含: 元素的外边距(margin)和offsetParent元素的顶部内边距(padding)。<br />
				3. 语法: element.offsetTop。
			</div>
		</div>

		<script type="text/javascript">
			var d = document.querySelector("#myDiv");
			document.write("offsetWidth: " + d.offsetWidth + " offsetHeight: " + d.offsetHeight + " offsetLeft: " + d.offsetLeft + " offsetTop: " + d.offsetTop + "<br />");

			var rect = d.getBoundingClientRect();
			document.write("x: " + rect.x + "<br />");
			document.write("y: " + rect.y + "<br />");
			document.write("left: " + rect.left + "<br />");
			document.write("right: " + rect.right + "<br />");
			document.write("top: " + rect.top + "<br />");
			document.write("bottom: " + rect.bottom + "<br />");
			document.write("width: " + rect.width + "<br />");
			document.write("height: " + rect.height + "<br />");
		</script>
	</body>
</html>

3.2. 效果图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值