이 기사에서는 Cory Laviska가 만든 구성 요소 라이브러리 인 Shoelace를 소개하지만 독특합니다. 태그, 모달 박스, 아코디언, 자동 완성 등 모든 표준 UX 구성 요소를 정의합니다. 이 구성 요소는 상자에서 벗어나 아름답고 사용하기 쉽고 완전히 사용자 정의 할 수 있습니다. 그러나 React, Solid 또는 Svelte와 같은 프레임 워크를 사용하여 이러한 구성 요소를 생성하지는 않지만 웹 구성 요소를 사용할 수 있습니다.
준비
즉, 웹 구성 요소를 SSR과 같은 도구를 사용하는 웹 응용 프로그램과 함께 "올바르게 작동"하는 다른 방법이 있습니다. 요컨대, 웹 구성 요소를 등록하는 스크립트는 태그를 구문 분석하기 전에 차단 스크립트로 실행해야합니다. 그러나 이것은 다른 게시물의 주제가 될 것입니다.
<script></script>
<link>
웹 구성 요소에서의 통화 방법 및 구독 이벤트는 사용했던 일반 프레임 워크와 약간 다를 수 있지만 너무 복잡하지는 않습니다. 그것을하는 방법을 봅시다.
태그 태그 구성 요소 ()에는 특정 태그를 수동으로 표시하는 메소드가 있습니다. 이를 호출하려면 태그의 기본 DOM 요소에 액세스해야합니다. Svelte에서 이것은
를 사용하는 것을 의미합니다. React에서는 심판이 될 것입니다. 등. Svelte를 사용하고 있으므로 태그 인스턴스 변수를 선언하겠습니다.<sl-tab-group> <sl-tab panel="general" slot="nav">General</sl-tab> <sl-tab panel="custom" slot="nav">Custom</sl-tab> <sl-tab panel="advanced" slot="nav">Advanced</sl-tab> <sl-tab disabled panel="disabled" slot="nav">Disabled</sl-tab> <sl-tab-panel name="general">This is the general tab panel.</sl-tab-panel> <sl-tab-panel name="custom">This is the custom tab panel.</sl-tab-panel> <sl-tab-panel name="advanced">This is the advanced tab panel.</sl-tab-panel> <sl-tab-panel name="disabled">This is a disabled tab panel.</sl-tab-panel> </sl-tab-group> <sl-dialog label="Dialog" no-header=""> Hello World! <sl-button> open = false}>Close</sl-button> </sl-dialog> <br><br> <button> open = true}>Open Dialog</button>
이벤트에서도 마찬가지입니다. 새 태그가 표시되면 A
이벤트가 트리거됩니다. 변수에
속성을 허용합니다. 우리의 벨트 구성 요소에서 선언 해 봅시다 : <sl-tab-group></sl-tab-group>
<sl-tab-group> <sl-tab panel="general" slot="nav">General</sl-tab> <sl-tab panel="custom" slot="nav">Custom</sl-tab> <sl-tab panel="advanced" slot="nav">Advanced</sl-tab> <sl-tab disabled panel="disabled" slot="nav">Disabled</sl-tab> <sl-tab-panel name="general">This is the general tab panel.</sl-tab-panel> <sl-tab-panel name="custom">This is the custom tab panel.</sl-tab-panel> <sl-tab-panel name="advanced">This is the advanced tab panel.</sl-tab-panel> <sl-tab-panel name="disabled">This is a disabled tab panel.</sl-tab-panel> </sl-tab-group> <sl-dialog label="Dialog" no-header=""> Hello World! <sl-button> open = false}>Close</sl-button> </sl-dialog> <br><br> <button> open = true}>Open Dialog</button>도 대화 상자를 숨기기위한
이벤트도 있습니다. 속성을 통과하고 숨겨진 이벤트에 바인딩하여 사용자가 클릭하여 대화 상자 콘텐츠 외부에서 닫을 때 재설정 할 수 있습니다. 클릭 핸들러를 해당 닫기 버튼에 추가하여 sl-hide
속성을 False로 설정하고 대화 상자를 닫습니다. open
open
마지막으로, 열린 대화 버튼 :
let tabs;<.> 그게 다야. 구성 요소 라이브러리의 API와의 상호 작용은 다소 직접적입니다. 이 기사만이 작업 만 수행하면 상당히 지루할 것입니다.
<sl-tab-group bind:this="{tabs}"></sl-tab-group>
를 개선하려고하지 않습니다. Shoelace의 제작자는 나보다 디자인이 더 좋습니다. 대신, 우리는 자신의 웹 응용 프로그램에 적응할 수 있도록
를 변경하는 방법을 살펴 봅니다.및
클래스와 A가있는 div 컨테이너를 생성하고 해당 태그에 입력 한 텍스트도 표시합니다. 그러나
섀도우 루트 내에 있습니다. 이를 통해 웹 구성 요소 저자는 웹 구성 요소에 자체 태그를 추가 할 수 있으며, 우리가 제공하는 것을 배치 할 수있는 장소를 제공 할 수 있습니다. 요소에주의를 기울이십니까? 이는 기본적으로 " "의 웹 구성 요소 태그 사이에 사용자가 렌더링하는 것을 의미합니다.
따라서 구성 요소는 그림자 루트를 생성하여 멋진 스타일 레이블 제목과 자리 표시 자 ()를 렌더링하여 콘텐츠를 렌더링합니다.
포장 스타일
스타일을 적용 할 필요는 없습니다. 대신, 지난번에 font-family
또는 :root
를 지정하고 그 아래에있는 모든 것을 상속받을 수 있습니다. 이 상속은 실제로 그림자 뿌리에 침투합니다. html
CSS 사용자 정의 속성 (일반적으로 "CSS 변수")은 관련 예외입니다. Shadow Root는 Shadow Root 외부에 정의 된 CSS 속성을 확실히 읽을 수 있습니다. font-family
)가 운이 좋지 않습니까? 우리가하지 않은 것으로 밝혀졌습니다. 위의 레이블 요소 이미지와 그림자 루트를 다시 확인하십시오. div의 속성에주의를 기울이십니까? 이를 통해
선택기를 사용하여 그림자 루트 외부에서 요소를 찾아서 스타일링 할 수 있습니다. 우리는 예제를 단계별로 소개 할 것입니다.::part
를 통해 스타일을 상속합니다
<.> StackBlitz 프로젝트의 SRC 디렉토리에서 app.css 파일을 엽니 다. 맨 아래의 cursor
구성 요소는 활성 태그의 밑줄에 대한 part
CSS 사용자 정의 속성을 읽습니다. 우리는 몇 가지 기본 CSS를 사용하여 그것을 무시할 수 있습니다.
::part
그게 다야, 이제 우리는 녹색 표시기가 있습니다!
속성을 수신합니다. 이 사실들을 사용하여 활성 태그를 찾아 커서를 변경합시다 : . 그게 다야!
커스텀 애니메이션
setDefaultAnimation
이 코드는 app.svelte 파일에 있습니다. 원래 기본 애니메이션을 보려면 댓글을 달아주십시오.
<sl-tab-group> <sl-tab panel="general" slot="nav">General</sl-tab> <sl-tab panel="custom" slot="nav">Custom</sl-tab> <sl-tab panel="advanced" slot="nav">Advanced</sl-tab> <sl-tab disabled panel="disabled" slot="nav">Disabled</sl-tab> <sl-tab-panel name="general">This is the general tab panel.</sl-tab-panel> <sl-tab-panel name="custom">This is the custom tab panel.</sl-tab-panel> <sl-tab-panel name="advanced">This is the advanced tab panel.</sl-tab-panel> <sl-tab-panel name="disabled">This is a disabled tab panel.</sl-tab-panel> </sl-tab-group> <sl-dialog label="Dialog" no-header=""> Hello World! <sl-button> open = false}>Close</sl-button> </sl-dialog> <br><br> <button> open = true}>Open Dialog</button>요약
위 내용은 프레임 워크 독립적 인 구성 요소 기반 UX 라이브러리 인 Shoelace 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!