목차
로, 그 반대도 마찬가지로 웨이브의 방향을 변경합니다.
웹 프론트엔드 CSS 튜토리얼 CSS에서 물결 모양 및 패턴을 만드는 방법

CSS에서 물결 모양 및 패턴을 만드는 방법

Mar 10, 2025 am 09:41 AM

How to Create Wavy Shapes & Patterns in CSS CSS에서 파도 모양을 만드는 것은 어려울 수 있습니다. 우리는 종종

속성과 많은 근사치를 사용하여 파동 효과를 시뮬레이션하려고 노력하지만 파도 패턴을 다룰 때 더 복잡해질 수 있습니다.

SVG는 파도 모양을 만드는보다 효율적인 방법이지만 CSS는 좋은 결과를 얻을 수 있으며 코드가 너무 복잡 할 필요는 없습니다. 더 좋은 점은 프로세스를 단순화하기 위해 온라인 생성기를 제공합니다! border-radius 생성기를 사용하여 생성 된 CSS 코드에는 두 개의 그라디언트와 하나의 CSS 속성 만 포함되어 있으며, 그게 전부이며 다양한 웨이브 모양과 패턴을 만들 수 있습니다. 또한 파도의 크기와 곡률을 쉽게 제어 할 수 있습니다.

일부 값은 "마법 숫자"처럼 보일 수 있지만 실제로는 논리적 인 기초가 있습니다. 우리는 코드를 해부하고 파도 창조의 모든 비밀을 밝혀 낼 것입니다.

이 기사는 다양한 지그재그, 범위 제한, 가리비 및 물결 모양의 경계를 만드는 것에 대한 이전 기사의 후속 조치입니다. 여기에 설명 된 동일한 기술을 사용하지만 더 자세히 사용 하므로이 기사를 읽는 것이 좋습니다.

파도 뒤에있는 수학적 원리 mask 엄격하게 말하면, 파도 모양을 만들기위한 마법의 공식은 없습니다. 상단 및 하부 곡선을 가진 모든 모양을 웨이브라고 할 수 있으므로 복잡한 수학적 계산으로 제한하지 않습니다. 대신, 우리는 기하학적 기준을 사용하여 파도를 재현 할 것입니다.

두 개의 원형 모양을 사용하여 간단한 예로 시작하겠습니다. 우리는 서로 인접한 동일한 반경을 가진 두 개의 원이 있습니다. 그 빨간 선을 보셨습니까? 그것은 첫 번째 라운드의 상단 절반과 2 라운드의 하단 절반을 다룹니다. 이제 그 줄을 가지고 반복한다고 상상해보십시오.

우리는 파도를 보았다. 이제 다음 결과를 얻으려면 하단 (또는 상단) 섹션을 채우자

봐! 우리는 파도 모양을 얻고 변수를 사용하여 원의 반경을 제어 할 수 있습니다. 이것은 우리가 만들 수있는 가장 쉬운 파도 중 하나이며 이전 게시물에서 보여준 파도입니다.

첫 번째 전설을 취하고 서클을 조금 움직여서 복잡성을 더 해 보겠습니다. 우리는 여전히 동일한 반경을 가진 두 개의 원이 있지만 더 이상 수평으로 정렬되지 않습니다. 이 경우 빨간색 선은 더 이상 각 원의 영역의 절반을 덮지 않고 더 작은 영역을 덮습니다. 이 영역은 점선으로 제한됩니다. 라인은 두 개의 원이 만나는 지점을 통과합니다.

이제 그 선을 가져 와서 반복하면 더 부드러운 파도를 얻을 수 있습니다.

나는 당신이 이해한다고 생각합니다. 원의 위치와 크기를 제어함으로써 원하는 파도를 만들 수 있습니다. 우리는 그들에 대한 변수를 만들 수도 있습니다.

온라인 생성기에서는 파도를 제어하기 위해 두 가지 입력을 사용한다는 것을 알았을 것입니다. 위에서 언급 한 변수에 매핑됩니다. S는 "파의 크기"이고 P는 "파의 곡률"입니다.

