오버레이 스타일링
IgxOverlayService
는 페이지 콘텐츠 위에 콘텐츠를 표시하는 데 사용됩니다. 많은 Ignite UI for Angular 구성 요소가 오버레이를 사용합니다. Drop Down, Combo, Date Picker 등 오버레이가 콘텐츠를 표시하는 방식을 이해하는 것이 중요합니다. 콘텐츠를 다른 요소 위에 표시하기 위해 서비스는 콘텐츠를 특수 아울렛 컨테이너(기본적으로 문서 본문 끝에 첨부됨)로 이동합니다. 이 동작은 특정 컨테이너로 범위가 지정된 스타일에 영향을 미칠 수 있습니다.
오버레이 구성요소 스타일 지정
대부분의 경우에 글로벌 테마 스타일은 오버레이 아웃렛의 영향을 받지 않습니다. 예를 들어 드롭다운을 살펴보겠습니다. 스타일이 있는 글로벌에 의해 css-vars
믹스인:
<!-- overlay-styling.component.html -->
<igx-drop-down #customDropDown height="350px">
<igx-drop-down-item *ngFor="let item of items" [value]="item.id">
{{ item.name }}
</igx-drop-down-item>
</igx-drop-down>
html
@use "igniteui-angular/theming" as *;
// IMPORTANT: Prior to Ignite UI for Angular version 13 use:
// @import '~igniteui-angular/lib/core/styles/themes/index';
$my-drop-down-theme: drop-down-theme(
$background-color: #efefef
);
@include css-vars($my-drop-down-theme);
scss
전역 스타일은 범위가 지정된 규칙에 따라 생성되지 않으며 캡슐화의 영향을 받지 않으므로 서비스가 오버레이 아웃렛으로 이동된 igx-drop-down-item
포함하여 페이지의 모든 요소와 일치할 수 있습니다.
범위가 지정된 구성요소 스타일
오버레이에 표시되는 요소의 스타일 범위를 지정할 때 DOM에서 오버레이 outlet
위치를 지정해야 합니다. 범위가 지정된 CSS 규칙에는 요소의 특정 계층 구조가 필요합니다. 오버레이 콘텐츠가 적용하려는 스타일의 올바른 컨텍스트에 표시되는지 확인해야 합니다.
예를 들어 igx-combo
예로 들어보겠습니다. 해당 항목 스타일은 igx-drop-down
테마를 사용합니다. 왜냐하면 콤보가 자체 뷰 내부에서 콘텐츠를 정의하기 때문입니다.
// overlay-styling.component.scss
@include css-vars($my-drop-down-theme);
scss
구성 요소가 를 사용하는 경우 Emulated
ViewEncapsulation을 사용하려면 다음이 필요합니다. penetrate
이 캡슐화는 다음을 사용합니다.::ng-deep
을 클릭하여 스타일을 적용합니다.
// overlay-styling.component.scss
:host {
::ng-deep {
@include css-vars($my-drop-down-theme);
}
}
scss
콤보 목록의 항목 아니다 우리 구성 요소의 후손 host
- 현재 문서 본문 끝의 기본 오버레이 콘센트에 표시되고 있습니다. 다음을 사용하여 이를 변경할 수 있습니다. outlet
에 있는 재산 overlaySettings
. 그만큼 outlet
오버레이 컨테이너를 렌더링해야 하는 위치를 제어합니다.
여기에서 컨테이너를 배치할 요소에 대한 참조를 전달할 수 있습니다.
<igx-combo [data]="items" valueKey="name" displayKey="name" [overlaySettings]="{ outlet: element, modal: true }">
</igx-combo>
html
export class OverlayStylingComponent {
...
constructor(public element: ElementRef) {
}
}
typescript
이제 콤보의 항목 목록이 구성 요소의 호스트 내부에 올바르게 렌더링되므로 사용자 정의 테마가 적용됩니다.
이 샘플이 마음에 드시나요? 전체 Ignite UI for Angular 툴킷에 액세스하고 몇 분 안에 나만의 앱을 구축해 보세요. 무료로 다운로드하세요.
오버레이 스타일링
이제 ViewEncapsulation
오버레이의 outlet
속성과 함께 작동하는 방식을 다루었으므로 오버레이 래퍼 자체의 스타일을 지정하는 방법을 살펴볼 수 있습니다. overlay-theme
오버레이가 modal: true
로 설정된 경우 배경화면의 색상에 영향을 주는 단일 속성인 $background-color
노출합니다.
글로벌 스타일
오버레이 모달의 스타일을 지정하는 가장 쉬운 방법은 해당 테마를 앱의 전역 스타일에 포함하는 것입니다.
// styles.scss
$my-overlay-theme: overlay-theme(
$background-color: rgba(0, 153, 255, 0.3)
);
@include css-vars($my-overlay-theme);
scss
이제 모든 모달 오버레이의 배경이 보라색 색조를 갖게 됩니다.
구성 요소가 를 사용하는 경우 Emulated
ViewEncapsulation을 사용하려면 다음이 필요합니다. penetrate
이 캡슐화는 다음을 사용합니다.::ng-deep
을 클릭하여 스타일을 적용합니다.
// overlay-styling.component.scss
:host {
::ng-deep {
@include css-vars($my-overlay-theme);
}
}
scss
범위가 지정된 오버레이 스타일
오버레이가 특정 구성 요소 아래 에서만 특정 배경을 갖도록 하려면 테마 범위를 지정할 수 있습니다. 모달 오버레이의 범위를 지정할 때 오버레이 아웃렛을 이동해야 하는데 여기에는 몇 가지 제한 사항이 있습니다. 오버플로 클리핑, Z-색인 및 뷰포트 문제의 위험을 최소화하려면 상위 수준 구성 요소에서만 모달 오버레이용 콘센트를 사용하는 것이 좋습니다.
// styles.scss
...
.purple {
@include css-vars($my-overlay-theme);
}
scss