작성
·
341
·
수정됨
0
섹션12에서 텍스트가 나타나고 사라지는 인터렉션에서 처음 텍스트를 스크롤 하지 않고 처음 텍스트만 보이다가 스크롤이 시작되고 나서 사라지고 다음텍스트가 보이게 하려면 어떻게 코드를 작성해야할까요?
답변 1
0
안녕하세요 :)
먼저 해당 질문은 수업과 연관이 없는 부분이고 굳이 왜 그렇게 구현을 해야하는지 의문이 드네요^^;
이 문제를 해결하려면 먼저 animation 속성의 특징을 살펴보고 직접 테스트를 진행해 봐야 할 것 같습니다.
(섹션 12는 animation 을 활용해 인터렉션을 구현했기 때문이죠?)
** 굳이 억지로 구현해야 한다면 아래와 같이 구현할 수 있을것 같지만 이 코드는 브라우저마다 호환성이 떨어질 수 있습니다. 이유는 브라우저마다 animation을 처리하는 부분이 다를 수 있기 때문입니다.
css수정 (코드 추가)
.fix_box .txt.active {
opacity: 1 !important;
}
html수정 (첫번째 엘리먼트에 클래스 추가)
<p class="txt active">안녕하세요</p>
스크립트 추가 (스크롤 이벤트 발생하면 active 클래스를 삭제해 animation 코드로 진행 하도록 만듬)
스크립트 추가 (스크롤 이벤트 발생하면 active 클래스를 삭제해 animation 코드로 진행 하도록 만듬)
arr.classList.remove('active');
** 다시한번 말하지만 위 코드는 여러 브라우저에서 다르게 동작할 수 있습니다(크롬에서 테스트 진행). 억지로 구현해야 한다면 css animation에 대해 살펴보고 조건문 등을 활용해 직접 테스트를 진행해 보길 추천드립니다. :)
** 만약 해당 문제를 꼭 해결해야 한다면 fake엘리먼트를 사용해 보는 것도 방법이 될 수 있겠습니다. :)
그럼 또 다른 궁금증이 생기면 문의주세요 :D
Fake엘리먼트는 쉽게 말하면 “안녕하세요” 엘리먼트를 하나 더 추가해 가장 처음에만 보이도록 하고 스크롤시 fake엘리먼트를 안 보이도록 하는 겁니다 :) 그럼 스크롤시 원래 애니메이션은 그대로 동작하겠죠!
그러면 만약 첫번째 엘리먼트와 두번째 엘리먼트가 동일한 텍스트를 가지고 있고 fake엘리먼트를 사용했다면 사라지는순간의 타이밍과 스크롤될때의 시간이 안맞아서 순간적은로 보였다가 안보이는 시간의 텀?은 어떻게 되는건가요?
그 문제는 눈에 보일 정도로 나타나지 않을 거예요. important로 처리하는 코드는 Safari에서 동작 하지 않을 수 있습니다. :) 만약 궁금하신 부분에 문제가 있어서 완벽하게 처리해야 한다면 css애니메이션 코드를 직접 만들어야 할 수 있습니다. :)
혼자 보면서 궁금증에 여쭤봤는데 친절히 답해주셔서 감사합니다 ㅎㅎ 잘 돼네요 ㅎㅎ