前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过元素的 getBoundingClientRect() 方法获取元素的实际宽高与实际展示的不符合

通过元素的 getBoundingClientRect() 方法获取元素的实际宽高与实际展示的不符合

作者头像
蓓蕾心晴
发布2023-08-18 08:23:41
4070
发布2023-08-18 08:23:41
举报
文章被收录于专栏:前端小叙前端小叙

我的代码:通过 css 设置样式,当 body 属性 v-direction=1 时,设置一个高度,默认会设置一个高度

代码语言:javascript
复制
.container {
  .video-container {
    height: 400px;
  }
}
body[v-direction='1'] {
    .container {
      .video-container {
        height: calc(100% - 90px);
      }
    }
}

现象:通过元素的 getBoundingClientRect() 获取的元素宽高与实际展示的不相符

原因:这里获取的是初始化给该元素设置的宽高,如果后续通过 css 媒体查询或者其他条件修改了元素的宽高,这里会有一个异步或时间顺序问题,导致获取的与实际的不一致

解决:由于我这里的属性 v-direction 视频的方向是通过监听视频的相关事件获取之后,赋值到 body 上的,所以这里是一个异步函数,执行顺序一定在 getBoundingClientRect() 之后,于是我需要加个 setTimeout

代码语言:javascript
复制
 setTimeout(() => {
    const obj = container.getBoundingClientRect() 
}, 10)

他的执行顺序在异步设置 v-direction 属性的逻辑之后,即可。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档