프레임 워크 독립적 인 구성 요소 기반 UX 라이브러리 인 Shoelace 소개
이 기사에서는 Cory Laviska가 만든 구성 요소 라이브러리 인 Shoelace를 소개하지만 독특합니다. 태그, 모달 박스, 아코디언, 자동 완성 등 모든 표준 UX 구성 요소를 정의합니다. 이 구성 요소는 상자에서 벗어나 아름답고 사용하기 쉽고 완전히 사용자 정의 할 수 있습니다. 그러나 React, Solid 또는 Svelte와 같은 프레임 워크를 사용하여 이러한 구성 요소를 생성하지는 않지만 웹 구성 요소를 사용할 수 있습니다.
준비
서버 측 렌더링 (SSR)
이 글을 쓰는 시점에서 SSR에 대한 지원도 가난합니다. 이론적으로 SSR을 구현할 수있는 선언 섀도우 Dom (DSD)이라는 기술이 있습니다. 그러나 브라우저 지원이 제한되어 있으며 DSD는 실제로
서버 지원이 올바르게 작동하기 위해 필요합니다. 즉, 다음, 리믹스 또는 서버에서 사용하는 다른 도구에는 특별한 처리 능력이 필요합니다. 즉, 웹 구성 요소를 SSR과 같은 도구를 사용하는 웹 응용 프로그램과 함께 "올바르게 작동"하는 다른 방법이 있습니다. 요컨대, 웹 구성 요소를 등록하는 스크립트는 태그를 구문 분석하기 전에 차단 스크립트로 실행해야합니다. 그러나 이것은 다른 게시물의 주제가 될 것입니다.
시작
Shoelace를 설치 한 후 일부 컨텐츠를 렌더링하여 완전히 사용자 정의하는 단계를 살펴 보겠습니다. 더 복잡한 콘텐츠를 선택하기 위해 태그와 대화 상자 (종종 모달 박스라고 함) 구성 요소를 사용했습니다. 다음은 주로 문서에서 나오는 몇 가지 태그입니다.
<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
이벤트가 트리거됩니다. 변수에를 사용할 수 있거나 Svelte 's 바로 가기를 사용할 수 있습니다.
대화 대화 상자가 열려 있는지 여부를 제어하는 대화 상자 구성 요소 ()는
속성을 허용합니다. 우리의 벨트 구성 요소에서 선언 해 봅시다 : <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;
<sl-tab-group bind:this="{tabs}"></sl-tab-group>
를 개선하려고하지 않습니다. Shoelace의 제작자는 나보다 디자인이 더 좋습니다. 대신, 우리는 자신의 웹 응용 프로그램에 적응할 수 있도록
를 변경하는 방법을 살펴 봅니다.
Quick View Shadow dom
DevTools에서 태그 제목 중 하나를 봅니다
우리의 태그 요소는 및
클래스와 A 가있는 div 컨테이너를 생성하고 해당 태그에 입력 한 텍스트도 표시합니다. 그러나
섀도우 루트 내에 있습니다. 이를 통해 웹 구성 요소 저자는 웹 구성 요소에 자체 태그를 추가 할 수 있으며, 우리가 제공하는 것을 배치 할 수있는 장소를 제공 할 수 있습니다. 요소에주의를 기울이십니까? 이는 기본적으로 " "의 웹 구성 요소 태그 사이에 사용자가 렌더링하는 것을 의미합니다.
따라서 구성 요소는 그림자 루트를 생성하여 멋진 스타일 레이블 제목과 자리 표시 자 ()를 렌더링하여 콘텐츠를 렌더링합니다.
포장 스타일
웹 개발에서 고전적이고 더 실망스러운 문제는 항상 우리가 나타나기를 원하지 않는 스타일 캐스케이드였습니다. 응용 프로그램의 모든 스타일 규칙이
와 같은 것을 지정하는 모든 스타일 규칙이 이러한 태그를 방해 할 것이라고 걱정할 수 있습니다. 이것은 문제가되지 않는다는 것이 밝혀졌습니다. 그림자 뿌리 외부의 스타일은 그림자 루트 내부에있는 내용에 영향을 미치지 않습니다 (나중에 논의 할 예외 포함). 이것에 대한 예외는 상속 가능한 스타일입니다. 물론 웹 애플리케이션의 모든 요소에
스타일을 적용 할 필요는 없습니다. 대신, 지난번에 font-family
또는 :root
를 지정하고 그 아래에있는 모든 것을 상속받을 수 있습니다. 이 상속은 실제로 그림자 뿌리에 침투합니다. html
CSS 사용자 정의 속성 (일반적으로 "CSS 변수")은 관련 예외입니다. Shadow Root는 Shadow Root 외부에 정의 된 CSS 속성을 확실히 읽을 수 있습니다. font-family
선택기
상속되지 않은 스타일은 어떻습니까? 그림자 루트 내부에서 무언가를 사용자 정의하고 싶다면 (예 : 상속하지 않은 )가 운이 좋지 않습니까? 우리가하지 않은 것으로 밝혀졌습니다. 위의 레이블 요소 이미지와 그림자 루트를 다시 확인하십시오. div의 속성에주의를 기울이십니까? 이를 통해
선택기를 사용하여 그림자 루트 외부에서 요소를 찾아서 스타일링 할 수 있습니다. 우리는 예제를 단계별로 소개 할 것입니다.
슈퍼 슈트 스타일을 덮어 쓴 ::part
이 방법의 실제 적용을 보자. 현재 많은 신발 끈 스타일 (글꼴 포함)은 CSS 사용자 정의 속성으로부터 기본값을받습니다. 이러한 글꼴을 응용 프로그램의 스타일에 맞추려면 관련 사용자 정의 속성을 무시하십시오. CSS 변수 Shoelace가 사용하는 문서를 참조하거나 DevTools의 주어진 요소의 스타일을 간단히 확인할 수 있습니다.
섀도우 루트 를 통해 스타일을 상속합니다
<.> StackBlitz 프로젝트의 SRC 디렉토리에서 app.css 파일을 엽니 다. 맨 아래의 섹션에는 문이 표시됩니다. 속성은 상속 가능하므로 와 같은 새 값을 설정하십시오. 저장 후 모든 컨텐츠 (Shadow Root에 정의 된 태그 제목 포함)가 그에 따라 조정됩니다.
슈트 슈트로 작성 CSS 변수
cursor
구성 요소는 활성 태그의 밑줄에 대한 part
CSS 사용자 정의 속성을 읽습니다. 우리는 몇 가지 기본 CSS를 사용하여 그것을 무시할 수 있습니다.
::part
그게 다야, 이제 우리는 녹색 표시기가 있습니다!
문의 부품
Shoelace 버전에서 현재 사용중인 (2.0.0-Beta.83), 비 장비 태그에는 포인터 커서가 있습니다. 활성 (선택한) 태그의 기본 커서로 변경해 봅시다. 태그 제목의 컨테이너에 요소가 A
속성을 추가하는 것을 보았습니다. 또한, 현재 선택된 태그는 속성을 수신합니다. 이 사실들을 사용하여 활성 태그를 찾아 커서를 변경합시다 : .
그게 다야!
커스텀 애니메이션
케이크에 착빙을 추가하려면 Shoelace가 애니메이션을 사용자 정의 할 수있는 방법을 살펴 보겠습니다. Shoelace는 웹 애니메이션 API를 사용하고 A
API를 노출하여 다양한 요소가 다양한 상호 작용을 애니메이션하는 방법을 제어합니다. 자세한 내용은 설명서를 참조하십시오. 예를 들어, Shoelace의 기본 대화 상자 애니메이션을 최상위 애니메이션에서 입력하고 숨겨져있을 때 아래로 이동하는 것부터 Shoelace의 기본 대화 상자 애니메이션을 변경하는 방법은 다음과 같습니다.
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>
로그인 후 복사로그인 후 복사로그인 후 복사 요약
Shoelace는 웹 구성 요소를 사용하여 제작 된 매우 야심 찬 구성 요소 라이브러리입니다. 웹 구성 요소에는 프레임 워크가 없으므로 모든 프로젝트의 프레임 워크와 함께 사용할 수 있습니다. 새로운 프레임 워크가 놀라운 성능 기능과 사용 편의성을 보여주기 시작함에 따라 두 프레임 워크에 의해 구속되지 않은 품질의 사용자 경험 구성 요소를 사용할 수 있다는 것은 그 어느 때보 다 매력적입니다.
및
클래스와 A가있는 div 컨테이너를 생성하고 해당 태그에 입력 한 텍스트도 표시합니다. 그러나
섀도우 루트 내에 있습니다. 이를 통해 웹 구성 요소 저자는 웹 구성 요소에 자체 태그를 추가 할 수 있으며, 우리가 제공하는 것을 배치 할 수있는 장소를 제공 할 수 있습니다. 요소에주의를 기울이십니까? 이는 기본적으로 " "의 웹 구성 요소 태그 사이에 사용자가 렌더링하는 것을 의미합니다.
따라서 구성 요소는 그림자 루트를 생성하여 멋진 스타일 레이블 제목과 자리 표시 자 ()를 렌더링하여 콘텐츠를 렌더링합니다.
포장 스타일
이것에 대한 예외는 상속 가능한 스타일입니다. 물론 웹 애플리케이션의 모든 요소에
스타일을 적용 할 필요는 없습니다. 대신, 지난번에 font-family
또는 :root
를 지정하고 그 아래에있는 모든 것을 상속받을 수 있습니다. 이 상속은 실제로 그림자 뿌리에 침투합니다. html
CSS 사용자 정의 속성 (일반적으로 "CSS 변수")은 관련 예외입니다. Shadow Root는 Shadow Root 외부에 정의 된 CSS 속성을 확실히 읽을 수 있습니다. font-family
)가 운이 좋지 않습니까? 우리가하지 않은 것으로 밝혀졌습니다. 위의 레이블 요소 이미지와 그림자 루트를 다시 확인하십시오. div의 속성에주의를 기울이십니까? 이를 통해
선택기를 사용하여 그림자 루트 외부에서 요소를 찾아서 스타일링 할 수 있습니다. 우리는 예제를 단계별로 소개 할 것입니다.
슈퍼 슈트 스타일을 덮어 쓴 ::part
이 방법의 실제 적용을 보자. 현재 많은 신발 끈 스타일 (글꼴 포함)은 CSS 사용자 정의 속성으로부터 기본값을받습니다. 이러한 글꼴을 응용 프로그램의 스타일에 맞추려면 관련 사용자 정의 속성을 무시하십시오. CSS 변수 Shoelace가 사용하는 문서를 참조하거나 DevTools의 주어진 요소의 스타일을 간단히 확인할 수 있습니다.
::part
를 통해 스타일을 상속합니다
<.> StackBlitz 프로젝트의 SRC 디렉토리에서 app.css 파일을 엽니 다. 맨 아래의 cursor
구성 요소는 활성 태그의 밑줄에 대한 part
CSS 사용자 정의 속성을 읽습니다. 우리는 몇 가지 기본 CSS를 사용하여 그것을 무시할 수 있습니다.
::part
그게 다야, 이제 우리는 녹색 표시기가 있습니다!
Shoelace 버전에서 현재 사용중인 (2.0.0-Beta.83), 비 장비 태그에는 포인터 커서가 있습니다. 활성 (선택한) 태그의 기본 커서로 변경해 봅시다. 태그 제목의 컨테이너에 요소가 A
속성을 추가하는 것을 보았습니다. 또한, 현재 선택된 태그는 속성을 수신합니다. 이 사실들을 사용하여 활성 태그를 찾아 커서를 변경합시다 : . 그게 다야!
커스텀 애니메이션
케이크에 착빙을 추가하려면 Shoelace가 애니메이션을 사용자 정의 할 수있는 방법을 살펴 보겠습니다. Shoelace는 웹 애니메이션 API를 사용하고 A
API를 노출하여 다양한 요소가 다양한 상호 작용을 애니메이션하는 방법을 제어합니다. 자세한 내용은 설명서를 참조하십시오. 예를 들어, Shoelace의 기본 대화 상자 애니메이션을 최상위 애니메이션에서 입력하고 숨겨져있을 때 아래로 이동하는 것부터 Shoelace의 기본 대화 상자 애니메이션을 변경하는 방법은 다음과 같습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

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

프로젝트에 카운트 다운 타이머가 필요한 적이 있습니까? 그런 것은 플러그인에 도달하는 것이 당연하지만 실제로는 훨씬 더 많습니다.

요소 수가 고정되지 않은 경우 CSS를 통해 지정된 클래스 이름의 첫 번째 자식 요소를 선택하는 방법. HTML 구조를 처리 할 때 종종 다른 요소를 만듭니다 ...

플렉스 레이아웃의 보라색 슬래시 영역에 대한 질문 플렉스 레이아웃을 사용할 때 개발자 도구 (d ...)와 같은 혼란스러운 현상이 발생할 수 있습니다.

새로운 프로젝트가 시작될 때, Sass 컴파일은 눈을 깜박이게합니다. 특히 BrowserSync와 짝을 이루는 경우 기분이 좋습니다.

프론트 엔드 개발에서 Windows와 같은 구현 방법 ...

타탄은 일반적으로 스코틀랜드, 특히 세련된 킬트와 관련된 패턴의 천입니다. tartanify.com에서 우리는 5,000 개가 넘는 타탄을 모았습니다
