js取得可見元素的尺寸還是比較方便的,這個可以直接使用這個方法:
幸好css中還有visibility:hidden,不可見屬性,他和display:none最大的差別就是visibility:hidden有實體尺寸。有物理尺寸就可以透過上面的方法取得尺寸,但是將display:none改成visibility:hidden後頁面就有一塊空白在那裡,即使在你獲取尺寸後在馬上將visibility:hidden改成display:none頁那部分還是會抖動一下。那麼最好的方法就是將這個隱藏的元素移出螢幕或脫離文件流( position: absolute)。這似乎非常完美了,但是悲劇又發生了,如果你要再顯示這個元素的時侯這個元素是不可見的,位置也不對,因為這是這個元素visibility:hidden;position: absolute。所以在取得尺寸後也要將樣式還原回去。就是將position和visibility屬性設回原來的樣式。
這就是js取得隱藏元素的尺寸基本實作方式,大家有興趣可以看看《精通javascript》這本書上的方法。
我這裡也做了個簡單的demo,大家可以看看原始碼: