我在这里遇到了一个大麻烦。svg元素的textPath标记中有一些文本需要翻转180度。我已经使用了所有可以与css一起工作的方法,但绝对没有一种方法起作用。有人能帮我翻转元素中的文本吗。
null
function Init() {
let w = wrap.clientWidth;
let h = wrap.clientHeight;
ellipse.setAttributeNS(null, "viewBox", `0 0 ${w} ${h}`);
let d = `M${w / 10},${h / 2}A${4 * w / 10},${4 * h / 10} 0 0 0 ${9 *
w /
10} ${5 * h / 10} A${4 * w / 10},${4 * h / 10} 0 0 0 ${w / 10} ${5 *
h /
10} A${4 * w / 10},${4 * h / 10} 0 0 0 ${9 * w / 10} ${5 * h / 10} A${4 *
w /
10},${4 * h / 10} 0 0 0 ${w / 10} ${5 * h / 10}`;
thePath.setAttributeNS(null, "d", d);
let path_length = thePath.getTotalLength();
//begin at a bigger size than needed
let font_size = 100;
ellipse.style.fontSize = font_size+"px";
// while the text length is bigger than half path length
while(tp.getComputedTextLength() > path_length / 2 ){
//reduce the font size
font_size -=.25;
//reset the font size
ellipse.style.fontSize = font_size+"px";
}
}
window.setTimeout(function() {
Init();
window.addEventListener("resize", Init, false);
}, 15);
let so = 0;
function Marquee() {
requestAnimationFrame(Marquee);
tp.setAttributeNS(null, "startOffset", so + "%");
if (so >= 50) {
so = 0;
}
so += 0.02;
}
Marquee();
html, body {
margin: 0;
height: 100%;
width: 100%;
}
body {
font-family: "Arimo", sans-serif;
}
#wrap{
width:100%;
height:100%;
position: fixed;
top: 0;
left: 0;
}
text {
text-transform: uppercase;
font-weight: lighter;
}
<div id="wrap">
<svg id="ellipse" version="1.1" viewBox="0 0 1000 1000">
<path id="thePath" fill="transparent" d="M100,500A400,400 0 0 0 900 500 A400,400 0 0 0 100 500" />
<text stroke="black">
<textPath xlink:href="#thePath" dy="5" id="tp" lengthAdjust="spacingAndGlyphs">Coming Soon • Coming Soon • Coming Soon • Coming Soon • Coming Soon • Coming Soon • Coming Soon •</textPath>
</text>
</svg>
</div>
null
正如我所说的,你需要改变这条路。由于路径是由脚本控制的,您需要在函数Init中更改d变量的值
null
function Init() {
let w = wrap.clientWidth;
let h = wrap.clientHeight;
ellipse.setAttributeNS(null, "viewBox", `0 0 ${w} ${h}`);
let d = `M${9*w / 10},${h / 2}
A${4 * w / 10},${4 * h / 10} 0 0 1 ${w / 10} ${5 * h / 10}
A${4 * w / 10},${4 * h / 10} 0 0 1 ${9 * w / 10} ${5 * h / 10}
A${4 * w / 10},${4 * h / 10} 0 0 1 ${w / 10} ${5 * h / 10}
A${4 * w / 10},${4 * h / 10} 0 0 1 ${9 * w / 10} ${5 * h / 10} `;
thePath.setAttributeNS(null, "d", d);
let path_length = thePath.getTotalLength();
//begin at a bigger size than needed
let font_size = 100;
ellipse.style.fontSize = font_size+"px";
// while the text length is bigger than half path length
while(tp.getComputedTextLength() > path_length / 2 ){
//reduce the font size
font_size -=.25;
//reset the font size
ellipse.style.fontSize = font_size+"px";
}
}
window.setTimeout(function() {
Init();
window.addEventListener("resize", Init, false);
}, 15);
let so = 0;
function Marquee() {
requestAnimationFrame(Marquee);
tp.setAttributeNS(null, "startOffset", so + "%");
if (so >= 50) {
so = 0;
}
so += 0.02;
}
Marquee();
css lang-css prettyprint-override">html, body {
margin: 0;
height: 100%;
width: 100%;
}
body {
font-family: "Arimo", sans-serif;
}
#wrap{
width:100%;
height:100%;
position: fixed;
top: 0;
left: 0;
}
text {
text-transform: uppercase;
font-weight: lighter;
}
<div id="wrap">
<svg id="ellipse" version="1.1" viewBox="0 0 1000 1000">
<path id="thePath" fill="transparent" />
<text stroke="black">
<textPath xlink:href="#thePath" dy="5" id="tp" lengthAdjust="spacingAndGlyphs">Coming Soon • Coming Soon • Coming Soon • Coming Soon • Coming Soon • Coming Soon • Coming Soon •</textPath>
</text>
</svg>
</div>
尝试在父SVG中定位电池指示器。SVG元素有一个电池的路径和一个显示百分比的文本元素。它的位置有两个css转换和文本属性。文本在Chrome/Firefox中打开时定位正确,但在Safari中会产生分支。 代码本https://Codepen.io/niwsa/pen/rnnbkeg?editors=1000
问题内容: 是否可以通过 对SVG元素 进行 3D转换 来实现透视? 我说的是与《星球大战》首部作品的3d透视图相似的事物。这是一个使用 CSS3 3d转换达到预期效果的jsfiddle: __ 问题答案: 2018年11月更新: 在最新的chrome和Firefox中可以测试该问题的片段。尽管对svg元素的3d转换的支持不是很广泛,但是浏览器正在越来越多地实现它。 来源答案: SVG元素不支持3
我在一个具有特定ID的div中使用javascript创建了一个SVG元素。我的主要目标是获得SVG图像,让用户下载它。 因此,我的想法可能是绝对错误的,是使用,获取子元素,这是我的SVG,然后执行以获取字符串并将其保存到某个位置。我可以看到元素,我知道它在那里,但当我从vaadin打印容器元素时,它没有任何子元素。 我的情况: 我从内容中得到什么,其中是我的DIV,ID: 我错过了什么? 如果这
本文向大家介绍SVG 翻译,包括了SVG 翻译的使用技巧和注意事项,需要的朋友参考一下 示例 将矩形向右移动10个单位,向下移动20个单位: 将其水平移动0个单位,向上移动20个单位: 将其向左移动10个单位,垂直移动0个单位:
我在我的网站上使用svg图标,想把它们的颜色改成红色(它们都是黑色的)。 我试着在img标签上使用css-fill属性,但它不起作用。然后我遇到了对象attr,并尝试使用svg图标,如下所示: 在这里,在对象上应用填充属性什么也不做。关于如何在不使用jQuery的情况下更改svg元素的填充属性的任何想法 JSFIDLE
此外,我尝试以以下方式使用对象标记: 但是,同样,如果我用CSS指令或将类应用到对象标记,则不会发生任何变化。有什么想法可以实现我想要的吗?