vue style中动态计算宽度

vue style中动态计算宽度

<span class="jdt-text4" :style="{width:`${0.963*item.progress}rem`}"></span>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue实现动态计算宽度可以使用 `ref` 来获取到对应元素的DOM对象,然后通过 `offsetWidth` 属性来获取元素的实际宽度,最后将宽度动态绑定到元素的 `style` 属性即可。 例如,假设有一个动态生成的菜单列表,每个菜单项的宽度不一定相同,我们可以在模板为每个菜单项添加一个 `ref` 属性,然后在 `mounted` 钩子函数通过 `this.$refs` 获取到每个菜单项的DOM对象,计算它们的实际宽度并保存到一个数组,最后将这个数组绑定到菜单列表的 `style` 属性,实现动态计算宽度。 具体代码如下: ``` <template> <div class="menu" :style="{width: menuWidth + 'px'}"> <div v-for="(item, index) in menuList" :key="index" :ref="'menuItem' + index" class="menu-item">{{ item }}</div> </div> </template> <script> export default { data() { return { menuList: ['Home', 'Products', 'About', 'Contact'], menuItemWidths: [] } }, computed: { menuWidth() { return this.menuItemWidths.reduce((total, width) => total + width, 0) } }, mounted() { this.menuItemWidths = this.menuList.map((item, index) => { return this.$refs['menuItem' + index][0].offsetWidth }) } } </script> ``` 在上面的代码,我们通过 `map` 函数遍历菜单列表,获取到每个菜单项的DOM对象,然后通过 `offsetWidth` 属性获取它们的实际宽度,最后将宽度保存到 `menuItemWidths` 数组。然后在 `menuWidth` 计算属性,我们使用 `reduce` 函数将所有菜单项的宽度相加得到菜单的总宽度,最后将这个宽度绑定到菜单列表的 `style` 属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值