2015-02-06 46 views
0

我正在嘗試爲.Net MVC編寫一個圖形函數來生成純HTML條形圖。我想將每個欄的寬度設置爲父div的百分比,以便在用戶重新調整瀏覽器大小時圖表可以正確縮放。設置寬度爲百分比,但均勻渲染div

但是,我通常會在圖中有大約300個條,因此每個條的寬度最終計算爲1.54px(例如)。這對於瀏覽器如何呈現條形圖(至少在IE和Chrome中)會有很糟糕的事情。

Example bar chart

這種不均勻的杆的渲染消失如果我設置一個固定的寬度,以每個條帶像素的整數值(即2px的,不1.6px)。但是,如果我這樣做,圖表不會隨瀏覽器擴展。

是否存在針對此問題的「最佳實踐」解決方案?我可以使用瀏覽器縮放條而不允許條的寬度使用非整數值嗎?

編輯:另一點需要注意的是,我的老闆對第三方庫有一種病態的不信任,因此從頭開始編寫函數。

回答

0

你看過嗎http://d3js.org/這是一個圖書館的各種圖表。它負責計算空間。有很好的效果,並很容易與綁定在JavaScript中使用。

0

正如silverfighter所指出的那樣,各種圖形都有很多圖形庫。這些解決方案再次分爲基於畫布和基於HTML。基於畫布的庫可能無法在某些舊瀏覽器上運行。一些解決方案(如谷歌圖表)在處理舊瀏覽器方面稍微好一些。

因此,根據您希望爲舊瀏覽器提供的支持,您可以在這些庫之間進行選擇。一個簡單的谷歌搜索給了我下面的鏈接 http://techslides.com/50-javascript-charting-and-graphics-libraries

帆布基礎 - d3js.org,visjs.org https://developers.google.com/chart/

如果仍然迷戀上編寫自己的代碼來相對定位DIV,「自動」 「margin」css標籤的值應該有所幫助。

[編輯] - 抱歉誤讀了這個問題,並認爲問題與高度有關。使用javascript可以在圖形數據可用之後設置寬度。爲每個欄分配一個班級,計算可用寬度,然後除以總數。所以,你根據頁面大小動態獲取寬度。