鍍金池/ 問答/HTML5  HTML/ vue獲取寬度不準(zhǔn)確

vue獲取寬度不準(zhǔn)確

每個(gè)li元素都是動(dòng)態(tài)創(chuàng)建的,寬度會(huì)根據(jù)每個(gè)li的文字多少?zèng)Q定,因?yàn)橐獧M向滾動(dòng),所以要獲取每個(gè)li的寬度來給ul賦值,我用的是better-scroll,現(xiàn)在獲取寬度的時(shí)候比實(shí)際寬度少了3個(gè)像素,但是我把li里面的i標(biāo)簽?zāi)玫粢院缶褪钦#韵率俏业拇a。

<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":"首頁(yè)",
            "path":"/index"
        },
        {
            "name":"系統(tǒng)管理",
            "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>

回答
編輯回答
孤酒

謝邀!
本來打算直接運(yùn)行一下你那個(gè)代碼的,不過看起來似乎不行。
除了clientWidth獲取可視區(qū)域?qū)挾纫酝?,還有幾個(gè)獲取寬度的屬性,例如offsetWidth,可以都試一試。

還有一個(gè)問題就是你提到了去掉里面的i標(biāo)簽獲取的寬度就正常了,那么有沒有對(duì)所有標(biāo)簽的默認(rèn)樣式進(jìn)行統(tǒng)一的處理,因?yàn)楹芏鄻?biāo)簽都是有默認(rèn)樣式的。

2017年2月16日 13:54