position
1. static position
2. relative position
- 원래 있어야할 위치를 기준으로 좌표를 지정할 수 있음.
 
- 이대 원래 있어야할 요소 위치는 그대로 존재함
 
3. absolute position
- 가장 가까운 위치에 있는 position 속성이 relative인 부모 요소를 기준으로 ⬅➡⬆⬇ 값으로 요소를 위치
 
- position 속성이 relative인 부모 요소가 없으면 body 요소를 기준으로 위치
 
- 문서 일반적인 흐름에 포함 X -> 페이지 레이아웃 공간도 배정 X
- 다른 요소가 먼저 위치를 점유해도 덮어 씌울 수 있다.
 
 
4. fixed position
overflow
    
        
            | property 값 | 
            설명 | 
        
    
    
        
            | visible | 
            부모 영역을 벗어난 부분을 표시 | 
        
        
            | hidden | 
            부모 영역을 벗어난 부분을 잘라냄 | 
        
        
            | scroll | 
            부모 영역을 벗어난 부분이 없어도 스크롤 표시 | 
        
    
    
        
            | auto | 
            부모 영역을 벗어난 부분이 있을 때맘 표시 | 
        
    
transition
- 값 변경시 값 변화가 일정시간에 걸쳐 일어나도록 해주는 기능
    
        
            | property 값 | 
            설명 | 
        
    
    
        
            | transition-property | 
            트랜지션 대상이 되는 CSS property 지정 | 
        
        
            | transition-duration | 
            트랜지션이 일어나는 일정 시간을 s 또는 ms로 지정 | 
        
        
            | transition-timing-function | 
            특별한 함수를 통해 시간별 트갠지션 속도 지정 | 
        
        
            | transition-delay | 
            언제 트랜지션을 시작할지 s 또는 ms로 지정 | 
        
    
    
        
            | transition | 
            모든 트랜지션 값을 한번에 지정하는 단축 property | 
        
    
 
div{
	transition-property : opacity, width, height, background-color;
    transition-duration : 3s, 2s, 2s, 2s;
}
timing-function
- cubic-bezier() 함수를 이해할 필요가 있음
 
- p0, p1, p2, p3과 같이 네개의 값을 기반으로 표현되는 곡선, 각 값은 0~1 사이의 값
 
- ease : 느리게 빠르게 느리게
linear : 동일한 속도
ease-in : 느리게 동일한 속도
ease-out : 느리게 급빠르게 느리게
ease-in-out : 느리게 조금빠르게 느리게
step-start : 시작하자마자 끝
step-end : 일정 시간 후 바로 끝
steps(n, start|end) : n단계로 나누어 변화
cubic-bezier(n, n, n, n) : 베지어 곡선, n은 0~1값 참조사이트 
단축 property
transition : property duration function delay
transition : margin 2s ease-in 1s;
animation
- transition은 최종 스타일만 지정하지만 animation은 중간에 변경되는 스타일을 세밀하게 지정할 수 있다.
 
- CSS 스타일과 중간상태를 나타내는 키프레임(@keyframes)으로 이루어져 있다.
 
- JS animation보다 성능이 뛰어난데 브라우저에서 안보이는 요소를 알 수 있어서, 애니메이션 엡데이트 주기를 최적화하기 때문에 이를 알기 어려운 JS보다 성능이 좋다.
 
- 가벼운 효과는 CSS 애니메이션
세밀한 제어는 JS 애니메이션
    
        
            | property 값 | 
            설명 | 
            기본값 | 
        
    
    
        
            | animation-name | 
            @keyframes 애니메이션 이름 지정 | 
             | 
        
        
            | animation-duration | 
            한 싸이클의 애니메이션에 소요되는 시간을 s또는 ms로 지정 | 
            0S | 
        
        
            | animation-timing-function | 
            transition과 같이 애니메이션 속도 설정을 위한 함수 지정 | 
            ease | 
        
        
            | animation-delay | 
            애니메이션 시작 전, 대기시간을 s또는 ms초로 지정 | 
            0S | 
        
        
            | animation-iteration-count | 
            애니메이션 재생 횟수 지정 | 
            1 | 
        
        
            | animation-direction | 
            애니메이션 종료 후 반복될 때 진행방향 지정 | 
            normal | 
        
        
            | animation-fill-mode | 
            애니메이션 종료 또는 대기 시의 요소 스타일 지정 | 
             | 
        
      	
            | animation-play-state | 
            애니메이션 재생 상태 지정 | 
            running | 
        
    
    
        
            | animation | 
            애니메이션 단축 property | 
             | 
        
    
 
