[英]How to invert SVG textpath so the text won't be upside down?
我不知道如何使用 javascript 绘制 svg 路径,这样文本就不会颠倒了。 我想它应该被淹没在相反的方向,但我有点挣扎,所以非常感谢你的帮助。
试图得到这个👇
而是得到这个👇
这是 codepen https://codepen.io/Arneric/pen/yLboapr的链接以及我用来生成路径的函数:
const setPath = (cx, cy, r, deg) => {
let theta = deg*Math.PI/180,
dx = -r*Math.cos(theta),
dy = r*Math.sin(theta)
return `M ${cx} ${cy}
m ${dx} ${dy}
a ${r},${r} 0 1,0 ${-2*dx}, ${-2*dy}
a ${r}, ${r} 0 1,0 ${2*dx},${2*dy}`
}
如果有人能更新这个函数就完美了,这样我们就会得到想要的结果。 谢谢!
我所做的更改:
transform: rotate(90deg)
。 或者,您可以使用 deg = 180 进行转换此外,我已将半径 r 更改为较小的值,否则文本将绘制在 svg 画布之外。 您可以选择不同的 viewBox
const setPath = (cx, cy, r, deg) => { let theta = deg*Math.PI/180, dx = -r*Math.cos(theta), dy = r*Math.sin(theta) return `M ${cx+dx} ${cy+dy} a ${r},${r} 0 1,1 ${-2*dx}, ${-2*dy} a ${r}, ${r} 0 1,1 ${2*dx},${2*dy}` } let path = document.getElementById("circle-path"); path.setAttribute("d", setPath(100,100,70,90))
svg{ font-size:10px; width: 600px; height: 600px; }
<svg viewBox="0 0 200 200"> <path stroke='red' fill="none" id='circle-path' d=''></path> <text ref='big' class='text big-text text-uppercase'> <textPath text-anchor="middle" startOffset="50%" xlink:href="#circle-path">SOME TEXT THAT GOES ALONG THE CIRCLE PATH </textPath> </text> </svg>
取而代之的是:
dx = -r*Math.cos(theta),
dy = r*Math.sin(theta)
你可以用这个:
dx = r*Math.cos(theta),
dy = -r*Math.sin(theta)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.