전단 tips
CSS代码:
.box {
background: goldenrod;
width: 300px;
height: 300px;
margin: 30px auto;
transition: all .4s linear;
/*display: block;*/
}
.hidden {
/*display: none;*/
opacity: 0;
}
JS 코드
var box = $('#box');
$('button').on('click', function () {
if(box.hasClass('hidden')){
box.removeClass('hidden');
}else{
box.addClass('hidden');
}
});
단 추 를 누 르 면 페이드아웃 애니메이션 효 과 를 볼 수 있 지만 css 코드 에서 display 속성 에 대한 두 개의 설명 을 해제 한 후 브 라 우 저 를 열 어 보 니 페이드아웃 효과 가 모두 사 라 졌 습 니 다.이것 은 정말 파괴 적 인 작용 이다. 그리고 나 서 나 는 어머니 께 서 몇 가지 방법 을 정리 하 셨 다.
첫 번 째 방법: display 를 visibility 로 대체 합 니 다. visibility 의 효 과 는 display 와 어느 정도 비슷 하 다 는 것 을 잘 알 고 있 습 니 다. 그런데 왜 어느 정도 비슷 하 다 고 말 합 니까? 공간 을 차지 하기 때 문 입 니 다. 그러면 반드시 이렇게 사용 하 는 것 은 opacity 와 다 를 바 가 없습니다.하지만 아래 층 을 가 리 는 것 은 피 할 수 있다. 예 를 들 어 버튼 의 클릭 사건 이다.
두 번 째 방법 은 첫 번 째 방법의 진급 에 비해 js 의 setTimout 와 transition end 이벤트 css 코드 를 이용 하여 class hidden 류 의 opacity 를 분리 하 는 것 입 니 다.
CSS 코드:
.box {
background: goldenrod;
width: 300px;
height: 300px;
margin: 30px auto;
transition: all .4s linear;
visibility: visible;
}
.hidden {
display: none;
}
.visuallyhidden {
opacity: 0;
}
js 코드
var box = $('#box');
$('button').on('click', function () {
if (box.hasClass('hidden')) {
box.removeClass('hidden');
setTimeout(function () {
box.removeClass('visuallyhidden');
}, 20);
} else {
box.addClass('visuallyhidden');
box.one('transitionend', function(e) {
box.addClass('hidden');
});
}
});
세 번 째 방법 은 두 번 째 방법 과 유사 하 며, request Animation Frame 으로 setTimeout 을 대체 하여 if 조건 의 js 를 수정 하 였 다.request Animation Frame 도 setTimeout / setInterval 과 차이 가 많 지 않 습 니 다. 재 귀적 호출 을 통 해 화면 을 계속 업데이트 하여 움 직 이 는 효 과 를 얻 을 수 있 습 니 다. 그러나 setTimeout / setInterval 보다 좋 은 점 은 브 라 우 저가 애니메이션 에 전문 적 으로 제공 하 는 API 입 니 다. 운영 할 때 브 라 우 저 는 자동 으로 방법 을 최적화 시 킵 니 다. 또한 페이지 가 활성화 되 지 않 으 면...애니메이션 은 자동 으로 중단 되 어 CPU 비용 을 효과적으로 절약 할 수 있 습 니 다.
js 코드 는 다음 과 같 습 니 다.
var box = $('#box');
$('button').on('click', function () {
if (box.hasClass('hidden')) {
box.removeClass('hidden');
requestAnimationFrame(function(){
box.removeClass('visuallyhidden');
});
} else {
box.addClass('visuallyhidden');
box.one('transitionend', function(e) {
box.addClass('hidden');
});
}
});
이상 은 transition 이 display 를 만 났 을 때 만 나 는 구덩이 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.