最近在改版自已的一个网站的时候,遇到了一个问题。前端
用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略小,可是作前端的都清楚,“略大”比“略小”形成的危害要大不少。