>  기사  >  웹 프론트엔드  >  애니메이션 그라데이션 테두리로 멋진 카드 만들기

애니메이션 그라데이션 테두리로 멋진 카드 만들기

Patricia Arquette
Patricia Arquette원래의
2024-10-21 14:42:02896검색

이 튜토리얼에서는 UI 구성 요소에 역동적이고 시선을 사로잡는 모양을 추가할 수 있는 CSS 사용자 정의 속성을 사용하여 애니메이션 그라데이션 테두리 효과를 만드는 방법을 안내하겠습니다. 마지막에는 CSS 사용자 정의 @property를 사용하여 애니메이션 그라데이션 테두리가 있는 간단한 카드를 갖게 됩니다.

CSS Custom @property에 익숙하지 않다면 먼저 이 블로그를 읽어보세요.

기본 카드 구조

이 튜토리얼에서는 React를 사용할 것이며 기본 카드는 다음과 같습니다

import "./styles.css";

const CardAnimatedBorder = () => {
  return (
    <div className="container">
      <div className="card">This is a card with animated gradient border</div>
    </div>
  );
};

export default CardAnimatedBorder;

카드에 기본 스타일 추가하기

.container {
  width: 100%;
  height: 200px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.card {
  margin: 0 auto;
  padding: 2em;
  width: 300px;
  background: #1c1f2b;
  text-align: center;
  border-radius: 10px;
  color: #ffffff;
  position: relative;
}

간단한 테두리 만들기

그라디언트 애니메이션 테두리를 만들기 전에 간단한 테두리를 만드는 방법을 살펴보겠습니다. CSS 테두리 속성을 사용하지 않고 대신 카드에 의사 요소 ::before 및 ::after를 사용합니다. 여기서 또 다른 중요한 속성은 카드 내부에 의사 요소를 배치할 수 있는 삽입입니다. 테두리가 카드 콘텐츠 아래에 있기를 원하므로 Z-색인은 -1이 됩니다.

.card::after,
.card::before {
  content: "";
  position: absolute;
  background: red;
  inset: -4px;
  z-index: -1;
  border-radius: 10px;
}

이제 우리 카드는 이렇게 생겼습니다

Create fancy card with animated gradient border

사용자 정의 속성 추가 --angle

그라디언트 각도를 추적하기 위해 사용자 정의 속성을 추가하겠습니다. 원추형 그라데이션을 사용하겠습니다.
이와 같은 사용자 정의 속성을 추가하세요

@property --angle {
  syntax: "<angle>";
  initial-value: 0deg;
  inherits: false;
}

CSS를 다음과 같이 변경합니다

  • 그라디언트를 표시하려면 배경을 배경 이미지로 교체하세요.
  • 사용자 정의 속성 각도에 애니메이션 스핀을 추가합니다.
  • 원추형 그라데이션에는 첫 번째 인수로 각도가 있으며 애니메이션을 적용하기 위해 각도를 변경할 예정입니다.
  • 빛나는 효과를 위해 흐림 효과와 불투명도를 추가하세요.

CSS는 다음과 같아야 합니다

.container {
  width: 100%;
  height: 200px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.card {
  margin: 0 auto;
  padding: 2em;
  width: 300px;
  background: #1c1f2b;
  text-align: center;
  border-radius: 10px;
  color: #ffffff;
  position: relative;
}

@property --angle {
  syntax: "<angle>";
  initial-value: 0deg;
  inherits: false;
}
.card::after,
.card::before {
  content: "";
  position: absolute;
  background-image: conic-gradient(
    from var(--angle),
    transparent 70%,
    blue,
    red
  );
  inset: -4px;
  z-index: -1;
  border-radius: 10px;
  animation: 2s spin linear infinite;
}

.card::before {
  filter: blur(1rem);
  opacity: 0.7;
}

@keyframes spin {
  from {
    --angle: 0deg;
  }
  to {
    --angle: 360deg;
  }
}

마지막으로 애니메이션 그라데이션 테두리가 있는 카드가 생겼습니다.

데모

여기를 클릭하세요

더 읽어보세요

  • MDN 문서 @property

원본 게시물

위 내용은 애니메이션 그라데이션 테두리로 멋진 카드 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.