포지셔닝 전략
위치 전략은 제공된 IgxOverlayService
에서 콘텐츠가 표시되는 위치를 결정합니다. 기본적으로 콘텐츠는 화면 중앙에 배치됩니다.
Angular Positioning Strategies Example
Strategies Overview
5가지 포지셔닝 전략이 있습니다.
Global
positionSettings
통해 전달된 방향에 따라 콘텐츠의 위치를 지정합니다. 이는 horizontalDirection
의 경우 Left/Center/Right이고 verticalDirection
의 경우 Top/Middle/Bottom입니다. 기본값은 다음과 같습니다.
수평 방향 | 수직 방향 |
---|---|
수평정렬.중심 | 수직정렬.중간 |
Container
콘텐츠를 GlobalPositionStrategy
로 배치합니다. 화면과 관련된 위치 대신 ContainerPositionStrategy
OverlaySettings
outlet
에 제공된 것과 관련된 콘텐츠를 배치합니다. 기본값은 다음과 같습니다.
수평 방향 | 수직 방향 |
---|---|
수평정렬.중심 | 수직정렬.중간 |
Connected
overlaySettings
의 시작점과 positionSettings
통해 전달된 방향을 기준으로 요소의 위치를 지정합니다. 시작점(Point
유형) 또는 HTMLElement
위치 기준으로 전달할 수 있습니다. 기본값은 다음과 같습니다.
표적 | 수평 방향 | 수직 방향 | 수평시작점 | 수직시작점 |
---|---|---|---|---|
새로운 포인트(0, 0) | 수평 정렬.오른쪽 | 수직 정렬.하단 | 수평정렬.왼쪽 | 수직 정렬.하단 |
Auto
Connected 위치 지정 전략과 동일한 방식으로 요소를 배치합니다. 또한 요소가 뷰포트에서 부분적으로 벗어나는 경우 다른 시작점을 계산합니다. Auto 전략은 처음에는 Connected 전략과 같은 요소를 표시하려고 시도합니다. 요소가 뷰포트 밖으로 나가면 자동은 시작점과 방향을 반전시킵니다. 즉, 방향이 '하단'이면 '상단'으로 전환하는 식입니다. 뒤집은 후에도 요소가 여전히 뷰포트 밖에 있으면 자동은 초기 방향과 시작점을 사용하여 요소를 뷰포트로 밀어 넣습니다. 예를 들어 요소가 뷰포트의 오른쪽에서 50px만큼 벗어나면 자동은 해당 요소를 왼쪽으로 50px만큼 밀어냅니다. 나중에 요소가 부분적으로 뷰포트를 벗어나면 해당 높이나 너비가 뷰포트보다 크면 자동은 요소의 왼쪽/상단 가장자리를 뷰포트의 왼쪽/상단 가장자리에 정렬합니다. 기본값은 다음과 같습니다.
표적 | 수평 방향 | 수직 방향 | 수평시작점 | 수직시작점 |
---|---|---|---|---|
새로운 포인트(0, 0) | 수평 정렬.오른쪽 | 수직 정렬.하단 | 수평정렬.왼쪽 | 수직 정렬.하단 |
Elastic
연결된 위치 지정 전략과 같이 요소를 배치하고 요소가 부분적으로 시야에서 벗어난 경우 뷰 포트 내부에 맞도록 요소 크기를 조정합니다(너비 및/또는 높이 다시 계산). minSize
요소의 크기가 특정 임계값 아래로 놓이는 경우 크기 조정을 방지하기 위해 positionSettings
에 전달될 수 있습니다. 기본값은 다음과 같습니다.
표적 | 수평 방향 | 수직 방향 | 수평시작점 | 수직시작점 | 최소 크기 |
---|---|---|---|---|---|
새로운 포인트(0, 0) | 수평 정렬.오른쪽 | 수직 정렬.하단 | 수평정렬.왼쪽 | 수직 정렬.하단 | { 너비: 0, 높이: 0 } |
Note
전략이 HorizontalDirection = Center / VerticalDirection = Middle을 사용하는 경우 요소 크기 조정을 시도하지 않습니다.
Note
오버레이 요소 될거야 크기는 조정되었지만 포지셔닝 전략은 하지 않습니다 핸들 overflow
. 예를 들어, 요소에 다음이 있어야 하는 경우 overflow-y
크기를 조정할 때 적절한 스타일을 통합하여 이를 제공하세요.
Usage
위치 전략을 사용하면 다양한 조합으로 오버레이에 콘텐츠를 표시할 수 있습니다. 다양한 포지션 전략을 사용하려면 먼저 다음과 같이 사용되는 각 전략에 필요한 종속성을 포함해야 합니다.
import {
AutoPositionStrategy,
ConnectedPositioningStrategy,
ContainerPositionStrategy,
ElasticPositionStrategy,
GlobalPositionStrategy
} from 'igniteui-angular';
// import { AutoPositionStrategy,
// ConnectedPositioningStrategy,
// ContainerPositionStrategy,
// ElasticPositionStrategy,
// GlobalPositionStrategy } from '@infragistics/igniteui-angular'; for licensed package
그런 다음 오버레이에서 사용할 위치 지정 전략을 지정합니다. 위치 전략은 overlay.attach()
메서드가 호출될 때 overlaySettings
변수의 속성으로 전달됩니다. 아래 예에서는 ConnectedPositionStrategy
를 사용하여 기본 GlobalPositionStrategy
변경합니다.
// Initialize and use overlay settings
const overlaySettings: OverlaySettings = {
// Set the target where content should be shown
target: this.buttonElement.nativeElement,
// Pass in the positioning strategy
positionStrategy: new ConnectedPositioningStrategy()
};
this._overlayId = this.overlayService.attach(MyDynamicCardComponent, this.viewContainerRef, overlaySettings);
Positioning Settings
각 포지셔닝 전략에는 고유한 포지셔닝 설정이 있습니다. 이러한 설정에 따라 콘텐츠가 표시되는 방식이 결정됩니다. 아래 예에서는 새로운 PositionSettings
객체를 생성합니다. 이를 사용하여 오버레이가 제공된 target
(buttonElement
의 오른쪽 상단 지점부터 시작하는 콘텐츠를 표시하도록 합니다. 콘텐츠가 표시되는 방향은 왼쪽 상단으로 설정됩니다. 그런 다음 새로운 ConnectedPositionStrategy
생성하고 positionSettings
에 전달합니다.
const positionSettings: PositionSettings = {
horizontalStartPoint: HorizontalAlignment.Right,
verticalStartPoint: VerticalAlignment.Top,
horizontalDirection: HorizontalAlignment.Left,
verticalDirection: VerticalAlignment.Top
};
const strategy = new ConnectedPositioningStrategy(positionSettings);
// Initialize and use overlay settings
const overlaySettings: OverlaySettings = {
target: buttonElement.nativeElement,
// Pass in the positioning strategy
positionStrategy: strategy
};
this._overlayId = this.overlayService.attach(MyDynamicCardComponent, this.viewContainerRef, overlaySettings);
Changing Strategies
오버레이에 전달된 overlaySettings
객체의 positionStrategy
속성을 재정의하여 오버레이에서 사용하는 위치 지정 전략을 변경할 수도 있습니다.
const myPositionStrategy = new AutoPositionStrategy();
overlay.attach(element, { positionStrategy: myPositionStrategy });
Changing Settings
기존 전략의 포지션 설정을 변경하려면 해당 전략의 설정을 재정의하세요. 전략이 이미 연결된 경우 이전에 생성된 ID를 분리해야 합니다.
// overlaySettings is an existing object of type OverlaySettings
// overlaySettings.positionStrategy is an existing PositionStrategy with settings of type PositionSettings
Object.assign(overlaySettings.positionStrategy.settings, {
horizontalStartPoint: HorizontalAlignment.Left,
horizontalDirection: HorizontalAlignment.Left
});
overlaySettings.target = dummyHTMLElement;
// the element will now start to the left of the target (dummyHTMLElement)
// and will align itself to the left
const overlayId = overlay.attach(overlayId, overlaySettings);
overlay.show(overlayId);
Offsetting Content
이 setOffset
방법을 사용하면 해당 축을 따라 지정된 양만큼 콘텐츠 위치를 정밀하게 조정할 수 있습니다. 또한 선택적 offsetMode
매개 변수를 지원하여 오프셋 값이 적용되는 방식을 제어할 수 있습니다.
// deltaX and deltaY determine the amount by which the content will be offset.
// Using OffsetMode.Add to add the values (default behavior)
const deltaX: number = 30;
const deltaY: number = 15;
overlay.setOffset(this._overlayId, deltaX, deltaY, OffsetMode.Add);
// deltaX and deltaY determine the exact position to set the content to, relative to its target element.
// Using OffsetMode.Set to set the offset to specific values
const deltaX: number = 30;
const deltaY: number = 15;
overlay.setOffset(this._overlayId, deltaX, deltaY, OffsetMode.Set);