نکته سریع CSS! متن گرادیان متحرک

بیایید آن جلوه متن گرادیان متحرک را با ویژگی‌های سفارشی scoped و background-clip بسازیم.

به CodePen بروید و یک قلم جدید ایجاد کنید.

برای متن خود نشانه‌گذاری ایجاد کنید. بیایید از یک هدر با کلمه "Speedy" استفاده کنیم:

<h1 class="boujee->text&q<uot>;Hello!/h1

سپس، بیایید به body خود یک background-color تیره‌تر بدهیم:

body {
  display: grid;
  place-items: center;
  min-height: 100vh;
  background: hsl(0 0% 20%);
}

font-size متن را افزایش دهید. برای واکنش‌گرا کردن آن clamp استفاده کنید:

.boujee-text {
  font-size: clamp(3rem, 25vmin, 8rem);
}

دو ویژگی سفارشی برای رنگ‌هایی که قرار است استفاده کنیم ایجاد کنید. با استفاده از این رنگ‌ها، یک linear-gradient به background اعمال کنید و آن را ۹۰ درجه بچرخانید:

.boujee-text {
  --color-one: hsl(15 90% 55%);
  --color-two: hsl(40 95% 55%);
  font-size: clamp(3rem, 25vmin, 8rem);
  background: linear-gradient(
                90deg,
                var(--color-one),
                var(--color-two),
                var(--color-one)
              ) 0 0 / 100% 100%;
}

یک ویژگی سفارشی ایجاد کنید که بتوانید برای اندازه پس‌زمینه افقی از آن استفاده کنید. از آن برای background-size-x استفاده کنید:

.boujee-text {
  --bg-size: 400%;
  --color-one: hsl(15 90% 55%);
  --color-two: hsl(40 95% 55%);
  font-size: clamp(3rem, 25vmin, 8rem);
  background: linear-gradient(
                90deg,
                var(--color-one),
                var(--color-two),
                var(--color-one)
              ) 0 0 / var(--bg-size) 100%;
}

برای چسباندن پس‌زمینه به متن، color را روی transparent تنظیم کنید و background-clip: text تنظیم کنید:

.boujee-text {
  --bg-size: 400%;
  --color-one: hsl(15 90% 55%);
  --color-two: hsl(40 95% 55%);
  font-size: clamp(3rem, 25vmin, 8rem);
  background: linear-gradient(
                90deg,
                var(--color-one),
                var(--color-two),
                var(--color-one)
              ) 0 0 / var(--bg-size) 100%;
  color: transparent;
  -webkit-background-clip: text;
  background-clip: text;
}

در این مرحله، می‌توانید آن را همان‌جا رها کنید و با background-position و gradient استفاده شده در background-image آزمایش کنید. یا می‌توانید آن gradient را در سراسر متن خود متحرک کنید. ابتدا، یک keyframe برای انیمیشن تعریف کنید. این از ویژگی سفارشی --bg-size که قبلاً تعریف کردید استفاده می‌کند. مثال خوبی از ویژگی‌های سفارشی scoped که نگهداری را برای شما آسان‌تر می‌کند.

@keyframes move-bg {
  to {
    background-position: var(--bg-size) 0;
  }
}

سپس با استفاده از animation انیمیشن را اعمال کنید:

.boujee-text {
  --bg-size: 400%;
  --color-one: hsl(15 90% 55%);
  --color-two: hsl(40 95% 55%);
  font-size: clamp(3rem, 25vmin, 8rem);
  background: linear-gradient(
                90deg,
                var(--color-one),
                var(--color-two),
                var(--color-one)
              ) 0 0 / var(--bg-size) 100%;
  color: transparent;
  background-clip: text;
  -webkit-background-clip: text;
  animation: move-bg 8s infinite linear;
}

برای پیشرفت بیشتر در این زمینه، می‌توانید کد انیمیشن خود را در یک کوئری رسانه‌ای قرار دهید تا به ترجیحات کاربر برای حرکت احترام بگذارید:

@media (prefers-reduced-motion: no-preference) {
  .boujee-text {
    animation: move-bg 8s linear infinite;
  }
  @keyframes move-bg {
    to {
      background-position: var(--bg-size) 0;
    }
  }
}

تمام شد! 🎉 شما با استفاده از ویژگی‌های سفارشی scoped و background-clip یک متن گرادیان متحرک با CSS ایجاد کرده‌اید.

این نکته را در قالب یک ویدیوی سریع ببینید! ⚡️

اینو به صورت توییت ترجیح میدی؟ 🐦

عالی بمان!