javascript - 使用可变输入动态绘制/旋转 SVG
问题描述
我想从我收到的度数参数中动态地绘制/转动一个带有 React 的 SVG。它就像来自天气信息的方向箭头。
- 如何在 Javascript / ReactJS 中动态绘制 SVG?
- 如何使用可变输入转动 SVG?
我知道,您可以像这样绘制 SVG-Graphics:
function draw_square() {
var draw = SVG('square_1');
draw.size(120, 120);
var square = draw.rect(100, 100);
square.attr({ fill: '#f06' });
}
draw_square()
但是如何将不同的 svg 路径相互连接?
解决方案
我推荐一种稍微不同的方法:
const WindDirectionIcon = ({ width, height }) => {
return (
<svg
id="wind-direction-arrow"
width={width}
height={height}
viewBox="0 0 12 12"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path d="M6 0L0 12L6 9L12 12L6 0Z" fill="black" />
</svg>
);
};
export default function App() {
useEffect(() => {
const degrees = 90; // Retrieve from your API
const arrow = document.getElementById("wind-direction-arrow");
arrow.setAttribute("transform", `rotate(${degrees})`);
}, []);
return (
<div className="App">
<WindDirectionIcon width="24" height="24" />
</div>
);
}
因此 svg 本身可以由单个路径组成,我们对 javascript 所做的唯一事情就是根据您使用模板文字transform
收到的 API 数据将属性设置为旋转一定度数。
根据这个答案使用 javascript 旋转。
推荐阅读
- c - 程序来判断一个数字是偶数还是奇数。它的说法在“其他”之前没有以前的“如果”
- ios - Satellite 不会向仅适用于 ios 的 Adobe Analytics 中的报表套件发送请求
- java - 使用 maven 项目与 lotus notes 数据库连接的问题
- css - 如何在 VueJS 项目中设置 SASS(vue-cli,无 webpack 配置)
- nginx - Nginx.ingress.kubernetes.io/proxy-body-size 不工作
- php - 有没有办法从 Wordpress 访问单独的本地数据库?
- synchronization - 是否有一些用于同步本地服务器和 Azure VM 的解决方案
- android - 将文本视图与约束布局对齐
- azure - 是否可以使用转换 DNS 后缀的 Bind9 设置 DNS 转发?
- c# - 如何利用用户在 DataContext 列表中添加的信息?