在自己的 HTML 列中插入 Google 图表而不溢出其他列

Inserting a Google Chart inside its own HTML column without overflowing other columns

我的 HTML 页面有两列。固定宽度的左列和剩余宽度的右列。我写在左栏的应该留在左边,我写在右栏的应该留在右边。

列至少可以很好地处理文本

我想在右栏中插入一个 Google 饼图。但它不起作用:图像与左栏重叠。

饼图重叠并隐藏了左列的一部分。那不是我想要的。

怎么了?

这是我的 HTML 页面:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="myscript.js"></script>
</head>

<body onload=display()>
<title>Test</title>
<div class="leftimage">
LEFT IMAGE<br>
...    
</div>
<div id="rightwork">
RIGHT WORK
Blah blah blah just filling with some text we don't care about
...
</div>

<div class="footer">
FOOTER
</div>
</body>
</html>

这是我CSS的相关部分:

.leftimage {
    width: 180px;
    float: left;
}

.rightwork { 
             width: auto;
             overflow: hidden;
}

这是我的javascript。请注意,前几个函数用于确保加载 google 图表库。我不知道这样做是否正确,但它确实有效。

function load_google_charts() {
    console.log("loading google charts library...");
    google.load("visualization", "1", {packages:["corechart"]});
    // Set a callback to run when the Google Charts library is loaded.
    google.setOnLoadCallback(set_google_charts);
}

var google_charts_loaded = false;
if (! google_charts_loaded) {
    load_google_charts();
}

function set_google_charts() {
    console.log("google charts library is loaded");
    google_charts_loaded = true;
}

function display() {
    var pieData = new Array(['Sample','Score'],
                ['A', 10], 
                ['B', 40]);
    if (! google_charts_loaded) {
    load_google_charts();
    }
    if (google_charts_loaded) {
        var chartdata = google.visualization.arrayToDataTable(pieData);
    var chart = new google.visualization.PieChart(document.getElementById("rightwork"));
        chart.draw(chartdata);
    }
}

最后,你看到我在 HTML 页面的 'rightwork' 元素中插入了饼图,这是页面的右栏。

尝试缩小图表的 z-index,这会将其发回...

看起来您需要更改 css 中的选择器,因为您使用的是 id

#rightwork { 
   width: auto;
   overflow: hidden;
   z-index: -1;
}