inflearn logo
강의

Course

Instructor

[Code Camp] A highly concentrated front-end course created at Bootcamp

▶ animation practice

animation 질문- 하나의 @keyframes로 특정 이벤트없이 한번, hover이벤트시 한번 적용 방법 문의.

Resolved

511

tonawood3721

4 asked

0

animation 질문- 하나의 @keyframes로 특정 유저 이벤트없이 한번, 마우스 hover 이벤트시 한번 적용하는 방법 문의 드립니다.

 

css 강의 ‘animation 실습’ 강의 40분 전후의 쇼핑몰 배너 애니매이션 코드를 변경해서 아래 코드처럼

/* html 부분 */ 
 <section class="mainBanner">
    <h1 class="text">Welcome to my shop</h1>
  </section>


/* css 부분 */
.text {
  font-size: 42px;
  font-weight: 700;
  color: white;
  text-shadow: 9px 6px 5px rgba(0, 0, 0, 0.5);
  animation: titleText 1s ease-in-out;
}
.mainBanner:hover .text {
  animation: titleText 1s ease-in-out;
}
@keyframes titleText {
  0% {
    transform: translateY(70px);
  }
  92% {
    transform: translateY(-10px);
  }
  100% {
    transform: translateY(0px);
  }
}

@keyframes에 titleText란 이름으로 정의한 애니메이션을, 페이지 로드시에 1번, 마우스 hover 시 1번 재생시키려고 css를 작성했더니 로드시에만 적용되고 호버시엔 적용이 안되더군요.

 

그래서 아래처럼 동일 keframes를 복사 붙여넣기 하고 이름만 바꿔서 hover에 적용하였더니 잘되더군요.

{
  font-size: 42px;
  font-weight: 700;
  color: white;
  text-shadow: 9px 6px 5px rgba(0, 0, 0, 0.5);
  animation: titleText 1s ease-in-out;
}
.mainBanner:hover .text {
  animation: titleText2 1s ease-in-out;
}
@keyframes titleText {
  0% {
    transform: translateY(70px);
  }
  92% {
    transform: translateY(-10px);
  }
  100% {
    transform: translateY(0px);
  }
}

@keyframes titleText2 {
  0% {
    transform: translateY(70px);
  }
  92% {
    transform: translateY(-10px);
  }
  100% {
    transform: translateY(0px);
  }
}

 

이런식의 중복 css가 발생하는 비효율적인 방법말고, 하나의 @keyframes로 특정 유저 이벤트없이 한번, hover이벤트시 한번 적용하는 방법 중 html, css만으로 적용하는 방법이 없을까요?

도움 부탁드립니다~

css animation

Answer 2

0

nwd09074926

안녕하세요! tonawood님!

하나의 이름을 가진 애니메이션은 기본적으로 1 번만 실행되기 때문에 이러한 현상이 발생한 것이랍니다!

해당 문제를 해결하기 위해서는, 해당 애니메이션을 무한히 사용 가능하도록 명령해 주시면 되세요!^^

.mainBanner:hover .text {
  animation: titleText 1s ease-in-out;
  animation-iteration-count: infinite; // 이 부분을 추가합니다
}

1

tonawood3721

답변 감사합니다.

알려주신 방식으로 적용하니 문제가 있네요.

hover시 애니메이션이 1번만 재생되는게 아니라 당연하게도 무한 반복되네요.

로딩시 한번, 마우스 호버시 한번 씩만 재생되게 하려면 css 중복이 발생하는 방법으로 하든가, 아니면 javascript로 컨트롤 하는 방법을 시도해보든가 하나 보군요.

0

nwd09074926

네! tonawood님!

해당 경우에는 자바스크립트를 사용하시는 것이 일반적이에요!^^

-1

communityai8509

안녕하세요, 인프런 AI 인턴이에요.

하나의 @keyframes로 특정 이벤트 없이 한 번, 마우스 hover 이벤트 시 한 번 적용하고 싶으시다면, 다음과 같이 작성하실 수 있습니다.

.text {
  font-size: 42px;
  font-weight: 700;
  color: white;
  text-shadow: 9px 6px 5px rgba(0, 0, 0, 0.5);
  animation: titleText 1s ease-in-out, hoverTitleText 1s ease-in-out;
}
.mainBanner:hover .text {
  animation: hoverTitleText 1s ease-in-out;
}
@keyframes titleText {
  0% {
    transform: translateY(70px);
  }
  92% {
    transform: translateY(-10px);
  }
  100% {
    transform: translateY(0px);
  }
}
@keyframes hoverTitleText {
  0% {
    /* hover 시 적용할 애니메이션 상태 */
  }
  100% {
    /* hover 시 도달해야 할 애니메이션 상태 */
  }
}

위의 코드에서는 text 요소에 hoverTitleText 애니메이션을 추가로 적용했습니다. 이렇게 하면 페이지 로드 시 titleText 애니메이션이 적용되고, 마우스 hover 시 hoverTitleText 애니메이션도 같이 적용됩니다.

참고로, hoverTitleText 애니메이션을 원하는 대로 작성해주시면 됩니다. 예를 들어, 투명도를 조절하거나 배경색을 변경하는 등 여러 가지 스타일 변화를 줄 수 있습니다.

추가로 궁금한 사항이 있으시면 언제든지 물어보세요. 즐거운 코딩되세요!

0

tonawood3721

ai 가 답변 한 것은 2개의 keyframe 사용한 거라서 적절한 답변이 아닌거 같습니다. 제가 한 질문은 한개의 동일 keyframe으로 hover시에도 적용하는 방법을 문의한 것 입니다.

반응형웹에서 가로 스크롤 생기지 말고 테이블이 밑으로 떨어지게 하려면?

0

41

1

nested 리스트일때 <ul> bullet 스타일 바꾸는 방법

0

197

2

border 선 겹침 현상

0

168

1

[CSS 01-2-2] flex-wrap 한 칸 띄고 다음 줄로 넘어가는 현상...

0

236

2

3-2강 코드로 작성하지 않은 박스가 표시됩니다...?

0

158

2

absolute관련 질문 있습니다.

0

105

2

rightSectionWrapper,leftSectionWrapper 중앙정렬 질문입니다!

0

147

2

과제 완료

0

254

2

22강 연락처 추가하기 - css 파일 경로 지정

0

265

1

html input 태그에 readonly 속성 넣었을 때 배경이 회색으로 바뀌는 이유가 무엇인가요?

0

2714

1

leftSectionWrapper와 rightSectionWrapper 중앙 정렬

0

513

1

Mini Quiz 질문

0

284

2

CSS정렬 - 회원가입 폼 만들기 과제 질문

0

1002

2

CSS관련 질문

0

522

1

margin 대신 padding을 자주 쓰는 이유

0

698

1

[CSS-in-js] Emotion styled components 관련 질문입니다.

0

581

1

꼬리에 키 다삭제해도 맘대로 휘는데 이유가 뭘까요??

1

360

1

CSS정렬 - 회원가입 과제 코드 공유

2

3710

1

진자운동이 다 갈라져요 ㅠㅠ

0

556

1

Live-server로 html 파일을 볼때 이상한 것들도 같이 보여요

0

569

1

시즌2는 계획에 없으신가요 ?

0

359

1

색종이 루프 원본 소스파일

0

269

1

브러시툴 클릭하면 하단에 압력과 기울기 창이 안생기네요

0

381

1

밑그림 그릴 때

0

338

2