vue获取宽度不准确
每个li元素都是动态创建的,宽度会根据每个li的文字多少决定,因为要横向滚动,所以要获取每个li的宽度来给ul赋值,我用的是better-scroll,现在获取宽度的时候比实际宽度少了3个像素,但是我把li里面的i标签拿掉以后就是正常,以下是我的代码。
<template>
<div>
<div class="nav" ref="wrapper">
<ul class="content clearfix ">
<router-link v-for="(item,index) in getView" :to='{path:item.path}' :key="index" tag="li" >
{{item.name}}<i v-if='index !== 0' class="el-icon-error" @click.prevent='_removeView(item.path,index)'></i>
</router-link>
</ul>
</div>
</div>
</template>
<script>
export default {
return {
getView:[
{
"name":"首页",
"path":"/index"
},
{
"name":"系统管理",
"path":"/xtgl"
}
]
},
methods:{
setWidth:function(){
this.$nextTick(() => {
var content = this.$refs.content;
var li = content.children;
var width = 0;
for( let i=0;i<li.length;i++)
{
width += li[i].clientWidth;
console.log(li[i].clientWidth)
}
content.style.width = width +'px';
});
},
}
}
</script>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
谢邀!
本来打算直接运行一下你那个代码的,不过看起来似乎不行。
除了
clientWidth
获取可视区域宽度以外,还有几个获取宽度的属性,例如offsetWidth
,可以都试一试。还有一个问题就是你提到了去掉里面的
i
标签获取的宽度就正常了,那么有没有对所有标签的默认样式进行统一的处理,因为很多标签都是有默认样式的。