2012-01-10 29 views
26

Tôi muốn có một biểu đồ thay đổi kích thước với cửa sổ trình duyệt, nhưng vấn đề là chiều cao cố định là 400px. This JSFiddle example có cùng sự cố.Highcharts - làm cách nào để có biểu đồ có chiều cao động?

Tôi có thể làm như thế nào? Tôi đã thử sử dụng trình xử lý sự kiện chart.events.redraw để thay đổi kích thước biểu đồ (sử dụng .setSize), nhưng tôi đoán nó bắt đầu một vòng lặp không bao giờ kết thúc (trình xử lý sự kiện lửa, gọi setSize, sẽ kích hoạt một trình xử lý sự kiện khác, v.v.).

Trả lời

37

Chỉ cần không đặt thuộc tính chiều cao trong HighCharts và nó sẽ xử lý tự động cho bạn miễn là bạn đặt chiều cao trên phần tử chứa của biểu đồ. Nó có thể là một số cố định hoặc thậm chí là một phần trăm nếu vị trí là tuyệt đối.

Highcharts docs:

Theo mặc định, chiều cao được tính từ chiều cao bù đắp của chứa yếu tố

Ví dụ: http://jsfiddle.net/wkkAd/149/

#container { 
    height:100%; 
    width:100%; 
    position:absolute; 
} 
+0

Bất kỳ ý tưởng làm thế nào để làm điều này với một biểu đồ thanh? nó không hoạt động. Xem demo: http://jsfiddle.net/a40a0bjy/ –

+0

@Hanoncs quy tắc CSS của bạn có id sai. http://jsfiddle.net/a40a0bjy/3/ – tybro0103

+2

Tôi nhận thấy rằng cảm ơn. Những gì tôi thực sự cố gắng làm là để có biểu đồ phát triển vì nó có dữ liệu. Với mt bản demo nếu tôi có một thanh, nó sẽ mở rộng nó thành một thanh lớn và nếu tôi có 100 thanh, tất cả chúng đều được gộp lại với nhau. Tôi muốn làm cho trang phát triển và giữ phần đệm giữa mỗi thanh. đây là câu hỏi của tôi chưa có câu trả lời. http://stackoverflow.com/questions/30868963/highcharts-bar-chart-auto-height –

24

gì nếu bạn nối các sự kiện cửa sổ thay đổi kích thước:

$(window).resize(function() 
{  
    chart.setSize(
     $(document).width(), 
     $(document).height()/2, 
     false 
    ); 
}); 

Xem ví dụ fiddle here.

Tham chiếu API Highcharts: setSize().

+1

Tôi đoán việc này nhưng nó không cho chiều rộng của biểu đồ nếu nó khác với 100%. Xem fiddle thay đổi này: http://jsfiddle.net/DdtsD/ –

+2

@duality_, nó hoạt động cho chiều rộng nếu bạn đặt tùy chọn chỉnh lại biểu đồ thành sai. Xem ở đây: http://jsfiddle.net/6MnFA/ – Mark

+1

Đó là nó, cảm ơn bạn. –

2

Ngoài ra, bạn có thể trực tiếp sử dụng window.onresize javascript của

Một ví dụ, mã của tôi (sử dụng scriptaculos) là:

window.onresize = function(){ 
    var w = $("form").getWidth() + "px"; 
    $('gfx').setStyle({ width : w }); 
} 

đâu hình thức là một hình thức html trên trang web của tôi và gfx đồ họa highchart .

4

Xóa chiều cao sẽ khắc phục sự cố của bạn vì highchart đáp ứng theo thiết kế nếu bạn điều chỉnh màn hình của bạn cũng sẽ thay đổi kích thước.

+0

Chỉ khi tải ban đầu, nó sẽ không phản hồi. – user959690

Các vấn đề liên quan