element.getBoundingClientRect() 返回元素尺寸和相对浏览器视窗位置(宽高、上下左右距离边缘、左上角坐标)

element.getBoundingClientRect() 方法返回一个DOMRect对象,包含元素的宽、高、以及相对于视口的位置信息。该方法适用于获取元素边框、margin等详细尺寸。当网页滚动时,rect对象的y坐标会随页面滚动而改变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用法:

object.getBoundingClientRect( ) 返回一个对象。

DOMRect 对象包含了一组用于描述边框的只读属性——left、top、right和bottom,单位为像素。

  • rect() 返回的 width 和 height 包括元素的边框。 rect ().width=width+border*2 , rect ().height=height+border*2
  • 除了 width 和 height 外的属性都是相对于视口的左上角位置而言的。


例子说明

1. 用 document.documentElement 返回网页的根节点(<html>

2. 执行 object.getBoundingClientRect( ) 会得到元素的 top、right、bottom、left、width、height 属性,这些属性以一个对象的方式返回。

<html>
<head>
    <style>
        :checked{
            color:red}
    </style>
</head>

<body>
<button onclick="cli()">
    点击
</button>

<script>
function cli(){
    var h=document.documentElement
    var info=h.getBoundingClientRect()
        
    console.log(h)
    console.log(info)
    console.log(info.width)
    }
</script>
</body>
</html>

 

body 元素的 rect 盒子

  • 查看body元素的rect 盒子发现,body 元素在默认情况下,margin=8px(chrome 浏览器)
var body=document.getElementById("body")
var bodyinfo=body.getBoundingClientRect()

 


div 元素的 rect 盒子 

一、rect 盒子的 width 和height

  • rect( ) 返回的width,是元素的宽+左右两边边边框的值:  rect().width=width +border*2
  • rect( ) 返回的height,是元素的高+上下边框的值:  rect().height=height +border*2
<html>
<head>
    <style>
html{
    background-color:grey;
    margin:0 0;
}

div{
    position:relative;
    color:yellow;
    top:0;
    left:0;
    width:100px;
    height:100px;
    border:solid 10px
}
    </style>
</head>

<body id="body">
    <div id="div">一个元素</div>
    <button onclick="cli()">
    点击
</button>

<script>
function cli(){
    var div=document.getElementById("div")
    var divinfo=div.getBoundingClientRect()

    console.log(divinfo)
    }
</script>
</body>
</html>

 

 

二、x,y 坐标:元素左上角起始点相对于浏览器视窗的位置

  • 网页发生上下滚动,rect() 的 y 坐标发生变化;
  • 发生左右滚动,x 坐标变化 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值