d3中圖表大小自適應區域大小
阿新 • • 發佈:2019-02-15
d3中的圖表是使用SVG繪製的,所以圖表適應實質還是SVG的自適應大小。
為此,對於圖表的父元素比如div.container
元素,自然就是使用類似百分比佈局的方式實現放縮:
.container{
height:80%;
width:80%;
}
那麼其中的svg元素就是類似這樣的樣式:
svg{
height:100%;
width:100%;
}
繪製SVG時候程式碼改為如下:
var svg = d3.select(".container")
.append("svg")
.attr("preserveAspectRatio" , "xMidYMid meet")
.attr("viewBox", "0 0 400 400")
而不是常規的:
...
.attr("width", "400")
.attr("height", "400")
具體實現原理可自行查詢關於preserveAspectRatio
和 viewBox
的詳細內容,可以理解為對整體實現了放大縮小,因為我們沒有在其它地方修改關於width 和 height 的程式碼。
效果: