우리는 CSS와의 애니메이션, 스크롤 구동 애니메이션에서 전환을보기, 그 사이의 많은 것들과 관련된 많은 새로운 기능으로 버려지고 있습니다. 그러나 일상 생활을 편하게 만드는 것은 항상 큰 기능이 아닙니다. 때로는 프로젝트를 진정으로 향상시키는 것은 수명의 편의 기능입니다. 이 기사에서 Brecht de Ruyte는 두 가지 기능을 전시합니다. @starting-style 그리고 transition-behavior – CSS 애니메이션을 사용한 일상적인 작업에 추가로 환영받는 두 가지 속성.
애니메이션에서 display: none; 수업을 변경하거나 다른 해킹을 만들기 위해 JavaScript만으로 달성 할 수있는 것입니다. CSS 에서이 작업을 수행 할 수없는 이유는 새로운 CSS 전환 레벨 2 사양에 설명되어 있습니다.
“이 사양의 레벨 1에서 전환은 이전 스타일 변경 이벤트에 의해 설정된 변화 전 스타일을 가진 요소에 대한 스타일 변경 이벤트에서만 시작할 수 있습니다. 즉, 이전 스타일 변경 이벤트를 위해 렌더링되지 않은 요소에 대한 전환이 시작될 수 없습니다.”
간단히 말해서, 이것은 우리가 숨겨져 있거나 방금 만들어진 요소에 대한 전환을 시작할 수 없음을 의미합니다.
무엇을 하는가 transition-behavior: allow-discrete 하다?
allow-discrete CSS 속성 값에 대한 약간 이상한 이름이 맞습니까? 우리는 전환에 대해 계속하고 있습니다 display: none그래서 왜 이것이 이름이 없습니다 transition-behavior: allow-display 대신에? 그 이유는 이것이 CSS를 처리하는 것보다 조금 더 작용하기 때문입니다. display CSS에는 다른 “이산”속성이 있기 때문에 속성. 간단한 경험 법칙은 개별 속성이 전환되지 않고 일반적으로 두 상태 사이에서 바로 뒤집는 것입니다. 이산 특성의 다른 예는 다음과 같습니다 visibility 그리고 mix-blend-mode. 이 기사의 끝에 이들의 예를 포함하겠습니다.
요약하기 위해 transition-behavior 속성 allow-discrete 브라우저에 개별 속성의 값을 교환 할 수 있다고 말할 수 있습니다 (예 : display,,, visibility그리고 mix-blend-mode) 전환의 0% 마크 대신 50% 마크에서.
무엇을 하는가 @starting-style 하다?
그만큼 @starting-style 규칙은 페이지로 렌더링되기 직전에 요소의 스타일을 정의합니다. 이것은 함께 고도로 필요합니다 transition-behavior 그리고 이것이 이유입니다.
항목이 DOM에 추가되거나 처음에 display: none전환에 필요한 일종의 “시작 스타일”이 필요합니다. 예제를 더하려면 팝 오버 및 대화 요소가 문서 흐름 외부의 레이어 인 상단 레이어에 추가됩니다. element in your page’s structure. Now, when opening this dialog or popover, they get created inside that top layer, so they don’t have any styles to start transitioning from, which is why we set @starting-style. 이 모든 것이 약간 혼란스러워지면 걱정하지 마십시오. 데모는 더 명확하게 만들 수 있습니다. 알아야 할 중요한 점은 브라우저에 애니메이션을 시작할 수있는 무언가를 제공 할 수 있다는 것입니다. 그렇지 않으면 애니메이션이 없기 때문입니다.
브라우저 지원에 대한 메모
글을 쓰는 순간에 transition-behavior Chrome, Edge, Safari 및 Firefox에서 제공됩니다. 그것은 동일합니다 @starting-style그러나 Firefox는 현재 애니메이션을 지원하지 않습니다 display: none. 그러나이 기사의 모든 것은 진보적 인 향상으로 완벽하게 사용될 수 있습니다.
이제 우리는 우리 뒤에있는이 모든 이론을 갖게되었으므로 실용적으로합시다. 이 기사에서 3 가지 사용 사례를 다룰 것입니다.
애니메이션에서 display: none 돔에서.
상단 계층에 들어가서 종료하는 애니메이션 대화 및 팝 오버.
우리가 처리 할 수있는 더 많은 “이산 속성”.
애니메이션에서 display: none 돔에서
첫 번째 예는 살펴 보겠습니다 @starting-style 홀로. 나는이 데모를 순전히 마법을 설명하기 위해 만들었습니다. 페이지의 두 개의 버튼이 반지되지 않은 목록 내부의 목록 항목을 추가하거나 제거하려고한다고 상상해보십시오.
이것은 당신의 시작 HTML 일 수 있습니다 :
다음으로 해당 목록 항목을 추가하거나 제거하는 작업을 추가합니다. 이것은 당신이 선택한 방법 일 수 있지만 데모 목적으로, 나는 그것을 위해 약간의 JavaScript를 빨리 썼습니다.
이번에는 다음을 추가했습니다 .hidden 클래스를 설정하십시오 display: none동일하게 추가했습니다 opacity 그리고 transform 우리가 이전에했던 것처럼 선언 .removing 마지막 예에서 수업. 예상대로, 우리는 품목에 대한 멋진 페이드 인을 얻지 만, 우리는 품목을 직접 설정할 때 여전히 갑작 스럽습니다. display: none.
이것은 어디에 있습니다 transition-behavior 부동산이 작용합니다. 조금 더 분해하려면 transition 이전 CSS의 속성 속성 및 조금 열립니다.
ul {
li {
display: block;
opacity: 1;
transform: translate(0, 0);
transition-property: opacity, transform;
transition-duration: 0.2s;
}
}
남은 것은 전환뿐입니다 display 속성을 설정하고 설정하십시오 transition-behavior 속성 allow-discrete:
ul {
li {
display: block;
opacity: 1;
transform: translate(0, 0);
transition-property: opacity, transform, display;
transition-duration: 0.2s;
transition-behavior: allow-discrete;
/* etc. */
}
}
우리는 이제 요소를 애니메이션하고 있습니다 display: none그리고 결과는 우리가 원하는대로 정확히 다음과 같습니다.
우리는 사용할 수 있습니다 transition 우리의 코드를 조금 덜 장황하게 만드는 속성 속성 :
대화 상자와 팝 오버가있는 몇 가지 사용 사례를 추가해 봅시다. 대화 상자와 팝 오버는 열 때 상단 레이어에 추가되기 때문에 좋은 예입니다.
그 최고 레이어는 무엇입니까?
우리는 이미“최상층”을 형제에 비유했습니다. element, but you might also think of it as a special layer that sits above everything else on a web page. It’s like a transparent sheet that you can place over a drawing. Anything you draw on that sheet will be visible on top of the original drawing.
The original drawing, in this example, is the DOM. This means that the top layer is out of the document flow, which provides us with a few benefits. For example, as I stated before, dialogs and popovers are added to this top layer, and that makes perfect sense because they should always be on top of everything else. No more z-index: 9999!
그러나 그 이상입니다.
z-index 관련이 없습니다: 상단 레이어의 요소는 항상 상단에 있습니다. z-index 값.
Dom 계층은 중요하지 않습니다: DOM의 요소 위치는 상단 레이어의 스태킹 순서에 영향을 미치지 않습니다.
배경: 우리는 새로운 것에 접근 할 수 있습니다 ::backdrop 상단 층과 그 아래의 돔 사이의 영역을 스타일링 할 수있는 의사 요소.
바라건대, 당신은 상단 계층의 중요성과 우리가 팝 오버와 대화와 마찬가지로 요소를 전환 할 수있는 방법을 이해하기 시작했습니다.
Post Comment