KeyframeEffect: pseudoElement 属性
KeyframeEffect 接口的 pseudoElement 属性是一个字符串,表示正在动画的伪元素。对于不以伪元素为目标的动画,它可能为 null。它同时充当 getter 和 setter,但 CSS 生成的动画和过渡除外。
注意:如果将其设置为旧的单冒号语法,如 :before、:after、:first-letter 或 :first-line,该字符串将被转换为其双冒号现代版本(分别为 ::before、::after、::first-letter 和 ::first-line)。
值
字符串或 null。
异常
SyntaxErrorDOMException-
尝试将此属性设置为元素、无效伪元素(不存在或拼写错误)时抛出。然后该属性将保持不变。
示例
html
<div id="text">Some text</div>
<pre id="log"></pre>
css
#text::after {
content: "👹";
display: inline-block; /* Needed as the `transform` property does not apply to inline elements */
font-size: 2rem;
}
#text::before {
content: "🤠";
display: inline-block;
font-size: 2rem;
}
js
const log = document.getElementById("log");
const text = document.getElementById("text");
// Create the keyframe and launch the animation
const animation = text.animate([{ transform: "rotate(360deg)" }], {
duration: 3000,
iterations: Infinity,
pseudoElement: "::after",
});
// Get the value of KeyframeEffect.pseudoElement
function logPseudoElement() {
const keyframeEffect = animation.effect;
log.textContent = `Value of pseudoElement animated: ${keyframeEffect.pseudoElement}`;
requestAnimationFrame(logPseudoElement);
}
// Every 6 seconds, switch the pseudo-element animated
function switchPseudoElement() {
const keyframeEffect = animation.effect;
keyframeEffect.pseudoElement =
keyframeEffect.pseudoElement === "::after" ? "::before" : "::after";
setTimeout(switchPseudoElement, 6000);
}
switchPseudoElement();
logPseudoElement();
规范
| 规范 |
|---|
| Web 动画 # dom-keyframeeffect-pseudoelement |
浏览器兼容性
加载中…
另见
- Web Animations API
KeyframeEffect接口KeyframeEffect()构造函数target属性