이 기사에서는 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;<.> 그게 다야. 구성 요소 라이브러리의 API와의 상호 작용은 다소 직접적입니다. 이 기사만이 작업 만 수행하면 상당히 지루할 것입니다.
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

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

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

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

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

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

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

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


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

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