谷歌从右到左排列HTML问题

Eth*_*her 8 html javascript css google-visualization right-to-left

我在html中使用带有dir ="rtl"标签的Google Charts从右到左网页时遇到了一个奇怪的错误.

会发生什么是页面占据了一个巨大的空间并且无缘无故地向左滚动.发生在我的Chrome和Safari上.

<html lang="ar" dir="rtl">
Run Code Online (Sandbox Code Playgroud)

这是重现jsfiddle上的错误的最简单方法 https://jsfiddle.net/t4ve0kkf/

google.load('visualization', '1', {packages: ['corechart', 'bar']});
google.setOnLoadCallback(drawBasic);

function drawBasic() {

  var data = new google.visualization.DataTable();
  data.addColumn('timeofday', 'Time of Day');
  data.addColumn('number', 'Motivation Level');

  data.addRows([
    [{v: [8, 0, 0], f: '8 am'}, 1],
    [{v: [9, 0, 0], f: '9 am'}, 2],
    [{v: [10, 0, 0], f:'10 am'}, 3],
    [{v: [11, 0, 0], f: '11 am'}, 4],
    [{v: [12, 0, 0], f: '12 pm'}, 5],
    [{v: [13, 0, 0], f: '1 pm'}, 6],
    [{v: [14, 0, 0], f: '2 pm'}, 7],
    [{v: [15, 0, 0], f: '3 pm'}, 8],
    [{v: [16, 0, 0], f: '4 pm'}, 9],
    [{v: [17, 0, 0], f: '5 pm'}, 10],
  ]);

    var options = {
    title: 'Motivation Level Throughout the Day',
    hAxis: {
    title: 'Time of Day',
    format: 'h:mm a',
    viewWindow: {
    min: [7, 30, 0],
               max: [17, 30, 0]
               }
               },
               vAxis: {
               title: 'Rating (scale of 1-10)'
               }
               };

               var chart = new google.visualization.ColumnChart(
               document.getElementById('chart_div'));

  chart.draw(data, options);
}
Run Code Online (Sandbox Code Playgroud)
<html lang="ar" dir="rtl">

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
  <div id="chart_div"></div>
</html>
Run Code Online (Sandbox Code Playgroud)

我也尝试将lang和dir添加到图表div中,同时将rtl标记保留在主html中但不起作用

<div id="chart_div" lang="en" dir="ltr"> </div>
Run Code Online (Sandbox Code Playgroud)

dfs*_*fsq 4

使用页面检查器检查渲染的 HTML 似乎是这部分 HTML 导致了问题:

\n\n
<div aria-label="\xd0\x94\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb5 \xd0\xb4\xd0\xb8\xd0\xb0\xd0\xb3\xd1\x80\xd0\xb0\xd0\xbc\xd0\xbc\xd1\x8b \xd0\xb2 \xd0\xb2\xd0\xb8\xd0\xb4\xd0\xb5 \xd1\x82\xd0\xb0\xd0\xb1\xd0\xbb\xd0\xb8\xd1\x86\xd1\x8b." style="position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden;">/* ... */</div>\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以基本上“隐藏”ARIA 元素left: -10000pxrtl 文档不兼容,因为显然它会由于负左值而增加这个巨大的差距。

\n\n

解决这个问题的一种方法是强制这个 aria-lable 渲染left: auto并将其移动到顶部:

\n\n
html[dir="rtl"] svg + [aria-label] {\n    top: -1000px !important;\n    left: auto !important;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

演示: https: //jsfiddle.net/57oe0ktz/

\n