gpt4 book ai didi

javascript - 动态添加到 SVG 的元素的旋转

转载 作者:太空宇宙 更新时间:2023-11-04 13:25:13 25 4
gpt4 key购买 nike

我有一个带有 <svg> 的 HTML 页面它里面的元素。当它被加载时,矩形被动态地添加到它。每个<rect>已注册到 onclick我正在旋转它的事件。

我的问题是我想要 <rect> s 在它们的中心点旋转,而不是在它们所在的 SVG 元素的左上角旋转。我怎样才能做到这一点?

我的 HTML 代码:

<!DOCTYPE html>
<html>
<head>
<title>HTML5 Demo</title>
<script lang="javascript" src="HTML5-Script.js"></script>
</head>
<body>
<svg onload="DrawRects()" id="SVG" width="800" height="600"></svg>
</body>
</html>

我的脚本代码:

function DrawRects() {
setInterval(function () { CreateRect(); }, 2000);
}

function CreateRect() {
var svg = document.getElementById("SVG");
var svgns = "http://www.w3.org/2000/svg";
var shape = document.createElementNS(svgns, "rect");
shape.setAttributeNS(null, "x", Math.floor((Math.random() * 200) + 10));
shape.setAttributeNS(null, "y", Math.floor((Math.random() * 200) + 10));
shape.setAttributeNS(null, "width", Math.floor((Math.random() * 400) + 10));
shape.setAttributeNS(null, "height", Math.floor((Math.random() * 400) + 10));

var red = Math.floor((Math.random() * 256) + 1);
var green = Math.floor((Math.random() * 256) + 1);
var blue = Math.floor((Math.random() * 256) + 1);
var color = 'rgb(' + red + ',' + green + ',' + blue + ')';

shape.setAttributeNS(null, "fill", color);
shape.id = "R" + Math.floor((Math.random() * 50));
shape.setAttributeNS(null, "onclick", "RectClick(this)");
document.getElementById('SVG').appendChild(shape);
}

function RectClick(shape) {
Rotate(shape,0);
}

function Rotate(shape,angle) {

setInterval(function () {
angle++;
shape.style.webkitTransform = "rotate(" + angle + "deg)";
}, 60);
}

最佳答案

您可以使用 transform-origin 设置 CSS transform 属性提供的转换的原点。

https://developer.mozilla.org/en-US/docs/Web/CSS/transform-origin

关于javascript - 动态添加到 SVG 的元素的旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23779676/

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