vue.js - 在 VueJS 中如何确定模板中元素的元素宽度

标签 vue.js vuejs2

我有一个 VueJS 应用程序,它在容器 div 中创建两个 div,它们使用 display:flex 布局,如下所示:

 +-------------------------------------------+
 | div#app                                   |
 | +---------------------+ +---------------+ |
 | |                     | |               | |
 | |       div.a         | |     div.b     | |
 | |                     | |               | |
 | +---------------------+ +---------------+ |
 |                                           |
 +-------------------------------------------+

div.a 里面是一个 svg 元素,它也是由 Vue 生成的。

我需要知道 div.a 的宽度尺寸才能生成合适的 SVG。有什么想法可以解决这个问题吗?

最佳答案

您必须等到组件呈现后,然后使用 $refs 获取对元素的引用。这是一个例子:

new Vue({
  el: '#app',
  
  mounted () {
    const divA = this.$refs.divA
    
    console.log('inner width is: ' + divA.clientWidth)
  }
})
.ct {
  border: 1px solid red;
  display: flex;
  height: 40px;
  padding: 10px;
}

.a {
  border: 1px solid green;
  flex: 1;
}

.b {
  border: 1px solid blue;
  flex: 2;
}
<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>

<div id="app">
  <div class="ct">
    <div class="a" ref="divA"></div>
    <div class="b"></div>
  </div>
</div>

请注意,这不会跟踪尺寸调整,您需要在尺寸发生变化时再次测量。

关于vue.js - 在 VueJS 中如何确定模板中元素的元素宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57970492/

相关文章:

javascript - 我如何修复 Vue JS 警报

javascript - 通过VueJS中的多个复选框将平面数组添加到v模型

javascript - vue JS 不将更改从父级传播到组件

vue.js - vuetable-2 中的 Vue-multiselect v-model ="value[?]"

google-chrome - 在此页面上检测到 Vue.js。 Devtools 检查不可用,因为它处于生产模式或被作者明确禁用

javascript - 创建组件的多个实例而无需多次导入

Vue.js 绑定(bind)列表中每个项目的样式(类)与 v-for 依赖于项目数据

javascript - Chartkick-vue 条形图 - "horizontalBar"不是注册 Controller

javascript - 自定义 v-repeat 过滤器 Vue.js

laravel - 将 null Laravel 模型值作为 Prop 传递时 Vue 抛出错误