작성
·
261
0
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>도형 로딩 애니메이션</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="loading">
<span></span>
<span></span>
<span></span>
</div>
</body>
</html>
/* Google Web Font */
@import url('http://fonts.googleapis.com/css?family=Raleway&display=swap');
body {
font-family: 'Raleway', sans-serif;
line-height: 1.5em;
margin: 0;
font-weight: 300;
display: inline;
justify-content: center;
align-items: center;
height: 100vh;
}
a {
text-decoration: none;
}
.loading {}
.loading span {
display: inline-block;
width: 20px;
height: 20px;
background-color: gray;
border-radius: 50%;
animation: loading 1s linear infinite;
}
.loading span:nth-child(1) {
animation-duration: 0s;
background-color:crimson;
}
.loading span:nth-child(2) {
animation-duration: 0.2s;
background-color:dodgerblue;
}
.loading span:nth-child(3) {
animation-duration: 0.4s;
background-color:royalblue;
}
@keyframes loading {
0% {
opacity: 0;
transform: scale(0.5);
}
50% {
opacity: 1;
transform: scale(0.5);
}
100% {
opacity: 0;
transform: scale(0.5);
}
}
이렇게 작성했는데 go live 화면에선
이렇게 뜨고 애니메이션이 안나와요.. ㅠㅠ 뭐가 문제일까요??? 몇주동안 안되요..
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. SH님, 제시해 주신 코드와 설명을 바탕으로 문제를 분석해 보겠습니다.
CSS에서 키프레임 애니메이션은 정의한 @keyframes
규칙에 따라 요소의 스타일을 애니메이션으로 변경할 수 있습니다. 제공하신 스크린샷을 볼 수는 없으나 설명을 바탕으로 확인할 수 있는 몇 가지 문제점을 지적하고 수정 방안을 제안드리겠습니다.
우선 .loading
클래스에 대한 스타일 정의가 비어 있는 상태입니다. 이 클래스는 세 개의 span
을 감싸고 있는 요소로, 해당 요소 중앙에 위치하도록 하는 스타일이 필요합니다. display: flex;
, justify-content: center;
, align-items: center;
속성을 사용하여 중앙 정렬을 할 수 있습니다.
또한, .loading span
요소들에 적용된 animation-duration
이 첫 번째 요소에서 0s
로 설정되어 있으므로, span
요소에 애니메이션이 적용되지 않습니다. 애니메이션 지속 시간은 기본적으로 1s
로 설정하셨으나, 첫 번째 span
에 대해 0s
로 설정하면 애니메이션이 발생하지 않으므로 이를 1s
이상으로 설정해야 합니다.
다음은 수정된 .loading
과 .loading span:nth-child(1)
에 대한 스타일입니다:
.loading {
display: flex;
justify-content: center;
align-items: center;
height: 100%; /* 부모 요소인 body에 대하여 100% 높이를 차지하도록 설정. */
}
.loading span:nth-child(1) {
animation-duration: 1s; /* 애니메이션 지속 시간 수정 */
background-color: crimson;
}
위의 수정을 통해 웹 페이지에 나타나는 세 개의 원형 요소(loading animation)가 중앙에 위치하고, 첫 번째 span
요소에도 애니메이션이 적절하게 적용되어 애니메이션 효과가 나타나야 합니다.
이후에도 수정했음에도 애니메이션이 나타나지 않는다면, 웹 브라우저의 개발자 도구를 통해 실시간으로 CSS 스타일과 애니메이션의 동작 여부를 확인하며 문제를 디버깅하는 것이 도움이 될 것입니다.
마지막으로 animation-duration
은 각 요소마다 지연(delay)를 다르게 설정하여 시간 순서대로 애니메이션이 나타나도록 할 수 있으며, animation-delay
속성을 사용합니다. 예를 들면, 다음과 같습니다:
.loading span:nth-child(1) {
animation-delay: 0.1s;
}
.loading span:nth-child(2) {
animation-delay: 0.2s;
}
.loading span:nth-child(3) {
animation-delay: 0.3s;
}
도움이 되셨길 바라며, 추가 질문이 있으시면 언제든지 문의해 주세요.