gpt4 book ai didi

javascript - 我如何使用 d3.js 为我的 svg 元素的顶部制作动画,就像在这个 gif 中一样?

转载 作者:行者123 更新时间:2023-11-30 14:41:53 25 4
gpt4 key购买 nike

如果标题不正确,我深表歉意,但我不确定应该是什么。我正在尝试为 "marker.svg" 文件中包含的 svg 图像标记设置动画。我想复制这个 gif 的完全相同的效果:

enter image description here

但在我看来,似乎只有标记的顶部是动画的。

在我的代码中,主要问题是标记从其原点移动。这是我目前的结果: enter image description here

如何制作匹配gif的动画?

谢谢。

  <body>

<script type="text/javascript">

const svg = d3.select("body").append("svg").attr("width",1000).attr("height",1000);

svg.append("circle").attr("r",5).attr("cx",253).attr("cy",102).style("stroke","#FF0000");

var widthMarker=50;
var img = svg.append("svg:image")
.attr("xlink:href", "marker.svg")
.attr("width", widthMarker)
.attr("height", widthMarker)
.attr("x", 228)
.attr("y",53)
.on('mouseover', function(){
d3.select(this).transition().ease("bounce").duration(500).attr("height",widthMarker+50);
})
.on('mouseout', function(){
d3.select(this).transition().ease("bounce").duration(500).attr("height",widthMarker);
})

</script>
</body>

http://plnkr.co/edit/IqebfdBikFcezCnz2YxA?p=preview

最佳答案

我在 mouseover 和 mouseout 上弄乱了“y”坐标属性,我得到了你要找的结果。

<body>
<script type="text/javascript">
const svg = d3.select("body").append("svg").attr("width", 1000).attr("height", 1000);

svg.append("circle").attr("r", 5).attr("cx", 253).attr("cy", 102).style("stroke", "#FF0000");

var widthMarker = 50;
var img = svg.append("svg:image")
.attr("xlink:href", "marker.svg")
.attr("width", widthMarker)
.attr("height", widthMarker)
.attr("x", 228)
.attr("y", 50)
.on('mouseover', function() {
d3.select(this)
.transition()
.ease("bounce")
.duration(500)
.attr("height", widthMarker + 50)
.attr("y", 17);
})
.on('mouseout', function() {
d3.select(this)
.transition()
.ease("bounce")
.duration(500)
.attr("height", widthMarker)
.attr("y", 50);
})
</script>
</body>

这是更新的 Plunkr .

关于javascript - 我如何使用 d3.js 为我的 svg 元素的顶部制作动画,就像在这个 gif 中一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49524398/

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