i i i P를 p = m*s로 정의합니다. 여기서 m은 파의 곡률을 업데이트 할 때 조정하는 변수입니다. 이를 통해 S를 업데이트하더라도 항상 동일한 곡률을 유지할 수 있습니다.

m은 0과 2 사이의 값 일 수 있습니다. 0은 두 개의 원이 수평으로 정렬되는 첫 번째 특별 사례를 제공합니다. 2는 최대 값입니다. 우리는 더 커질 수 있지만 약간의 테스트 후 2보다 큰 값이 평평한 형태가 좋지 않다는 것을 알았습니다.

원형 모양의 반경을 잊지 마십시오! 다음과 같이 S와 P를 사용하여 정의 할 수도 있습니다.

m이 0과 같으면 (즉, p는 0과 같음) r = s/2를 갖습니다.

우리는이 모든 것을 CSS의 그라디언트로 변환하는 데 필요한 모든 것을 가지고 있습니다!

그 그라디언트 생성 우리의 파도는 원을 사용하고 원과 관련하여 방사형 구배에 대해 이야기하고 있습니다. 두 원이 파도를 정의하기 때문에 2 개의 방사형 구배를 논리적으로 사용합니다.

우리는 p가 0과 같은 특별한 경우부터 시작합니다. 이것은 첫 번째 그라디언트 그림입니다 : 이 그라디언트는 첫 번째 곡률을 생성하면서 전체 바닥 영역을 채우는 동안 파도의 "물"을 채 웁니다.
<code>R = sqrt(P² + S²)/2
R = sqrt(m²*S² + S²)/2
R = S*sqrt(m² + 1)/2</code>
로그인 후 복사
로그인 후 복사

변수는 방사형 구배의 반경과 크기를 정의합니다. S 변수와 비교하면 S/2와 같습니다.

지금 두 번째 그라디언트를 추가하겠습니다 : 두 번째 그라디언트는 우리의 파도를 완성하기위한 원일뿐입니다.

이전 게시물을 보면 내가 한 일을 반복하고 있음을 알게 될 것입니다.

두 기사를 읽었지만 그라디언트 구성은 동일하지 않습니다.

이것은 동일한 결과를 달성하기 위해 다른 그라디언트 구성을 사용할 수 있기 때문입니다. 두 구성을 비교하면 약간 다른 정렬이 표시되지만 트릭은 동일합니다. 그라디언트에 익숙하지 않다면 혼란 스러울 수 있지만 걱정하지 마십시오. 일부 연습을 사용하면 익숙해지며 다른 구문이 동일한 결과를 생성 할 수 있음을 알게됩니다.

이것은 우리의 첫 번째 물결에 대한 완전한 코드입니다 :

이제이 코드를 가져 와서 조정하여 원하는 웨이브를 만들기 위해 완전히 사용할 수있는 변수를 소개하도록 조정합시다. 이전 섹션에서 보았 듯이 주요 요령은 원이 더 이상 정렬되지 않도록 원을 움직여 각 원의 위치를 ​​업데이트하는 것입니다. 우리는 첫 번째 것을 위로 올리고 두 번째는 아래로 움직입니다.

우리의 코드는 다음과 같이 보일 것입니다

