vue计算动态元素宽度

问题描述

需求要一个列表,列表中所有元素不能换行,每一个元素包括一个table。

分析问题

可以使用一个ul然后让li浮动,这样的结果是当li过长会换行,为了不让li换行可以动态计算所有长度之和作为ul的长度

问题解决

<div class="father">  
    <ul class="clearfix" ref="ulRef" :style="{ width: ulWidth }">
       <template v-for="un in uList">
          <un-li :key="un.id"></un-li>
       </template>
    </ul>
</div>
initWidth() {
      this.$nextTick(() => {
        let len = this.$refs.ulRef.children.length
        let allWidth = len
        while(--len > -1) {
          let liWidth = this.$refs.ulRef.children[len].offsetWidth
          allWidth += liWidth
        }
        this.ulWidth = allWidth + 'px'
      })
}

备注

vue获取元素高度/宽度的方法

// target element
<div ref="dRef"></div> 
  • 获取高度值 (内容高 + padding + 边框)
let height= this.$refs.dRef.offsetHeight // 100
let width= this.$refs.dRef.offsetWidth// 100
  • 获取元素样式值 (存在单位)
let height = window.getComputedStyle(this.$refs.dRef).height; // 100px
let width= window.getComputedStyle(this.$refs.dRef).width; // 100px
  • 获取元素内联样式值(非内联样式无法获取)
let height = this.$refs.dRef.style.height; // 100px
let width= this.$refs.dRef.style.width; // 100px
posted @   小方块的世界  阅读(4018)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2020-02-07 github网站打不开了
2020-02-07 iview table 表头样式修改
点击右上角即可分享
微信分享提示