为什么没有应用内联转换样式
Why are inline transform styles not being applied
所以我要做的是将字符串的每个字符映射到一个范围。对于每个跨度,我都使用内联样式,以便根据字符串中的当前位置动态更改字符的 y 位置。然后我将这个跨度字符串添加到一个变量中,该变量最终将包含转换为跨度的所有字符,然后使用 innerHTML.
将其输出到 DOM 中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<p id="output"></p>
</body>
<script>
const text = "the dog jumped over the fence";
let output = "";
let i = 0;
for (char of text) {
output += `<span style="transform: translateY(${i}px)">${char}</span>`;
i += 1;
}
document.querySelector("#output").innerHTML = output;
</script>
<style>
body {
background-color: black;
}
span {
color: green;
}
</style>
</html>
但是,我的 none 与 transform 相关的样式正在外部应用。我检查了开发人员控制台,跨度确实具有我想要的样式,但它们并未应用于实际页面。 [1] https://i.stack.imgur.com/MoDnq.png
奇怪的是,这似乎只发生在转换 CSS 属性 中。当我使用当前位置编辑每个跨度的字体大小时,我得到了预期的输出。
/* When I change the for loop to adjust the font size instead of using transform */
for (char of text) {
output += `<span style="font-size: ${i}px">${char}</span>`;
i += 1;
}
这是我得到的:[1]:https://i.stack.imgur.com/0dk21.png
当您尝试垂直翻译 span
元素时,由于内联元素在 HTML 中的工作方式,您看不到任何变化。
如果要对 span
应用翻译,您需要先将它们的显示样式更改为 inline-block
,这样您就可以对它们应用转换,同时将它们保留在同一条线。
#output span { display: inline-block; }
来自w3 css wiki:
transformable element
A transformable element is an element in one of
these categories:
all elements whose layout is governed by the CSS box model except for
non-replaced inline boxes, table-column boxes, and table-column-group
boxes [CSS2]
all SVG paint server elements, the clipPath element and SVG renderable
elements with the exception of any descendant element of text content
elements [SVG2]
CSS 转换仅适用于块元素。将您的 span
更改为块元素。
span {
display: inline-block;
color: green;
}
所以我要做的是将字符串的每个字符映射到一个范围。对于每个跨度,我都使用内联样式,以便根据字符串中的当前位置动态更改字符的 y 位置。然后我将这个跨度字符串添加到一个变量中,该变量最终将包含转换为跨度的所有字符,然后使用 innerHTML.
将其输出到 DOM 中<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<p id="output"></p>
</body>
<script>
const text = "the dog jumped over the fence";
let output = "";
let i = 0;
for (char of text) {
output += `<span style="transform: translateY(${i}px)">${char}</span>`;
i += 1;
}
document.querySelector("#output").innerHTML = output;
</script>
<style>
body {
background-color: black;
}
span {
color: green;
}
</style>
</html>
但是,我的 none 与 transform 相关的样式正在外部应用。我检查了开发人员控制台,跨度确实具有我想要的样式,但它们并未应用于实际页面。 [1] https://i.stack.imgur.com/MoDnq.png
奇怪的是,这似乎只发生在转换 CSS 属性 中。当我使用当前位置编辑每个跨度的字体大小时,我得到了预期的输出。
/* When I change the for loop to adjust the font size instead of using transform */
for (char of text) {
output += `<span style="font-size: ${i}px">${char}</span>`;
i += 1;
}
这是我得到的:[1]:https://i.stack.imgur.com/0dk21.png
当您尝试垂直翻译 span
元素时,由于内联元素在 HTML 中的工作方式,您看不到任何变化。
如果要对 span
应用翻译,您需要先将它们的显示样式更改为 inline-block
,这样您就可以对它们应用转换,同时将它们保留在同一条线。
#output span { display: inline-block; }
来自w3 css wiki:
transformable element
A transformable element is an element in one of these categories:
all elements whose layout is governed by the CSS box model except for non-replaced inline boxes, table-column boxes, and table-column-group boxes [CSS2]
all SVG paint server elements, the clipPath element and SVG renderable elements with the exception of any descendant element of text content elements [SVG2]
CSS 转换仅适用于块元素。将您的 span
更改为块元素。
span {
display: inline-block;
color: green;
}