Billboard Js 图表大于其容器
Billboardjs chart bigger than it's container
在生成广告牌图表但未提供尺寸时,有时生成的 svg 会比容器大。有没有办法确保 svg 大小始终在范围内?
也就是说,没有在生成配置中提供大小。
var chart = bb.generate({
bindto: "#chart",
data: {
columns: [
["data1", 130, 200, 100, 170, 150, 250],
["data2", 130, 100, 140, 35, 110, 50]
],
types: {
data1: "line",
data2: "area-spline"
},
colors: {
data1: "red",
data2: "green"
}
}
});
setTimeout(() => {
const containerW = $("#chart").width();
const svgW = $("#chart svg").width();
console.log(`div width - ${containerW}`);
console.log(`SVG width - ${svgW}`);
});
#chart {
width: 501px;
height: 201px;
border: 1px solid green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/billboard.js/dist/billboard.min.css" />
<script src="https://cdn.jsdelivr.net/npm/billboard.js/dist/billboard.pkgd.min.js"></script>
<title>JS Bin</title>
</head>
<body>
<div id="chart"></div>
</body>
</html>
billboard.js 正在从其父节点获取维度值。具体来说,偏移值 - node.offsetWidth/offsetHeight.
根据您的示例,父级
具有边距值。 jQuery 的 .width()
returns 没有它。
所以,根据它的过程,它正在设置正确的尺寸。如果您需要处理 margin/padding 值,您可以为其放置另一个父包装器。
<div id="wrapper"> // <-- set margin/padding if you need
<div id="chart">
<svg> ...
在生成广告牌图表但未提供尺寸时,有时生成的 svg 会比容器大。有没有办法确保 svg 大小始终在范围内?
也就是说,没有在生成配置中提供大小。
var chart = bb.generate({
bindto: "#chart",
data: {
columns: [
["data1", 130, 200, 100, 170, 150, 250],
["data2", 130, 100, 140, 35, 110, 50]
],
types: {
data1: "line",
data2: "area-spline"
},
colors: {
data1: "red",
data2: "green"
}
}
});
setTimeout(() => {
const containerW = $("#chart").width();
const svgW = $("#chart svg").width();
console.log(`div width - ${containerW}`);
console.log(`SVG width - ${svgW}`);
});
#chart {
width: 501px;
height: 201px;
border: 1px solid green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/billboard.js/dist/billboard.min.css" />
<script src="https://cdn.jsdelivr.net/npm/billboard.js/dist/billboard.pkgd.min.js"></script>
<title>JS Bin</title>
</head>
<body>
<div id="chart"></div>
</body>
</html>
billboard.js 正在从其父节点获取维度值。具体来说,偏移值 - node.offsetWidth/offsetHeight.
根据您的示例,父级
具有边距值。 jQuery 的
.width()
returns 没有它。
所以,根据它的过程,它正在设置正确的尺寸。如果您需要处理 margin/padding 值,您可以为其放置另一个父包装器。
<div id="wrapper"> // <-- set margin/padding if you need
<div id="chart">
<svg> ...