나는 각 원의 중심 위치를 정의하기 위해 새로운
<code>.wave {
  --size: 50px;

  mask: radial-gradient(var(--size) at 50% 0%, #0000 99%, red 101%) 
    50% var(--size)/calc(4 * var(--size)) 100% repeat-x;
}</code>
로그인 후 복사
로그인 후 복사
변수를 도입했습니다. 첫 번째 그라디언트는 를 사용하므로 중앙이 위쪽으로 이동하고 두 번째 그라디언트는

를 사용하여 아래쪽으로 이동합니다. --size 데모는 천 단어보다 낫다 :

원은 서로 정렬되거나 서로 닿지 않습니다. 우리는 반경을 바꾸지 않고 멀리 분리하여 파도를 잃었습니다. 그러나 이전에 사용 된 것과 동일한 수학적 방법을 사용하여 새로운 반경을 계산하여 이러한 문제를 해결할 수 있습니다. r = sqrt (p² s²)/2를 기억하십시오. 우리의 경우 는 s/2와 같다. 따라서 중심 지점 사이의 거리는

: --size의 두 배나 높습니다. --p 이것은 우리에게 55.9px의 결과를 제공합니다. --p 우리의 파도가 돌아 왔습니다! CSS에 방정식을 삽입 해 봅시다 :

위의 CSS는 유효한 것처럼 보이지만 두 길이를 곱할 수 없기 때문에 작동하지 않으므로 이전 섹션에서 설명한대로 곡률을 제어하기 위해 m 변수를 도입해야합니다.
<code>R = sqrt(P² + S²)/2
R = sqrt(m²*S² + S²)/2
R = S*sqrt(m² + 1)/2</code>
로그인 후 복사
로그인 후 복사

이것은 매우 시원합니다. 속성을 ​​사용하여 모든 요소에 적용 할 수있는 멋진 파도를 얻으려면 두 개의 그라디언트 만 필요합니다. 시도하고 할 필요가 없습니다 - 두 가지 변수를 업데이트하면됩니다!

리버스 웨이브 우리가 파도가 다른 방향으로 움직이기를 원한다면 어떻게 "물"대신 "하늘"을 채 웁니다. 믿거 나 말거나, 우리는 두 가지 값 만 업데이트하면됩니다 :

내가 한 모든 것은 위와 같이 100%동일한 오프셋을 추가하는 것입니다. 결과는 다음과 같습니다.
<code>.wave {
  --size: 50px;

  mask: radial-gradient(var(--size) at 50% 0%, #0000 99%, red 101%) 
    50% var(--size)/calc(4 * var(--size)) 100% repeat-x;
}</code>
로그인 후 복사
로그인 후 복사
더 쉽게 키워드 가치 친화적 인 구문을 사용하는 것을 고려할 수 있습니다.

우리는 및

키워드를 사용하여 가장자리와 오프셋을 지정합니다. 기본적으로 브라우저 기본값은
<code>radial-gradient(var(--size) at 50% var(--size), blue 99%, #0000 101%) 
  calc(50% - 2*var(--size)) 0/calc(4 * var(--size)) 100%</code>
로그인 후 복사

로 기본적으로 100%를 사용하여 요소를 하단으로 옮깁니다. 우리는 실제로 상단에서 100% 움직여서 실제로 바닥을 말하는 것과 동일합니다. 수학보다 읽기가 더 쉽습니다! mask 이 업데이트 된 구문을 사용하여

로, 그 반대도 마찬가지로 웨이브의 방향을 변경합니다.

상단 및 하단파를 모두 얻으려면 모든 그라디언트를 하나의 진술로 결합합니다.

코드를 확인하면 모든 그라디언트를 결합하는 것 외에도 높이가 100%에서 51%로 줄어들어 요소의 절반을 커버 할 수 있습니다. 예, 51%. 간격을 피하기 위해 작은 겹침을하기 위해서는 추가로 작은 비율이 필요합니다.

<code>.wave {
  --size: 50px;

  mask:
    radial-gradient(var(--size) at 50% var(--size),#000 99%, #0000 101%) 
      calc(50% - 2*var(--size)) 0/calc(4 * var(--size)) 100%,
    radial-gradient(var(--size) at 50% 0px, #0000 99%, #000 101%) 
      50% var(--size)/calc(4 * var(--size)) 100% repeat-x;
}</code>
로그인 후 복사
왼쪽과 오른쪽은 어떻습니까?

이것은 당신의 숙제입니다! 상단과 하단에서 한 일을 활용하고 값을 업데이트하여 오른쪽과 왼쪽의 값을 얻으십시오. 걱정하지 마십시오. 쉽습니다. 당신이해야 할 유일한 일은 값을 바꾸는 것입니다.

문제가있는 경우 언제든지 온라인 생성기를 사용하여 코드를 확인하고 결과를 시각화 할 수 있습니다.

... (나머지 컨텐츠는 언어와 표현이 조정되고 그림과 코드 블록이 유지된다는 점을 제외하고 원본 텍스트와 유사합니다)
<code>.wave {
  --size: 50px;
  --p: 25px;

  mask:
    radial-gradient(var(--size) at 50% calc(var(--size) + var(--p)), #000 99%, #0000 101%) 
      calc(50% - 2*var(--size)) 0/calc(4 * var(--size)) 100%,
    radial-gradient(var(--size) at 50% calc(-1*var(--p)), #0000 99%, #000 101%) 
      50% var(--size) / calc(4 * var(--size)) 100% repeat-x;
}</code>
로그인 후 복사

위 내용은 CSS에서 물결 모양 및 패턴을 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

vue 3 vue 3 Apr 02, 2025 pm 06:32 PM

그것은#039; VUE 팀에게 그것을 끝내는 것을 축하합니다. 나는 그것이 막대한 노력과 오랜 시간이라는 것을 알고 있습니다. 모든 새로운 문서도 있습니다.

브라우저에서 유효한 CSS 속성 값을 얻을 수 있습니까? 브라우저에서 유효한 CSS 속성 값을 얻을 수 있습니까? Apr 02, 2025 pm 06:17 PM

나는 누군가이 매우 합법적 인 질문으로 글을 썼습니다. Lea는 브라우저에서 유효한 CSS 속성 자체를 얻는 방법에 대해 블로그를 작성했습니다. 이는 이와 같습니다.

CI/CD에 약간 CI/CD에 약간 Apr 02, 2025 pm 06:21 PM

"웹 사이트"는 "모바일 앱"보다 더 잘 맞지만 Max Lynch 의이 프레임이 마음에 듭니다.

끈적 끈적한 포지셔닝 및 대시 Sass가있는 쌓인 카드 끈적 끈적한 포지셔닝 및 대시 Sass가있는 쌓인 카드 Apr 03, 2025 am 10:30 AM

다른 날, 나는 Corey Ginnivan의 웹 사이트에서 스크롤 할 때 카드 모음이 서로 쌓이는 것을 발견했습니다.

WordPress 블록 편집기에서 Markdown 및 현지화 사용 WordPress 블록 편집기에서 Markdown 및 현지화 사용 Apr 02, 2025 am 04:27 AM

WordPress 편집기에서 사용자에게 직접 문서를 표시 해야하는 경우 가장 좋은 방법은 무엇입니까?

반응 형 디자인을위한 브라우저 비교 반응 형 디자인을위한 브라우저 비교 Apr 02, 2025 pm 06:25 PM

목표가 귀하의 사이트를 동시에 다른 크기로 표시하는 이러한 데스크탑 앱이 많이 있습니다. 예를 들어, 글을 쓸 수 있습니다

끈적 끈적한 헤더 및 바닥 글에는 CSS 그리드 사용 방법 끈적 끈적한 헤더 및 바닥 글에는 CSS 그리드 사용 방법 Apr 02, 2025 pm 06:29 PM

CSS 그리드는 레이아웃이 그 어느 때보 다 쉽게 레이아웃을 만들 수 있도록 설계된 속성 모음입니다. 어쨌든, 약간의 학습 곡선이 있지만 그리드는

Google 글꼴 변수 글꼴 Google 글꼴 변수 글꼴 Apr 09, 2025 am 10:42 AM

Google Fonts가 새로운 디자인 (트윗)을 출시 한 것을 볼 수 있습니다. 마지막 큰 재 설계와 비교할 때 이것은 훨씬 더 반복적 인 느낌이 듭니다. 차이를 간신히 말할 수 있습니다

See all articles