Skip to content

Commit 887cdea

Browse files
committed
Create sparkles by cloning a template node
This means parsing the SVG with innerHTML only once
1 parent 783d76d commit 887cdea

1 file changed

Lines changed: 8 additions & 3 deletions

File tree

sparkly-text.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
let sheet;
2+
let sparkleTemplate;
23

34
class SparklyText extends HTMLElement {
45
#numberOfSparkles = 3;
@@ -95,9 +96,13 @@ class SparklyText extends HTMLElement {
9596
}
9697

9798
addSparkle() {
98-
const sparkleWrapper = document.createElement("span");
99-
sparkleWrapper.classList.add("sparkle-wrapper");
100-
sparkleWrapper.innerHTML = this.#sparkleSvg;
99+
if (!sparkleTemplate) {
100+
sparkleTemplate = document.createElement("span");
101+
sparkleTemplate.classList.add("sparkle-wrapper");
102+
sparkleTemplate.innerHTML = this.#sparkleSvg;
103+
}
104+
105+
const sparkleWrapper = sparkleTemplate.cloneNode(true);
101106
sparkleWrapper.style.top = `calc(${
102107
Math.random() * 110 - 5
103108
}% - var(--_sparkle-base-size) / 2)`;

0 commit comments

Comments
 (0)