Faster,

Article: in data-sd-animate=

This title appears to be incomplete or contains HTML markup that interrupts the phrase. I’ll assume you want an article explaining the use of the HTML attribute shown—specifically the data-sd-animate attribute inside a span—and provide examples and best practices for using data- attributes for animation.

What is data-sd-animate?

data-sd-animate is a custom data attribute (an example of HTML data- attributes) that developers can use to store animation-related metadata on elements—here shown on a element. Browsers ignore unknown data- attributes, but JavaScript can read them (via dataset) and trigger animations or behaviors accordingly.

Why use data- attributes for animation?

  • Separation of concerns: Keeps HTML markup declarative while JavaScript handles behavior.
  • Flexibility: Store animation names, durations, delays, triggers, or presets directly on elements.
  • Progressive enhancement: Pages remain valid and functional when JavaScript is unavailable.

How to use it examples

1) Simple usage: store an animation name

HTML:

html
<span data-sd-animate=“fade-in”>Hello</span>

JavaScript:

js
document.querySelectorAll(’[data-sd-animate]’).forEach(el => {const name = el.dataset.sdAnimate; // “fade-in”  el.classList.add(anim-${</span><span class="text-[var(--sdm-c,inherit)] dark:text-[var(--shiki-dark,var(--sdm-c,inherit))]" style="--sdm-c: #1F2328; --shiki-dark: #E6EDF3;">name</span><span class="text-[var(--sdm-c,inherit)] dark:text-[var(--shiki-dark,var(--sdm-c,inherit))]" style="--sdm-c: #0A3069; --shiki-dark: #A5D6FF;">});});

CSS:

css
.anim-fade-in { animation: fadeIn 0.6s ease both; }@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

2) With parameters (duration, delay)

HTML:

html
<span data-sd-animate=“slide-up” data-sd-duration=“400” data-sd-delay=“200”>Hi</span>

JavaScript:

js
document.querySelectorAll(’[data-sd-animate]’).forEach(el => {  const name = el.dataset.sdAnimate;  const duration = el.dataset.sdDuration || 300;  const delay = el.dataset.sdDelay || 0;  el.style.animationDuration = ${</span><span class="text-[var(--sdm-c,inherit)] dark:text-[var(--shiki-dark,var(--sdm-c,inherit))]" style="--sdm-c: #1F2328; --shiki-dark: #E6EDF3;">duration</span><span class="text-[var(--sdm-c,inherit)] dark:text-[var(--shiki-dark,var(--sdm-c,inherit))]" style="--sdm-c: #0A3069; --shiki-dark: #A5D6FF;">}ms;  el.style.animationDelay = ${</span><span class="text-[var(--sdm-c,inherit)] dark:text-[var(--shiki-dark,var(--sdm-c,inherit))]" style="--sdm-c: #1F2328; --shiki-dark: #E6EDF3;">delay</span><span class="text-[var(--sdm-c,inherit)] dark:text-[var(--shiki-dark,var(--sdm-c,inherit))]" style="--sdm-c: #0A3069; --shiki-dark: #A5D6FF;">}ms;  el.classList.add(anim-${</span><span class="text-[var(--sdm-c,inherit)] dark:text-[var(--shiki-dark,var(--sdm-c,inherit))]" style="--sdm-c: #1F2328; --shiki-dark: #E6EDF3;">name</span><span class="text-[var(--sdm-c,inherit)] dark:text-[var(--shiki-dark,var(--sdm-c,inherit))]" style="--sdm-c: #0A3069; --shiki-dark: #A5D6FF;">});});

3) Triggering on scroll

Use IntersectionObserver to start animations when elements enter viewport.

js
const io = new IntersectionObserver((entries) => {  entries.forEach(entry => {    if (entry.isIntersecting) {      const el = entry.target;      el.classList.add(‘in-view’);      io.unobserve(el);    }  });});document.querySelectorAll(’[data-sd-animate]’).forEach(el => io.observe(el));

CSS:

css
[data-sd-animate] { opacity: 0; transform: translateY(10px); transition: opacity .4s, transform .4s; }[data-sd-animate].in-view { opacity: 1; transform: translateY(0); }

Best practices

  • Use clear attribute names and values (e.g., “fade-in”, “slide-left”).
  • Keep animation durations reasonable for accessibility.
  • Respect prefers-reduced-motion by disabling nonessential animations:
css
@media (prefers-reduced-motion: reduce) {  [data-sd-animate] { transition: none; animation: none; }}
  • Avoid overusing inline styles; prefer classes for maintainability.

Accessibility considerations

  • Provide alternatives or disable animations for users with motion sensitivity.
  • Ensure animated content remains readable and does not interfere with screen readers.

Conclusion

Using custom data attributes like data-sd-animate on span elements is a clean, flexible pattern to declaratively mark elements for animation while keeping behavior in JavaScript. It supports progressive enhancement, easy parameterization, and works well with modern APIs like IntersectionObserver.

Your email address will not be published. Required fields are marked *