keyframes 문법
- from 또는 0%에 설정한 스타일에서 출발해서, to또는 100%까지, 도 그 중간 시점을 %로 표기하여, 각 시점에 설정한 스타일로 변경되는 스타일을 설정할 수 있다.
 
@keyframes ball{
	0% {
    	top : 0;
    }
    50% {
    	top : 100px;
    }
    100% {
    	top : 300px
    }
}
- 애니메이션 요소 설정
- animation-name에 정의한 @keyframes이름 넣기
 
- animation-duration에 한 싸이틀의 애니메이션에 소요되는 시간을 s 또는 ms로 지정
 
- animation-interation-count에 애니메이션 반복횟수 넣기
 
 
.클래스 이름{
	position : absolute;
    width : 100px;
    height: 100px;
    border : 2px soild #F4B441;
    background: #F2D541;
    border-radius:10px;
    animation-name : ball;
    animation-duration: 5s;
    animation-interation-count : infinite;
}
animation-fill-mode
- none : 처음 스타일 -> 0% -> 100% -> 처음 스타일
forwards : 처음 스타일 -> 0% -> 100% -> 100%
backwards : 0% -> 0% -> 100% -> 처음 스타일
both : 0% -> 0% -> 100% -> 100% 
animation-plat-state
- paused : 중지상태
running : 실행상태 
animation 단축 property
animation : name duration timing-function dalay iteration-count direction fill-mode
            play-state
            
animation : ball 2s ease-in 4s infinite reverse both paused;
- 요소의 회전, 크기조절, 기울이기, 이동효과를 부여하는 함수를 제공
    
        
            | transform 함수 | 
            설명 | 
            transform 함수 인자 값 | 
        
    
    
        
            | translate(x,y) | 
            요소 ㅊ위치를 가로로 x, 세로로 y만큼 만큼 이동 | 
            CSS 기본 단위(px, %, em등) | 
        
        
            | scale() | 
            요소 크기를 가로로 x배, 세로로 y배 확대 또는 축소 | 
            0 또는 양수(1보다 크면 확대 0~1은 축소) | 
        
        
            | skew(x-angle, y-angle) | 
            요소를 가로로 x도, 세로로 y도 만금 기울임 | 
            +-각도(deg) | 
        
        
            | roate(andgle) | 
            요소를 주어진 각도만큼 회전 | 
            +-각도(deg) | 
        
    
 
참고 문서
float
- 수평정렬과 이미지와 함께 텍스트를 배치하기위해 고려됨.
 
- float 값을 준 요소는 기본적으로 display 설정을 block으로 바꿔버림 (flex라고 명시되어있는 경우 제외) 이때 width값은 content만큼의 크기를 부여하여 마치 inline-block 특성처럼 보임.
 
- float는 복잡하고 특별한 룰셋을 갖고 있어서 기본 동작과 달라보이는 다양한 케이스가 나타날 수 있다.
 
- 그래서 최근에는 flexbox, grid를 많이 사용하고 있다.
 
float property
- none : 요소를 떠 있지 않게 함
right : 요소를 오른쪽으로 이동
left : 요소를 왼쪽으로 이동 
clear
- none : 양쪽 float를 사용할 수 있다.
right : 왼쪽 float 사용해제
left : 오른쪽 float 사용해제 
clearfix
- 통상 clearfix라고 명명하고 
clearfix::after 속성을 줘서 dom 구조가 완성 된 후 after 속성으로 높이를 인지하여 float를 clear해주는 방식으로 사용했다. 하지만 이 방법은 FM은 아니고 살짜 야매다.