最近在改版自已的一個網站的時候,遇到了一個問題。前端
用jquery的width()函數獲取元素寬度的時候,返回獲得的是整數,而不是小數。jquery
以下圖,谷歌上顯示的寬度爲1078.89px算法
而我用控制檯輸出了 console.log( $('.mid-list').width() ); 結果以下函數
爲了排除先入爲主的認爲四捨五入,我又調整了元素的寬度,爲1079.1px網站
得出的結果,依然是1079spa
顯然,其算法確實是四捨五入。blog
以防萬一,我又試了document.getElementById().offsetWidth,得出的結果同樣(顯然jquery沒有對js作什麼過度的行爲╮(╯_╰)╭)get
以上,在大多數狀況下,徹底符合咱們對js算法的要求,也是十分合理的設定。console
可是,在此次我在改版網站的時候,打算用js來獲取父元素寬度,再以此來算出內部元素之間的margin,並賦值。方法
結果不盡人意,獲取width的時候獲得的數據不許確,四舍的時候還好,可是五入的時候,本來的1078.89被算成了1079,從而計算出的margin略大,致使了內部元素的間隔不許確。
在本次狀況的解決方法(只適用本次狀況,相似width 五入後,致使計算值略大):將獲得的width減一,也即 $('.mid-list').width() -1 , 雖然可能會致使計算出的margin略小,可是作前端的都清楚,「略大」比「略小」形成的危害要大不少。