Web/인프런
@key frame 보더 회전 애니메이션
100seo
2022. 1. 13. 17:47
<애니메이션 미리보기>
See the Pen radius rotate by seohyeon baek (@100seo) on CodePen.
<코드블럭>
기본 html 구문 불러오기
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>keyframe</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="container">
<div class="square">
<span></span>
<span></span>
<span></span>
<div>
<h2>Heading Text</h2>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Vel accusantium voluptate molestiae, dolor ullam est laboriosam mollitia voluptatem. Quibusdam beatae dolore, explicabo sunt perferendis in est obcaecati? Earum, porro maiores!
</p>
<a href="#">Read More</a>
</div>
</div>
<div class="square">
<span></span>
<span></span>
<span></span>
<div>
<h2>Heading Text</h2>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Vel accusantium voluptate molestiae, dolor ullam est laboriosam mollitia voluptatem. Quibusdam beatae dolore, explicabo sunt perferendis in est obcaecati? Earum, porro maiores!
</p>
<a href="#">Read More</a>
</div>
</div>
<div class="square">
<span></span>
<span></span>
<span></span>
<div>
<h2>Heading Text</h2>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Vel accusantium voluptate molestiae, dolor ullam est laboriosam mollitia voluptatem. Quibusdam beatae dolore, explicabo sunt perferendis in est obcaecati? Earum, porro maiores!
</p>
<a href="#">Read More</a>
</div>
</div>
</div>
</body>
</html>
css 작업
body{
background-color: #333;
display: flex;
justify-content: center; /*수평중앙*/
align-items: center; /*수직중앙*/
height: 100vh;
}
a{
text-decoration: none;
}
.container{
display: flex;
}
.square{
width: 400px;
height: 400px;
position: relative;
margin: 40px;
}
.square span{
width: 100%; /*inherit로해도 무방*/
height: 100%;
position: absolute;
border: 1px solid #fff;
border-radius: 40% 60% 30% 55% / 40% 35% 45% 60%;/*슬래시로 중첩해서 사용*/
transition: 0.5s; /*hover했을때 bgc나타나는 시간*/
}
/*각각을 hover했을때 선은 없어지고 컬러만 나타냄*/
.square:nth-child(1):hover span{
background-color: crimson;
border: none;
}
.square:nth-child(2):hover span{
background-color: dodgerblue;
border: none;
}
.square:nth-child(3):hover span{
background-color: yellowgreen;
border: none;
}
/*애니메이션 시차 두어 교차하도록 함*/
.square span:nth-child(1){
animation: circle 6s linear infinite;
}
.square span:nth-child(2){
animation: circle 4s linear infinite;
animation-direction: reverse; /*시계반대방향*/
}
.square span:nth-child(3){
animation: circle 10s linear infinite;
}
/*hover했을때 bgc투명도 조절. 따로하는 이유는 기존 border 투명도 유지 위해*/
.square:hover span:nth-child(1){
opacity: 0.3;
}
.square:hover span:nth-child(2){
opacity: 0.6;
}
.square:hover span:nth-child(3){
opacity: 0.8;
}
.square div{
/* border: 1px solid red; */
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 80%;
text-align: center;
color: #fff;
}
.square div a{
color: #fff;
border: 1px solid #fff;
padding: 8px;
border-radius: 40% 60% 30% 55% / 40% 35% 45% 60%;
}
@keyframes circle{
0%{
transform: rotate(0);
}
100%{
transform: rotate(360deg);/*360도 시계방향회전*/
}
}