2017-12-17 31 views
0

불투명도가 변경된 일부 CSS 전환을 수행했습니다. javascript를 통해 새로운 클래스를 추가하거나 제거하여 시작했습니다.CSS 전환이 때때로 느려집니다.

이 같은입니다 :

.element { 
    opacity: 0; 
    z-index; -1; 
    display: none; 
    transition: opacity .2s linear; 
} 

.changeDisplay { 
    display: block; 
} 

.show { 
    z-index: 1; 
    opacity: 1 
} 

자바 스크립트를 통해 내가 클릭 한 후 클래스 변경을 발생시키는의 EventListener했다. 처음에는 .changeDisplay 클래스가 추가되고, setTimeout (delay, 4) 함수 뒤에 .show 클래스도 추가됩니다. 4ms (최소 허용 지연 값이어야 함) 지연은 애니메이션 페이드 인 (불투명도 전환)이 작동하는 데 중요합니다.

문제는 - 때로는 예상대로 작동하지 않습니다! 애니메이션이 때때로 느려지므로 애니메이션 효과가 전혀 작동하지 않습니다 (마치 디스플레이 변경을 통해 나타 났던 것처럼 보입니다).

왜 그런가요 매 매끄러운 애니메이션을 얻으려면 어떻게해야합니까? 나는 Chrome (android mobile chrome), Opera, Firefox 및 IE (Safari는 내 집에 사과 부족으로 인해 테스트되지 않음)에서이 동작을 관찰했습니다.

+0

인간의 눈이 전환을 인식하는 데는 4ms가 매우 짧은 시간입니다. 자세한 정보는 https://stackoverflow.com/questions/7882713/can-a-human-eye-perceive-a-10-milliseconds-latency-in-image-load-time#7882769 – Dez

+0

4ms가 너무 낮게 설정되어 있습니다. 이는 사용자가주의해서는 안되기 때문입니다. 이 낮은 지연이 없으면 불투명 전환이 작동하지 않습니다. -> https://stackoverflow.com/questions/3331353/transitions-on-the-display-property 마법과 눈에 띄는 전환이 200ms로 설정되었으며 눈에 띄는 것입니다;) (전환 특성 살펴보기) – Flo

답변

0

내 경험에 비추어 볼 때 작고 섬세한 애니메이션을 원한다면 약 0.7 초의 애니메이션 지속 시간이 가장 좋은 것 같습니다.

게다가 지연을 추가하는 대신 할 수있는 일은 .show를 콜백 함수에 추가하는 코드를 넣는 것입니다. 이렇게하면 .changeDisplay 클래스가 추가 되 자마자 .show 클래스가 추가됩니다.
지연을 원하십니까?
전환 지연 : 0.4 초;

+0

이 콜백 함수 힌트가 멋지 네요. 그러나 .7s 전환기를 가진 프로 블록맨은 사용자를 위해 오래 걸립니다. 내 경우에는 사이트 구조가이 기간 동안 변경되기 때문에 아무 것도 할 수없는 시간입니다. 전환 지연은 작동하지 않습니다. 이미 시도했지만, 표시 속성을 사용하는 경우 표시 할 전환의 속성 값이 없습니다. – Flo