찾다
웹 프론트엔드CSS 튜토리얼CSS 페인트 API : 다각형 테두리 탐색

CSS 페인트 API : 다각형 테두리 탐색

clip-path 로 복잡한 모양을 만드는 것은 간단하지만 테두리를 추가하는 것은 지속적인 도전입니다. CSS에는 강력한 솔루션이 부족하여 종종 번거로운 해결 방법이 필요합니다. 이 기사에서는 CSS 페인트 API를 사용한 솔루션을 보여줍니다.

이 CSS 페인트 API 탐색 시리즈는 계속됩니다.

  • 1 부 : 이미지 조각화 효과
  • 2 부 : Blob Animation
  • 3 부 : 다각형 국경 (현재 기사)
  • 파트 4 : 둥근 모양

이 기사는 다각형 경계 생성에 대해 자세히 설명합니다. 이 기술은 현재 크롬 기반 브라우저 (크롬, 에지, 오페라)에서만 지원됩니다. 최신 호환성 정보를 확인하십시오.

코드는 간결하고 적응성이 유지되며 모양을 수정하기 위해 약간의 변수 조정 만 필요합니다.

핵심 개념

다각형 테두리는 clip-path 와 페인트 API와 생성 된 사용자 정의 마스크를 결합하여 달성됩니다.

  1. 표준 사각형으로 시작하십시오.
  2. clip-path 적용하여 다각형으로 만들어냅니다.
  3. 다각형 테두리를 만들려면 사용자 정의 마스크를 적용하십시오.

CSS 구조

clip-path 단계의 CSS는 다음과 같습니다.

 .상자 {
  -경로 : 50% 0,100% 100%, 0 100%;

  너비 : 200px;
  높이 : 200px;
  배경 : 빨간색;
  디스플레이 : 인라인 블록;
  클립 경로 : 다각형 (var (-경로));
}

핵심은 CSS 변수 --path 입니다. clip-path 와 마스크는이 변수를 일관된 매개 변수에 사용합니다.

전체 CSS 코드는 다음과 같습니다.

 .상자 {
  -경로 : 50% 0,100% 100%, 0 100%;
  -국경 : 5px;

  너비 : 200px;
  높이 : 200px;
  배경 : 빨간색;
  디스플레이 : 인라인 블록;
  클립 경로 : 다각형 (var (-경로));
  -webkit-mask : 페인트 (다각형 국경);
}

clip-path 외에도 사용자 정의 마스크가 적용되며 --border 국경은 테두리 두께를 제어합니다. CSS는 단순하고 일반적인 상태로 유지되어 페인트 API의 사용 편의성을 강조합니다.

JavaScript 구현

페인트 API 구조를 더 잘 이해하려면이 시리즈의 1 부를 참조하십시오.

paint() 함수의 JavaScript 코드 :

 const points = properties.get ( '-path'). toString (). split ( ',');
const b = parsefloat (properties.get ( '-border'). value);
const w = size.width;
const h = size.height;

const cc = function (x, y) {
  // ...
}

var p = points [0] .trim (). split ( "");
p = cc (p [0], p [1]);

