gpt4 book ai didi

javascript - 如何防止剪裁使用 D3 库(在 Javascript 中)绘制的 SVG?

转载 作者:行者123 更新时间:2023-11-28 17:18:24 25 4
gpt4 key购买 nike

我正在尝试创建一个大的 SVG 矩形来监听鼠标点击,但无论设置的值如何,SVG 的宽度似乎都在 300 像素左右上限。我在网上阅读了大量示例,并认为这可能是由视框和视口(viewport)设置 ( http://jonibologna.com/svg-viewbox-and-viewport/ ) 引起的,但没有成功。下面是我的程序的简化版本,它演示了这个问题。

(这里还有一个 jsfiddle:http://jsfiddle.net/bologna/pyLLu6rh/)

HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.8.21/jquery-ui.min.js"></script>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<body>
<div class="container">
<div class="page-header">
<h1>Title</h1>

<p>Blah blah blah...</p>
</div>
<div id="results"></div>
<div id="legend">
<p style="font-size:80%">The orange dots represent buses as they arrive to pick up passengers, and the green dots represent people when they get to the bus stop.</p>
</div>
<div id="touch-area"></div>
</div>
<!-- /class="container">-->
</body>

这是脚本:

initGraphs();

function initGraphs() {

var svg = d3.select("#touch-area").append("svg")
.append("g");
// move range above overlay and call the overlay event handlers from there
svg.append("rect")
.attr("id", "touch-area1")
.attr("class", "touch-area1")
.attr("x", 0)
.attr("y", 0)
.attr("width", "400px")
.attr("height", "60px")
.attr("viewbox", "0 0 500 500")
.attr("fill", "blue")
.on("click", mouseclick);
};

function mouseclick() {
console.trace('mouse click!!!');
var pos = d3.mouse(this);
console.trace('mouse ' + pos[0] + ' ' + pos[1]);
};

我是 HTML5、javascript、jQuery 和 D3 的新手,所以它很可能很简单??如果你能在我开始诉诸咒语之前解决这个问题,非常感谢。

最佳答案

SVG 本身会裁剪位于 SVG 边界之外的任何内容。您的代码没有显示您是否正在做任何事情来确保 SVG 对矩形来说足够大。你需要:

var svg = d3.select("#touch-area").append("svg")
.attr("width", 400)
.attr("height", 60)
.append("g");

或者您可以通过从 css 文件设置宽度和高度来实现相同的目的(但是您必须使用 400px)。

最后,当通过 CSS 设置大小时,我遇到了至少一种浏览器(我认为是 Firefox),您还必须在其中制作 SVG display:blockdisplay:inline -block 要应用的大小。

关于javascript - 如何防止剪裁使用 D3 库(在 Javascript 中)绘制的 SVG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28243011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com