文章出處

  

  最近在改版自已的一個網站的時候,遇到了一個問題。

  

  用jquery的width()函數獲取元素寬度的時候,返回得到的是整數,而不是小數。

  

  如下圖,谷歌上顯示的寬度為1078.89px

  

   

  而我用控制臺輸出了 console.log( $('.mid-list').width() ); 結果如下

  

    

  為了排除先入為主的認為四舍五入,我又調整了元素的寬度,為1079.1px

  

 

  得出的結果,依然是1079

  

  顯然,其算法確實是四舍五入。

  以防萬一,我又試了document.getElementById().offsetWidth,得出的結果一樣(顯然jquery沒有對js做什么過分的行為╮(╯_╰)╭)

  以上,在大多數情況下,完全符合我們對js算法的要求,也是十分合理的設定。

  但是,在這次我在改版網站的時候,打算用js來獲取父元素寬度,再以此來算出內部元素之間的margin,并賦值。

  結果不盡人意,獲取width的時候得到的數據不準確,四舍的時候還好,但是五入的時候,原本的1078.89被算成了1079,從而計算出的margin略大,導致了內部元素的間隔不準確。

  在本次情況的解決方法(只適用本次情況,類似width 五入后,導致計算值略大):將得到的width減一,也即 $('.mid-list').width() -1 , 雖然可能會導致計算出的margin略小,但是做前端的都清楚,“略大”比“略小”造成的危害要大很多

 

 

 

 

 

  


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()