2012-04-29 59 views
-1

我已經在JavaScript中使用下一個公式創建的自定義滾動:當我使用奇數值時所觀察到滾動條數學公式錯誤

// Data used to render the scrollbar 
var height;  // Height of the viewport and of the scrollbarArea 
var scrollHeight; // Height of the content 
var scrollTop; // Scrolled position of the content from the top 

// Used formulas 
scrollbar.height = Math.round(height/scrollHeight * height); 
scrollbar.top = Math.round(scrollTop/scrollHeight * height); 

一切順利直到(scrollbar.height + scrollbar.top>高度)高度。我的意思是,由於Math.round()的兩個操作,通過添加1px甚至2px,滾動條有時會​​超出限制。我嘗試了不同的解決方法,但找不到通用解決方案,您可以推薦我做什麼?

+0

爲什麼不添加一個處理這些異常的條件'if'語句? –

+0

我不確定我是否理解你的問題,但是你可以在兩者中的一個上使用Math.floor(),而在另一個上使用Math.ceil()。那樣的話,一個總是往下走,一個總是往上移(而不是兩個取整)? –

+0

我嘗試過使用Math.ceil()和Math.floor(),但沒有幫助,嘗試過,如果語句,但他們有點不確定內容的高度增長的情況 – micnic

回答

0

嗯,注意到你的第一個公式最終會完全衝出「高度」....那是你的意圖嗎?

+0

scrollbar.height和height是兩個完全不同的變量 – micnic

+0

yes but height/scrollHeight * height = height * height/scrollheight。對我來說沒有意義,但我只有一半通過我的早晨咖啡。 – joshp