Zoeken...  ⌘K GitHub

TextScroll text

Scrollende marquee tekst banner.

/text-scroll
src/components/text/TextScroll.astro
---
interface Props {
  items: string[];
  speed?: number;
}
const { items = ["Google Ads", "Meta Ads", "SEO", "Content Marketing", "E-mail Flows", "CRO", "Analytics", "Social Media", "LinkedIn Ads", "Webdesign"], speed = 30 } = Astro.props;

const track = [...items, ...items];
---

<div class="tx-scroll" aria-hidden="true">
  <div class="tx-scroll__track" style={`animation-duration: ${speed}s`}>
    {track.map(item => (
      <span class="tx-scroll__item">{item}</span>
    ))}
  </div>
</div>

<style>
  :root {
    --color-accent: #6366f1;
    --color-primary: #0a0a0a;
  }
  .tx-scroll {
    overflow: hidden;
    white-space: nowrap;
    padding: 0.75rem 0;
    border-top: 1px solid #efefef;
    border-bottom: 1px solid #efefef;
  }
  .tx-scroll__track {
    display: inline-flex;
    gap: 2rem;
    animation: tx-scroll-move linear infinite;
  }
  .tx-scroll:hover .tx-scroll__track { animation-play-state: paused; }
  @keyframes tx-scroll-move {
    from { transform: translateX(0); }
    to { transform: translateX(-50%); }
  }
  .tx-scroll__item {
    font-size: 0.875rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #999;
  }
  .tx-scroll__item::after {
    content: '·';
    margin-left: 2rem;
    color: var(--color-accent);
  }
</style>

Props

Prop Type Default Beschrijving
items * string[] Scrollende items
speed number Scroll snelheid

* = verplicht