vue.js - 如何在 vue.js 中查找组件的宽度

标签 vue.js vuejs2 vue-component

HTML:

<ul class="nav nav-tabs nav-style">
  <tabs
    v-for="tabelement in tabelements" :name="tabelement":tabselected="tabelement == type ?  'active': ''" v-on:click="tabclick(tab)"
  ></tabs>
</ul>

JS:

Vue.component('tabs', {
  template:'<li :class="tabselected"><a href="#">{{name}}</a></li>',
  props:['name','tabselected']
});

我想在这个例子中找到所有 li 的宽度总和。

最佳答案

将 watch block 添加到您的脚本中。

脚本

watch: {
 'tabelements': function(val) {
   var lis = this.$refs.ul.getElementsByTagName("li");
   for (var i = 0, len = lis.length; i < len; i++) {
     console.log(lis[i].clientWidth); // do something
   }
   console.log(this.$refs.ul.clientWidth, this.$refs.ul.scrollWidth);
 }
}

如果 scrollWidth > clientWidth,你可以显示你的箭头。

已更新。说明Fiddle

模板

<tabs ref="ul">

将 ref 放在组件上,否则实例不知道它

脚本

this.$nextTick 此函数在dom更新时运行方法

关于vue.js - 如何在 vue.js 中查找组件的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43776338/

相关文章:

javascript - Vue动态背景图片内联组件

vue.js - 构建时无法在eslintrc.js中加载插件Vue

php - 从 Drupal 8 注销并休息

javascript - 选择后选择vue组件关闭下拉

vue.js - 如何在 Vuex 中为 mapbox map 设置集中状态?

Vue.js 3 - 尝试构建具有 2 种布局的系统

javascript - Vue.js 2,从指令更改数据

javascript - 如何在 vue-router beforeRouteEnter 钩子(Hook)中重定向到不同的 url?

css - 共享 Vue 组件 : CSS has to be manually imported by the client

javascript - Vue.js - 如何通过属性为组件设置多个值(数组)?