,使其“浮”在图表上方;
通过 CSS 的 top/left(或 transform: translate(-50%, -50%) 实现真·居中)控制文本位置;使用 JS 直接操作 overlay.innerHTML 即可实时更新内容,无需重绘图表。? 完整示例代码
HTML 结构:
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart">
<div id="curve_chart"></div>
<div id="overlay" class="overlay-text">
<div>Your Text Here</div>
</div>
</div>
<button id="update" onclick="overlayUpdate()">Update Overlay</button>CSS 样式(关键定位与视觉):
#chart {
position: relative;
width: 900px;
height: 500px;
}
#curve_chart {
width: 100%;
height: 100%;
}
.overlay-text {
position: absolute;
top: 50%; /* 垂直居中基准 */
left: 50%; /* 水平居中基准 */
transform: translate(-50%, -50%); /* 精确居中(推荐)*/
font-family: 'Arial Black', sans-serif;
font-size: 48px;
font-weight: bold;
color: #e74c3c;
text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
pointer-events: none; /* 防止遮挡图表交互(如 tooltip、点击) */
z-index: 10;
}JavaScript(初始化与动态更新):
google.charts.load('current', { packages: ['corechart'] });
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
const data = google.visualization.arrayToDataTable([
['Year', 'Sales', 'Expenses'],
['2004', 1000, 400],
['2005', 1170, 460],
['2006', 660, 1120],
['2007', 1030, 540]
]);
const options = {
title: 'Company Performance',
curveType: 'function',
legend: { position: 'bottom' }
};
const chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
chart.draw(data, options);
}
// ✅ 动态更新文本(无刷新、零延迟)
function overlayUpdate() {
const overlay = document.getElementById('overlay');
overlay.innerHTML = '<div>✅ Updated at ' + new Date().toLocaleTimeString() + '</div>';
}
// ? 进阶:定时自动更新(可选)
// setInterval(overlayUpdate, 3000);⚠️ 注意事项与最佳实践
- 避免使用 top/left 像素硬编码(如 top: 100px):图表尺寸变化时易错位;优先采用 transform: translate(-50%, -50%) 实现响应式居中;
- 务必设置 pointer-events: none:否则叠加层会拦截鼠标事件,导致 tooltip 不显示、图表无法交互;
- 合理设置 z-index:确保文本层高于图表 SVG 内容(通常 z-index: 10 足够);
- 如需响应图表重绘(如窗口缩放):监听 window.resize 并重新计算 overlay 位置,或使用 ResizeObserver;
- 不建议使用 Annotation(注解)替代此方案:Annotation 本质是数据驱动的标记,位置受限于坐标轴范围,无法自由布局或脱离数据上下文。
通过该 Overlay 方案,你不仅能将文本精准置于图表中央,还可轻松扩展为动态仪表盘标题、加载状态、异常告警标签等高级交互元素——轻量、可控、专业。
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。
您即将跳转至第三方网站,请注意保护好个人信息和财产安全!
继续访问