Я также столкнулся с этой проблемой для этой опубликованной таблицы Google Spreadsheet . Кстати, ваш заголовок вводит в заблуждение, это не Google Chart , это еще один продукт, отличный от Google для создания действительно правильных веб-диаграмм, , который также может реагировать и также с использованием Данные электронных таблиц .
Возвращаясь к проблеме, само содержимое «Google Spreadsheet Published Chart» не отвечает, это не о том, как заставить сам iframe реагировать.
Iframe может быть отзывчивым, но мы не можем изменить содержимое диаграммы из опубликованной электронной таблицы Google, чтобы оно было отзывчивым, afaik. *.
http://jsfiddle.net/marhensa/g9op54wx/
Также есть еще один интересный трюк, подобный этому
https://codepen.io/alxfyv/pen/QEjEbp
, но проблема в iframe контент также должен быть отзывчивым .
Если вы просто хотите, чтобы это работало и было действительно просто, не используйте iframe, используйте простое адаптивное изображение , просто измените конец вашего publi shed URL-адрес таблицы Google Spreadsheet от format = interactive к format = image
К сожалению, правильный метод решения этой проблемы - это только МАСШТАБИРОВАНИЕ , как вы сказали, чтобы преобразовать / масштабировать его в своем вопросе. Если содержимое оболочки не реагирует, и вы хотите динамически изменить его размер (текст также будет меньше), как в этом записанном примере , тогда масштабирование будет. Этот пример представляет собой текст HTML и некоторую графическую страницу c, кстати, при масштабировании он ведет себя как файл SVG / изображения.
Объясняется здесь: https://css-tricks.com/scaled-proportional-blocks-with-css-and-javascript
Также сделано в Angular здесь: https://stackblitz.com/edit/angular-vagpoq
РЕДАКТИРОВАТЬ: Если вы можете жить с масштабированием и меньшими текстовыми / тонкими линиями, рабочее решение использует это JS + JQuery Метод масштабирования в HTML разделе заголовка, это написано yazzz здесь , слава ему / ему в этой ссылке, а не здесь.
<head>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js">
</script>
<script>
// this script is written by yazzz https://stackoverflow.com/a/35819751/9894532
$(function() {
$("#wrapper").each(function() {
var $wrap = $(this);
function iframeScaler(){
var wrapWidth = $wrap.width(); // width of the wrapper
var wrapHeight = $wrap.height();
var childWidth = $wrap.children("iframe").width(); // width of child iframe
var childHeight = $wrap.children("iframe").height(); // child height
var wScale = wrapWidth / childWidth;
var hScale = wrapHeight / childHeight;
var scale = Math.min(wScale,hScale); // get the lowest ratio
$wrap.children("iframe").css({"transform": "scale("+scale+")", "transform-origin": "left top" }); // set scale
};
$(window).on("resize", iframeScaler);
$(document).ready( iframeScaler);
});
});
</script>
</head>
<body>
<p>Responsive and Dynamic Iframe Scaling of Published Chart from Google Spreadsheet</p>
<p>Courtesy of <a href="https://stackoverflow.com/a/35819751/9894532">yazzz from Javascript StackOverflow</a></p>
<div id="wrapper">
<iframe width="500" height="294" seamless frameborder="0" scrolling="no" src="https://docs.google.com/spreadsheets/d/e/2PACX-1vRB4wPFarqsHWgk0ubQ6bH3YC5iwvDayAkrDg0iNPipAAszBA26QnFaPC1Xk5g8XF1ixP7jnsxiaMzL/pubchart?oid=1495533449&format=interactive"></iframe>
</div>
</body>
Также вы можете просмотреть его / ее реализацию моего образца здесь, в JS Fiddle
https://jsfiddle.net/marhensa/10radjqo