1. 程式人生 > >d3中圖表大小自適應區域大小

d3中圖表大小自適應區域大小

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")

具體實現原理可自行查詢關於preserveAspectRatioviewBox 的詳細內容,可以理解為對整體實現了放大縮小,因為我們沒有在其它地方修改關於width 和 height 的程式碼。

效果:
這裡寫圖片描述