文章出處
文章列表
最近在改版自已的一個網站的時候,遇到了一個問題。
用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略小,但是做前端的都清楚,“略大”比“略小”造成的危害要大很多。
文章列表
全站熱搜