首页 > 其他分享 >通过元素的 getBoundingClientRect() 方法获取元素的实际宽高与实际展示的不符合

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

时间:2023-08-17 18:23:52浏览次数:98  
标签:direction container getBoundingClientRect 元素 宽高 获取

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

.container {
  .video-container {
    height: 400px;
  }
}
body[v-direction='1'] {
    .container {
      .video-container {
        height: calc(100% - 90px);
      }
    }
}

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

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

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

 setTimeout(() => {
    const obj = container.getBoundingClientRect() 
}, 10)
他的执行顺序在异步设置 v-direction 属性的逻辑之后,即可。

标签:direction,container,getBoundingClientRect,元素,宽高,获取
From: https://www.cnblogs.com/beileixinqing/p/17638452.html

相关文章

  • 力扣-搜索插入元素
    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(logn) 的算法。 示例1:输入:nums=[1,3,5,6],target=5输出:2示例 2:输入:nums=[1,3,5,6],target=2输出:1示......
  • python 列表成对生成字典 表格的列元素成对生成列表
    列表成对生成字典list_1=list(range(3))list_2=['col'+str(i)foriinlist_1]dict_1={key:valueforkey,valueinzip(list_2,list_1)}dict_1list_1=list(range(3))list_2=['col'+str(i)foriinlist_1]dict_1={key:val......
  • vue 拖动元素传参
    这里演示拖动左侧列表中单元格到右侧内容区 <divclass="tree_root"><divclass="level_root""><div:draggable="draggable"@dragstart="treeItemDragstart($event,levelItem)"class=&quo......
  • Streamlit 讲解专栏(七):解析数据元素
    文章目录1前言2解锁Streamlit中的st.dataframe功能3使用st.data_editor进行数据编辑4定制数据编辑器-使用st.column_config4.1使用st.column_config.Column定制数据编辑器的列4.2使用st.column_config.TextColumn定制数据编辑器的文本列4.3使用st.column_confi......
  • 力扣-移除元素
    给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 说明:为什么返回数值是......
  • 704. 二分查找、27. 移除元素
    704.二分查找、27.移除元素704.二分查找力扣题目链接(opensnewwindow)给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4......
  • aboslute(绝对定位的元素)居中方法
    1.使用绝对定位元素自身属性进行居中设置position:absolute;bottom:16px;//放置在底部//设置居中的关键属性right:0;left:0;margin:0auto;该方法主要使用left:0和right:0对dom元素进行拉扯,因此会导致属性值为auto的边距被拉伸,使该元素的宽度撑满整个父级该方法也......
  • 代码随想录算法训练营第十三天|单调数列:滑动窗口最大值(力扣239.)、优先级队列:前k个高
    单调数列:滑动窗口最大值(力扣239.)给定滑动窗口的范围,求每个滑动窗口范围内的最大值使用单调队列实现对于最大值数字前面的数字不存入数列,对于最大值数字后面的数字存入数列中单调队列中数字的大小呈递减顺序pop(value):如果窗口移除的元素等于单调队列的队口元素,则pop;否则什......
  • flex属性解决子元素宽度被压缩问题
    问题如上图所示,A及B的父盒子是C。其中C和B都用到了flex布局,目的是使文字水平对齐。css代码//A及B的父盒子.cur-in-stan{color:red;height:37px;font-size:14px;font-weight:700;display:flex;align-items:center;margin-righ......
  • C# 获取网页上指定的元素
    直接上代码//usingSystem;//usingSystem.Net.Http;//usingSystem.Threading.Tasks;//usingHtmlAgilityPack;//usingNewtonsoft.Json;//classProgram//{//staticasyncTaskMain(string[]args)//{//usingvarhttpClient=newHttpClient();......