Я немного поиграл с этой диаграммой пончиков, но она не будет отображать только с использованием метода соотношения сторон/вида.Отзывчивая диаграмма пончика d3
Я получил это, работая с функцией изменения размера окна, но у него есть ошибка - поскольку контейнер, который он может быть, может быть свернут, он может неправильно изменить размер. Я полагаю, что могу обойти это, но какие-нибудь советы о том, как это работать с прокомментированным кодом?
Что имеет значение, так это то, что на основе исходного размера окна диаграмма имеет размеры, основанные на этом ... которые могут исказить внешний вид, если окно не соответствует размеру при его запуске.
https://jsfiddle.net/7rgf09x1/9/
// WORK IN PROGRESS: Responsive using only d3.
// var svg = d3.select('#revenue-chart').append('svg')
// .attr('id', 'revenue-chart-render')
// .attr("width", '100%')
// .attr("height", '100%')
// .attr('viewBox','0 0 '+Math.min(width,height)+' '+Math.min(width,height))
// .attr('preserveAspectRatio','xMinYMin')
// .attr("transform", "translate(" + Math.min(width,height)/2 + "," + Math.min(width,height)/2 + ")");
Так, что работает хорошо, но есть еще один вопрос: Линии polyfill все еще получаю перепутались. При больших размерах этот график выглядит хорошо (IE, когда диаграмма падает до размера мобильного экрана). Но линии полифония не очень хорошо масштабируются с текстом (текст перемещается, но линии полигонов остаются неизменными). Фактически он правильно отображается (и остается правильным), если он начинается с определенного размера. Возможно, есть способ, которым я могу это использовать. – Tulun
Итак, я обычно использую размер стартового контейнера для создания диаграммы. В этом случае в сочетании с атрибутами viewbow/aspect ratio, если я просто выбираю хороший начальный размер (в моем случае, ширина ~ 780-820), он будет выглядеть так, как должен, независимо от текущего размера окна. – Tulun