➡️ scale 은 1보다 크면 크게 만들고 1보다 작아지면 작게 만든다.
뒷면 숨김 여부
img{
width: 300px;
height: 300px;
}
.main{
width: 300px;
height: 300px;
background-color: red;
}
/* translate : 이동 */
transform: translate(50px, 50px);
transform: translateX(20px);
transform: translate(65px,50px);
/* -쪽으로도 움직일 수 있음*/
transforn: translate(-10px,20px)
/* scale : 크기조절 */
transform: scale(0.7);
transform: scaleX(1.5);
/* rotate : 회전 */
transform: rotate(45deg); 시계방향
/* -붙으면 반시계방향 */
transform:rotateX(45deg) : x축으로 회전
/* skew: 기울기 */
transform: skew(10deg, 237deg);
transform:skewX(10deg)
/* -> x축으로만 기울어짐 */
/* 3d */
transform: rotate3d(1, 1, 1, 1045deg);
/* x,y,z축임 */
/* 뒤집어졌을때 이미지를 안보여지게 하는 속성 */
transform: rotateY(180deg);
backface-visibility: hidden;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="examtransform.css">
</head>
<body>
<div class="main">
<div class="image img1">
<img src="naver.png" alt="naver">
</div>
<div class="image img2">
<img src="git.png" alt="git">
</div>
<div class="image img3">
<img src="velog.png" alt="velog">
</div>
</div>
</body>
</html>
img {
width: 300px;
height: 300px;
}
.main {
position: relative;
}
.image {
position: absolute;
transform: skewY(20deg);
}
.img1 {
top: 180px;
left: 100px;
z-index: 10;
}
.img2 {
top: 150px;
left:350px;
z-index: 5;
}
.img3 {
top: 120px;
left: 600px;
}
➡️ 구조적으로 생각해서 하는 연습을 꼭 해야한다.
전환(시작과 끝)
효과를 지정하는 단축 속성transition
하면 자동으로 어떤 자리에 어떤 값을 써야하는지 나오긴 한다.transition: 속성명 지속시간 타이밍함수 대기시간;
초(s)
이다.타이밍(Easing)
함수를 지정한다.<!-- transition 실습 -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="index2.css">
</head>
<body>
<h1>CSS transition</h1>
<div class="box box1"></div>
<div class="box box2"></div>
<div class="box box3"></div>
<div class="box box4"></div>
</body>
</html>
.box{
height: 100px;
width: 100px;
cursor: pointer;
}
.box1:hover{
width: 400px;
background-color: brown;
opacity: 0.5;
transition-duration: 1s;
transition-timing-function: ease;
/* 마우스커서가 다가가면 0.5초있다가 변한다는 것 */
transition-delay: 0.5s;
}
.box2:hover{
background-color: pink;
transform:rotate(180deg);
transition: all 1s ease-in-out;
}
.box3:hover{
transform:scale(3) translate(100px,100px);
transition: all 3s ease-in-out;
}
.box4:hover{
transform:translate(-5px, -15px);
/* 영역에다가 그림자 효과(음영생김)
(x축,y축, 얼마나 뿌옇게할거냐(숫자올라가수록 더 진해짐),그림자색상) */
box-shadow: 4px 4px 10px #000800;
transition: all 0.2s ease-in;
}
.box1{
background-color: aquamarine;
}
.box2{
background-color: yellow;
}
.box3{
background-color: gray;
}
.box4{
background-color: palegoldenrod;
}
🖊️ 동영상으로 결과를 보이기위해 port주소를 첨부하겠다.
https://minjeong9707.github.io/POSCO_WEB_11/video_comp/transition.html
@keyframes
이다.from
: 애니메이션의 시작 상태to
: 애니메이션의 마지막 상태animation-name
: keyframes로 지정한 애니메이션 이름animation-duration
: 애니메이션 지속 시간animation-delay
: 애니메이션이 작동되기까지 지연되는 시간(이 시간이 지나고 애니메이션 작동됌)animation-iteration-count
: 애니메이션의 반복 횟수를 지정한다. 소수점 가능하고 infinite
으로도 설정가능하다.animation-timing-function
: 애니메이션의 반복 형태transition-timing-function
에서 쓰인 내용과 동일하다.animation-direction
: 애니메이션의 방향normal
, reverse
, alternate
, alternate-reverse
있다.
➡️ 파랑색 글씨는 필수속성이고 검은색 글씨는 선택속성이다.
<!-- animation 실습 -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="index3.css">
</head>
<body>
<h1>animation</h1>
<div class="box"></div>
<div class="bounce-ball1"></div>
<div class="bounce-ball2"></div>
</body>
</html>
.box{
width: 100px;
height: 100px;
background-color:red;
position: relative;
animation-name: my-ani;
animation-duration: 2s;
animation-delay: 1s;
animation-iteration-count: 2;
animation-timing-function: ease-in-out ;
}
@keyframes my-ani{
0%{
left : 0px;
}
25% {
left:200px;
}
50%{
left: 400px;
}
75% {
left : 600px;
}
100%{
left: 0px;
}
}
.bounce-ball1{
position:relative;
left: 100px;
top: 0;
width: 100px;
height: 100px;
border-radius: 50%;
background-color: aquamarine;
/* animation 풀어쓰기 */
animation-name: bounce1;
animation-duration: 1s;
animation-timing-function: ease-in;
/* normal, reverse, alternate, alternate-reverse */
animation-direction: alternate;
animation-iteration-count: infinite;
/* 단축속성 */
animation: bounce1 1s ease-in infinite alternate;
}
@keyframes bounce1{
/* 0% */
to{
top:50px;
}
/* 100% */
from{
top:300px;
}
}
.bounce-ball2{
width: 50px;
height: 50px;
border-radius: 50%;
position: absolute;
background-color: pink;
animation: bounce2 2s infinite ;
}
/* 더 공이 튀기는 모양으로 보여짐 */
@keyframes bounce2{
/* 시작할때는 끝에 붙어있는 것 */
from,
to{
bottom: 0px;
animation-timing-function: ease-out;
}
/* 속도가 중간까지 느리게갔다가 빠르게 내려오고.. */
50%{
bottom: 300px;
animation-timing-function: ease-in;
}
}
animation-timing-function
의 세부사항에 따라 변화가 어떠한지, from/to
와 0~100%
를 사용했을때의 차이, animation의 단축속성을 어떻게 쓰는지, 두개의 ball의 속도는 어떠한지 등을 중점으로 이 예시를 보면 좋을 것 같다.https://minjeong9707.github.io/POSCO_WEB_11/video_comp/animation_ball.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="prac3_animation.css">
</head>
<body>
<div class="content">
"As I relax on the sofa and gaze around a room a thought hits me: this is exactly the place I’ve been looking for all my life. A little hideaway in some sinkhole somewhere. I’d always thought of it as a secret, imaginary place, and can barely believe that it actually exists. I close my eyes and take a breath, and wonder of it all settles over me like a gentle cloud."
</div>
</body>
</html>
.content{
animation: text 2s linear 1s 1 ;
/* 아래 순서에 해당한다 참고. */
/* animation: name duration timing-function delay iteration-count; */
position: relative;
}
@keyframes text{
/* 애니메이션의 시작상태 */
from{
right:0;
width: 200%;
}
/* 애니메이션의 마지막 상태 */
to{
left: 0;
width: 100%;
}
}
https://minjeong9707.github.io/POSCO_WEB_11/video_comp/prac3_animation.html
css가 끝이 났다. 확실히 animation이나 transform 등을 적용하니 굉장히 입체로워진 것을 확인할 수 있었다.
트리구조를 생각하면서 레이아웃을 구성하는게 중요한데, 이게 익숙해질때까지 계속해서 코드를 보고 작성해봐야할 것 같다.
결론, 역시 css는 재밌다!