ctx.beginpath ();
ctx.moveto (p [0], p [1]);
for (var i = 1; i <points.length i p="points" .trim split ctx.lineto ctx.closepath ctx.linewidth="2" b ctx.strokestyle="'black';" ctx.stroke><p> 코드는 <code>--path</code> 변수를 읽고 포인트 배열로 변환 한 다음 <code>moveTo</code> 와 <code>lineTo</code> 사용하여 다각형을 그립니다. 이 다각형은 <code>clip-path</code> 다각형을 반영합니다. 스트로크는 국경을 만듭니다. 모양의 채우기는 투명합니다.</p><p> 경로와 두께를 수정하면 다양한 다각형 테두리가 가능합니다. 그라디언트 및 이미지는 CSS <code>background</code> 속성을 사용하여 단색을 대체 할 수 있습니다.</p><p> 컨텐츠를 통합하려면 클리핑을 방지하려면 의사 요소가 필요합니다. 마스크 속성은 의사 요소로 이동하는 반면 <code>clip-path</code> 기본 요소에 남아 있습니다.</p><h3 id="자주-묻는-질문"> 자주 묻는 질문</h3><p> 제공된 스크립트와 관련하여 몇 가지 일반적인 질문이 아래에 다루어집니다.</p><h4 id="code-cc-code-함수는-무엇입니까"> <code>cc()</code> 함수는 무엇입니까?</h4><p> 이 함수는 포인트 좌표 (백분율 또는 픽셀 값)를 캔버스 요소 내에서 사용할 수있는 픽셀 값으로 변환합니다.</p><pre class="brush:php;toolbar:false"> const cc = function (x, y) {
  var fx = 0, fy = 0;
  if (x.indexof ( '%')> -1) {
    fx = (parsefloat (x)/100)*w;
  } else if (x.indexof ( 'px')> -1) {
    fx = parsefloat (x);
  }
  if (y.indexof ( '%')> -1) {
     fy = (parsefloat (y)/100)*h;
  } else if (y.indexof ( 'px')> -1) {
    fy = parsefloat (y);
  }
  반환 [fx, fy];
}

마스크가 이미 클립을 클립하는 경우 clip-path 사용하는 이유는 무엇입니까?

마스크 만 사용하면 뇌졸중 정렬 및 호버 가능한 영역에 문제가 발생합니다. clip-path 이러한 문제를 해결합니다.

국경 값과 함께 @property 사용하는 이유는 무엇입니까?

@property 사용자 정의 속성을 등록하여 유형을 정의합니다 (이 경우,<length></length> ), 브라우저 인식을 활성화하고 문자열이 아니라 유효한 유형으로 처리합니다. 이것은 다양한 길이 단위를 허용합니다.

--path 변수는 어떻습니까?

--path 변수는 @property 에 복잡한 유형을 등록하는 데 제한이 있기 때문에 문자열로 처리됩니다. cc() 함수는 문자열-픽셀 변환을 처리합니다.

우리는 돌진을 가질 수 있습니까?

예, ctx.setLineDash() 사용합니다. 추가 변수는 대시 패턴을 제어합니다.

대시 변수에 @property 사용하지 않는 이유는 무엇입니까?

기술적으로 가능하지만 paint() 내에서 값을 검색하는 것은 문제가되는 것으로 판명되었습니다. 지금은 --dash 변수가 문자열로 취급됩니다.

실제 응용 프로그램

몇 가지 사용 사례는 다각형 테두리 기술을 보여줍니다.

  • 버튼 : 호버 효과로 사용자 정의 모양의 버튼을 만듭니다.
  • 빵 부스러기 : Breadcrumb Navigation을 단순화하십시오.
  • 카드 공개 애니메이션 : 호버 효과 또는 공개 애니메이션을위한 애니메이션 테두리 두께.
  • 콜 아웃 및 음성 버블 : 복잡한 모양에 테두리를 쉽게 추가하십시오.
  • 애니메이션 대시 : setLineDash()lineDashOffset 사용하여 다양한 대시 애니메이션을 만듭니다.

이 기사는 CSS Paint API를 사용하여 다각형 테두리 생성에 대한 포괄적 인 안내서를 제공하여 모양 스타일의 유연성과 효율성을 제공합니다.

위 내용은 CSS 페인트 API : 다각형 테두리 탐색의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

CSS 그리드는 복잡하고 반응이 좋은 웹 레이아웃을 만드는 강력한 도구입니다. 디자인을 단순화하고 접근성을 향상 시키며 이전 방법보다 더 많은 제어를 제공합니다.

CSS Flexbox 란 무엇입니까?CSS Flexbox 란 무엇입니까?Apr 30, 2025 pm 03:20 PM

기사는 반응 형 설계에서 공간의 효율적인 정렬 및 분포를위한 레이아웃 방법 인 CSS Flexbox에 대해 설명합니다. Flexbox 사용을 설명하고 CSS 그리드와 비교하고 브라우저 지원 세부 사항을 설명합니다.

CSS를 사용하여 웹 사이트를 반응하게 만드는 방법은 무엇입니까?CSS를 사용하여 웹 사이트를 반응하게 만드는 방법은 무엇입니까?Apr 30, 2025 pm 03:19 PM

이 기사는 Viewport Meta 태그, 유연한 그리드, 유체 미디어, 미디어 쿼리 및 상대 장치를 포함하여 CSS를 사용하여 반응 형 웹 사이트를 만드는 기술에 대해 설명합니다. 또한 CSS 그리드 및 Flexbox를 함께 사용하여 CSS 프레임 워크를 권장합니다.

CSS 박스 크기 부동산은 무엇을합니까?CSS 박스 크기 부동산은 무엇을합니까?Apr 30, 2025 pm 03:18 PM

이 기사는 요소 치수 계산 방법을 제어하는 ​​CSS 박스 크기 속성에 대해 설명합니다. Content-Box, Border-Box 및 Padding-Box와 같은 값과 레이아웃 설계 및 형태 정렬에 미치는 영향을 설명합니다.

CSS를 사용하여 어떻게 애니메이션 할 수 있습니까?CSS를 사용하여 어떻게 애니메이션 할 수 있습니까?Apr 30, 2025 pm 03:17 PM

기사는 CSS, 주요 특성 및 JavaScript와 결합 된 애니메이션 작성에 대해 논의합니다. 주요 문제는 브라우저 호환성입니다.

CSS를 사용하여 프로젝트에 3D 변환을 추가 할 수 있습니까?CSS를 사용하여 프로젝트에 3D 변환을 추가 할 수 있습니까?Apr 30, 2025 pm 03:16 PM

기사는 3D 변환, 주요 속성, 브라우저 호환성 및 웹 프로젝트에 대한 성능 고려 사항에 대한 CSS 사용에 대해 논의합니다. (문자 수 : 159)

CSS에 기울기를 추가 할 수있는 방법은 무엇입니까?CSS에 기울기를 추가 할 수있는 방법은 무엇입니까?Apr 30, 2025 pm 03:15 PM

이 기사는 CSS 그라디언트 (선형, 방사형, 반복)를 사용하여 웹 사이트 비주얼을 향상시키고 깊이, 초점 및 현대적인 미학을 추가합니다.

CSS의 의사 요소는 무엇입니까?CSS의 의사 요소는 무엇입니까?Apr 30, 2025 pm 03:14 PM

기사는 CSS의 의사 요소, HTML 스타일을 향상시키는 데 사용 및 의사 급의 차이점에 대해 설명합니다. 실제 사례를 제공합니다.

See all articles

핫 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 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.