출처- https://youtu.be/krdFNe2R27E

@keyframes 는 움직임 시간의 흐름을 관리하는 규칙.

@keyframes name{
	from{ /* 속성: 값 */ } /* from : 애니메이션의 시작 장면 */
	n% { /* 속성: 값 */ } /* n% : 시작점부터 n% 흐른 시점의 장면. ex) 시작점부터 50% 흐른 시점 */
    to { /* 속성: 값 */ } /* to : 끝이 되는 장면 */
	
}

/* 여기서 장면은 실제 추가적인 장면이라기 보다는 프레임 단위의 행위..? 동작..? 을 뜻하는 듯 함 */

animation-name : @keyframes 애니메이션의 이름을 지정해서 요소로 가져온다.

animation-duration : 애니메이션이 한 주기를 완료하는데 걸리는 시간을 정의

animation-delay : 애니메이션 시작에 대한 지연을 지정.

animation-iteration-count : 애니메이션을 재생해야 하는 횟수를 지정.

animation-direction : 애니메이션을 앞으로, 뒤로 또는 번갈아 재생해야 하는지 여부를 정의

animation-timing-function : 애니메이션의 속도 곡선을 지정

animation-fill-mode : 애니메이션이 재생되지 않을 때(시작 전, 종료 후 또는 둘 다) 요소의 스타일을 지정

animation-play-state : 애니메이션이 실행 중인지 일시 중지되었는지 지정.

 

1.animation-name & animation-duration (ctrl + F 를 이용하면 찾기가 편합니다.)

css

/* 애니메이션 선언 */
/* img를 왼쪽 끝에서 오른쪽 끝으로 보내는 애니메이션. */
@keyframes move{ /* move 라는 이름의 애니메이션 선언 */
	from{ /* 애니메이션의 시작점 */
		left: 0;
		transform: rotate(0deg);
	}
	to{ /* 애니메이션의 끝점 */
		left: 500px;
		transform: rotate(360deg);
	}
}
/* animation-name 등장 */
img{
	animation-name : move; /* 애니메이션을 적용할 태그 or 클래스에 애니메이션 move를 연결 */
	animation-duration : 1s; /* 애니메이션이 동작할 시간. 이걸 적용안하면 애니메이션이 동작하지 않음. */
	position : relative; /* move를 보면 left 라는 속성을 사용했음. 이는 position 속성으로 기준점을 잡아줘야한다. */
}

/* img가 여러개라면 각각의 이미지의 duration을 따로 줄 수도 있음. */
img:nth-child(1){ /* :nth-child(n) 에서 첫 번째 자식은 0이 아니라 1이다. */
	animation-duration : 1s;
}
img:nth-child(2){
	animation-duration : 2s;
}

 

2. animation-iteration-count

css
/* 우선 1번에서 이용한 keyframes를 그대로 이용. */

img:nth-child(1){
	animation-iteration-count : 1; /* 기본 값, 한 번 재생 */
}
img:nth-child(2){
	animation-iteration-count : 4; /* 네 번 재생 */
}
img:nth-child(3){
	animation-iteration-count : infinite; /* 무한 재생 */
}

 

3. animation-direction

상단의 keyframes를 이용..


/* animation-direction 은 애니메이션을 앞으로, 뒤로, 또는 번갈아 재생 할 것인지를 정한다. */

img:nth-child(1){
	animation-direction : normal; /* 기본 값, 정방향 */
}
img:nth-child(2){
	animation-direction : reverse; /* 역방향 */
}
img:nth-child(3){
	animation-direction : alternate; /* 왕복 - 애니메이션 재생 횟수가 많아야함. 그래야 왕복이 보임. */
}
img:nth-child(4){
	animation-direction : alternate-reverse; /* 역방향 왕복 */
}

 

 

 

 

 

4. animation-delay

/* 상단의 keyframes 이용 */
/* 애니메이션 시작 전 delay(지연)를 걸어줌 */
img:nth-child(1){
	animation-delay: 0.5s;
}

5. animation-fill-mode

/* 상단의 keyframes 이용 */

/* animation-fill-mode : 애니메이션이 재생되지 않을 때(시작 전, 종료 후, 혹은 둘 다) 요소의 스타일을 지정 */
img:nth-child(1){
	animation-fill-mode : backwards; /* 정지시 첫 번째 키프레임(from)으로 이동. */
}
img:nth-child(2){
	animation-fill-mode : forwards; /* 정지시 마지막 키프레임(to)으로 이동. */
}

6. animation-play-state 

/* 상단의 keyframes 이용 */

/* animation-play-state : 애니메이션이 실행중인지, 일시 중지 되었는지 지정. */

img:hover{/* 이미지 위에 마우스를 올려 두었을 때. */
	animation-play-state : paused; /* 제자리에 멈춤. 이미지에서 마우스를 떼면 다시 움직임. */
}

7. animation-timing-function

/* 상단의 keyframes 이용 */

/* animation-timing-funtion : 애니메이션의 속도 곡선을 지정. */

img:nth-child(1){
	animation-timing-funtion : ease; /* 기본 값(기본 속도) */
}
img:nth-child(1){
	animation-timing-funtion : ease-in; /* 가속 */
}
img:nth-child(1){
	animation-timing-funtion : ease-out; /* 감속 */
}
img:nth-child(1){
	animation-timing-funtion : ease-in-out;  /* 시작은 감속 돌아올 때는 감속 */
}
img:nth-child(1){
	animation-timing-funtion : linear; /* 균등 속도 */
}
img:nth-child(1){
	animation-timing-funtion : cubic-bezier(0.785,0.135,0.15,0.86);; /* 속도 곡선을 임의로 만듦 */
}

 

animation 도 한줄로 작성 할 수 있다.

 

 

animation : /* 이름 시간 속도 지연시간 횟수 방향 fillmode playstate; */

animation : /* (name) (duration) (timing-funtion) (delay) (iteration-count) (direction) (fill-mode) (play-state); */

'CSS' 카테고리의 다른 글

transform(x축,y축,z축 회전)(+position과의 차이)(3/2공부)  (0) 2023.03.02
2/13 공부 (반응형)  (0) 2023.02.13
2/8 공부  (0) 2023.02.09
2/7 공부  (0) 2023.02.07
공부 2/6  (0) 2023.02.06

출처는 https://www.youtube.com/watch?v=DVvXE4uN1oA  이분의 영상을 참고했습니다.

 

transform - 요소를 변형시키는 함수.

 

2D transform

translate(x,y) : 요소를 이동시키는 함수.

scale(x,y) : 요소의 크기를 변형

rotate(deg) : 요소를 회전시키는 함수.

skew(x,y) : 요소를 기울이는 함수.

matrix(n,n,n,n,n,n) : 6개의 행렬을 사용하여 2d transform 값을 한번에 처리.

- 순서대로, (scale x, skew x, skew y, scale y, translate x, translate y)

 

사용 방법.(ctrl + F 를 이용하면 더 편하게 볼 수 있습니다.)

1.scale - 크기 변경

css
/* scale 사용법. - 크기 변경. */

.abc{
	transform : scale(0.5,0.5); /* x축과 y축 모두 크기 변경 */
	transform : scaleX(0.5); /* x축 크기 변경 */
	transform : scaleY(0.5); /* y축 크기 변경 */
}

 

2. translate - 이동.

css

/* translate - 이동. */

.abc{
	transform: translate(20px,-20px); /* x축 y축 모두 이동. */
	transform: translateX(20px); /* x축만 이동 */
	transform: translateY(-20px); /* y축만 이동 */
}

3. skew - 기울기.

css

/* skew - 기울기 */

.abc{
	transform: skew(20deg,-20deg); /* x,y 모두 기울기 */
	transform: skewX(20deg); /* x축만 기울기 */
	transform: skewY(20deg); /* y축만 기울기 */	
}

4. rotate - 회전

css 


/* rotate - 회전 */

.abc{
	transform: rotate(30deg); /* 우측회전 */
}

5. matrix - 한번에 처리

css

/* matrix - 한꺼번에 배열로 처리 */

.abc{
	transform: matrix(0.5,0.3,0.2,0.5,10,10);
    /* matrix(scaleX,skewX,skewY,scaleY,translateX,translateY); - translate의 단위는 적지 않음. */
}

 

transform-origin : 요소가 변형될 때 변형의 기준점.

transform-origin : (x축 위치) (y축 위치); - 위치는 top, right, bottom, left, center

.abc{
	transform-origin: left top;
	transform-origin: center;
	transform-origin: right bottom;
}

 

3D transform

 

rotateX,rotateY,rotateZ

.abc{
	transform: rotateX(180deg); /* x축 기준 회전 */
	transform: rotateY(180deg); /* y축 기준 회전 */
	transform: rotateZ(180deg); /* z축 기준 회전 */
}

/* 회전에 더욱 생동감을 주려면 */
.abc{
	perspective : 200px; /* 을 주면 됨. - 3D 요소가 표시되는 방식에 대한 관점 */
}

// backspace-visibility : visible or hidden;

.abc{
	backspace-bisibility : visible; /* div 박스의 뒷면이 보임.(기본 값) */
	backspace-bisibility : hidden; /* div 박스의 뒷면이 안보임. */
}

 

transform 함수는 여러개를 동시에 사용할 수 있다.

 

.abc{
	transform: scale(1,2) rotate(90deg); /* 띄어쓰기를 이용하여 사용 가능. */
}

 

+

 

position absolute는 본인의 공간이 사라지고 div 구조가 붕괴되지만, 

translate는 본인의 공간을 유지한 상태로 이동한다.

'CSS' 카테고리의 다른 글

css 애니메이션 효과(3/2 공부)  (0) 2023.03.02
2/13 공부 (반응형)  (0) 2023.02.13
2/8 공부  (0) 2023.02.09
2/7 공부  (0) 2023.02.07
공부 2/6  (0) 2023.02.06

@media(min-width: 00px){

값.

}

@media(조건){

조건이 맞을때 값이 변경된다.

}

'CSS' 카테고리의 다른 글

css 애니메이션 효과(3/2 공부)  (0) 2023.03.02
transform(x축,y축,z축 회전)(+position과의 차이)(3/2공부)  (0) 2023.03.02
2/8 공부  (0) 2023.02.09
2/7 공부  (0) 2023.02.07
공부 2/6  (0) 2023.02.06

position 

 

sticky :

- 기존의 자리를 유지하다가, 스크롤을 하여 웹 브라우저의 상단에 닿으면 fixed 처럼 움직임.

- 다시 제자리로 돌아가면 고정.

- 기본적으로 static처럼 작동.

- top : 0;  ->>  브라우저 기준 맨 위에 닿았을 때 작동한다.

 

backdrop-filter : 배경필터. 배경을 흐리게 또는 색상이동과 같은 그래픽 효과를 줌

 

flex :

- 기본 축(Main Axis) - 왼쪽에서 오른쪽으로 가는 수평 축.

- 교차 축(Cross Axis) - 위쪽에서 아래쪽으로 가는 수직 축. 

* 그러나 direction에 따라 기본축과 교차축의 내용이 서로 바뀐다.

*-reverse를 하면 방향도 바뀐다.

* 기본적으로 요소들은 기본 축 방향으로 진행하며, 교차축은 꽉 채운다.

 

- flex-direction : 배치할 방향

  - 기본적으로 가로 방향.(row행)

  - 세로방향(column열)

  - 왼쪽에서 오른쪽으로, 위에서 아래로 가는데, -reverse를 하면 반대로 동작.

 

- justify-content, align-items : 정렬

  - justify-content :

    - 기본축 방향 정렬

    - center : 중앙정렬

    - flex-end : 기본축의 맨 끝을 기준으로 정렬

    - flex-start : 기본축에서 맨 앞(기본)

    - space-around : 기본축에서 띄엄띄엄 배치. 서로 양 옆에 같은 공간을 가짐. : 

    - space-between : 기본축에서 양 끝에 배치.

    - space-evenly : 기본축에서 띄엄띄엄 배치. 서로 양 옆의 총 공간이 같음. 

  - align-items :

    - 교차축 방향 정렬

    - center : 중앙정렬

    - flex-end : 교차축의 맨 끝을 기준으로 정렬

    - flex-start : 교차축에서 맨 앞

    - stretch : 교차축에서 늘려서 배치(기본)

 

- flex-wrap : 요소가 넘칠 때

  -wrap : 넘치는건 줄바꿈됨.

 

- gap :  요소 간격

  - gap : 세로px 가로px 근데 마진처럼 전방향으 동작하는게 아니라, 요소가 있다면, 요소간의 간격에만 적용된다.

 

- flex-grow, flex-shrink,flex-basis : 크기 늘이거나 줄이기. 유연한 배치

  - flex-grow : 상대적인 값(기본값 0, 숫자에 비례하여 크기가 늘어남.)

  - flex-shirink : 공간이 넘칠때  width를 강제로 줄이는 정도(기본값 1, 0일때는 크기를 줄이지 않음. 숫자가 클 수록 많이 줄임.)

  - flex-basis : 요소의 시작 크기.(기본값 auto) 

  - flex-grow, flex-shrink, flex-basis를 동시에 사용 가능 : flex : 1 0 100px

 

Grid

- 가로 세로 두 방향(2차원) 으로 배치할 수 있는 것.

- 왼쪽에서 오른쪽으로(column),위에서 아래(row)

- 각 칸을 나누는 줄 : grid line

- 각 칸 : grid cell

 

 

- grid-template-rows 

- grid-template-columns : 격자 나누기 = 한 줄을 입력한 값으로 나눈다.

ex) grid-template-rows : 10px 10px 10px; -> 10px 세칸

grid-template : 10px 10px 10px / 20px 20px 20px

-> 가로(columns) / 세로(rows)

 

Q.크기를 유동적으로는 불가능한가

A. 가능.

 

gird-template : 1fr 1fr 1fr ; - 1 : 1: 1의 비율. 상대적인  수치를 넣으면 됨.

 

*유동 크기를 정해줄 수도 있음.

grid-template : minmax(200px,300px) - minmax에도 fr 단위를 쓸 수 있는데, MAX값에만 사용 가능.

*반복적인 처리

repeat(횟수, 사이즈)

 

- gap : 간격

flex 와 사용법이 완전히 같음.

 

- grid-auto-rows

- grid-auto-columns: 크기 미리 정하기

따로 rows/columns의 값을 정하지 않았을때 사용.

 

우선 grid-template-rows/columns 로 값 선언 후 

grid-auto-rows/columns : 값.

ex) gid-auto-rows : 200px; -> 모든 로우값이 200px 

 grid-auto-rows : 100px 200px 300px; -> 100,200,300px 이 번갈아가면서 나옴.

 

- grid-row/column, span : 원하는 위치에, 여러 칸에 걸쳐서 배치

grid는 왼쪽 위 모서리가 (1.1)이다. 그래서 1씩 증가하며 칸을 찾을 수도 있고,

           우측 아래 모서리는 (-1,-1)로 -1씩 감소하며 칸을 찾을 수도 있다.

ex) 5X5 cell의 grid는 (3,3)과 (-3,-3)이 같다.

사용법

- div를 (3,3)의 자리로 옮기고 싶을때

<div>

  <style>

    grid-row : 3;

    grid-column : 3;

  </style>

</div>

*주의할점. grid 모서리 격자의 번호지 셀의 번호가 아님. 4x5의 칸을 가지고 있는 그리드의 경우

(1,1)~(5,6) 까지의 모서리 격자 번호가 존재. 

예를 들어 ex)

 

(2,3)cell ~ (4,5)cell 의 자리까지 같은 색으로 채우고 싶을때

<div>

  <style>

    grid-row : 2 / 5;  /* row 2번줄 ~ 5번줄까지 */

    grid-column : 3 / 5;  /* column 3번줄 ~ 6번줄까지 */ 

또는

    grid-row : 2 / span 3; /* row 2번줄부터 아래로 3칸 */

    grid-column : 3 / span 3; /* column 3번줄부터 오른쪽으로 3칸 */

  </style>

</div>

 

- grid-area, grid-template-areas : 이름으로 배치

 

  grid-area : 이름;   - 이름 선정.

  grid-template-areas : "이름, 이름" "이름,이름"; - "앞은 row,뒤는 column값"

 

ex)

<div class = "a">

  <div class = "b">

  </div>

  <div class = "c">

  </div>

</div>

 

css

.a{

  display : grid;

  grid-template:

    repeat(2, 1fr) / repeat(2, 1fr)

    grid-template-areas : "r g" "r g";

}

 

.b{

gird-area : r;

}

.c{

grid-area : g;

}

'CSS' 카테고리의 다른 글

transform(x축,y축,z축 회전)(+position과의 차이)(3/2공부)  (0) 2023.03.02
2/13 공부 (반응형)  (0) 2023.02.13
2/7 공부  (0) 2023.02.07
공부 2/6  (0) 2023.02.06
1/31 공부  (0) 2023.02.01

normal flow = 웹 사이트의 기본 틀.

 

position :

- 기본 틀을 부숨.

 

- static :

     - position의 기본값

     - 원래 있어야 할 위치에 배치

     - 일반적인 글의 흐름을 따름

     - 위치의 기준. 

     - top bottom right left를 이용함.

     - 모든 요소는 기본적으로 static임.

- relative : 

      - 상대적임. 

      - 원래 있어야할 위치를 기준.

      - 원래 있던 공간은 그대로 비워둠.

- absolute :

     - 가장 가까운 조상요소를 기준으로.

     - relative 가 있는 곳을 기준삼음.

     - 기존의 배치를 벗어남. = 이후에 나오는 div가 자리를 차지함.

     - top,bottm,right,left를 전부 0px로 설정하거나,

        inset 0px;을 하면 조상요소를 덮어버림.

- fixed :

     - 기준이 브라우저 화면임.

     - 고정됐다 라는 뜻으로, 화면을 이동해도 고정됨.

     - 원래 있던 자리는 다음 div가 차지.

     - 스크롤을 계속 해도 제자리에 있음.

     - 네비게이션이랑 내용이 겹쳐서 안보일 수 있음

-> margin을 이용해서 네비게이션 바의 높이만큼 너비를 지정해줘서 네비게이션이 따라오게 만들 수 있다.

'CSS' 카테고리의 다른 글

2/13 공부 (반응형)  (0) 2023.02.13
2/8 공부  (0) 2023.02.09
공부 2/6  (0) 2023.02.06
1/31 공부  (0) 2023.02.01
1/27 공부  (0) 2023.01.27

결합자 사용법

 

ex) 만약 아래와 같은 html 코드가 있다.

main{

  <div class = "abc">

    <ul>

      <li></li>

      <li></li>

    </ul>

  <div>

}

 

style.css

 

자식결합자의 경우 : 바로 아래 자식을 표기. > 를 이용한다.

div > ul

.abc > ul

ul > li

div > *   - 모든 자식요소 선택.

 

자손 결합자의 경우 : 띄어쓰기를 이용하며, 자손의 무엇이든 가능. 이왕이면 자식에는 안 쓰는게 보기 편할듯.

div ul

div li

.abc li 

 

n 번째 자식 선택자

:nth-child() - ()안에는 odd,even,2n,숫자 등이 들어갈 수 있음.

숫자는 1부터 시작함.

첫번째 자식은 :first-child 마지막은 :list-child 를 이용가능

 

'CSS' 카테고리의 다른 글

2/8 공부  (0) 2023.02.09
2/7 공부  (0) 2023.02.07
1/31 공부  (0) 2023.02.01
1/27 공부  (0) 2023.01.27
나의 css 코드 컨벤션  (0) 2023.01.26

label태그는 inline요소라 위아래 margin값이 적용이 안됨. 

display : inline-block;을 해야함.

 

input타입의 placeholder의 속성 변경 방법

input의 id 혹은 class명 혹은 특정위치의 input 뒤에 ::placeholder 선택

 

section/article 을 사용할때는 내부에 h1-h6이 들어있어야한다.

 

'CSS' 카테고리의 다른 글

2/8 공부  (0) 2023.02.09
2/7 공부  (0) 2023.02.07
공부 2/6  (0) 2023.02.06
1/27 공부  (0) 2023.01.27
나의 css 코드 컨벤션  (0) 2023.01.26

linear-gradient(180deg, 시작색상, 종료색상); - deg는 생략이 가능 -> 그라데이션 효과를 줌

deg는 각도를 뜻하는 degree이다. 기본적으로 180도(위에서 아래로) 내려오게끔 설정 되어 있다.

 

rgba(red,green,blue,alpha); - 색상 rgb와 투명도 조절 alpha -> 0~1 0에 가까울수록 투명

opacity와 같은 기능.  opacity 역시 0~1까지. -> 근데 얘는 요소 전체를 흐리게함. 포함되있는 모든게 흐려짐

- alpha의 경우 본인만 흐려진다.

 

box-shadow : 0px, 0px, 0px, 0px, rgb(a) -> 박스의 그림자 가로,세로, 흐린정도, 퍼지는정도, 색상.

 

overflow - 박스의 크기보다 콘텐츠의 양이 많아 박스 바깥으로 나오는 현상.

그래서 css 로 overflow: hidden; 을 해주면 넘치는 내용이 가려진다.

overflow : scroll;은 스크롤을 내리면 보이게해준다.

-가로로 스크롤하게 만들수도 있는데, white-space : nowrap;을 하면 가로로 스크롤이 가능하다.

(하지만 전체 화면의 스크롤이 되버림. 해당 부분만 스크롤 하게 바뀌지 않음)

- white-space : nowrap;은 줄바꿈을 안하겠다 라는 선언으로, 보통의 css는 화면이 넘치지 않게 줄바꿈을 지원하는데, 해당 코드를  사용하면 줄바꿈을 안하게 만들어서 화면 밖으로 나가면서 스크롤이 생긴다.

->> 그래서 overflow:scroll과 white-space : nowrap;을 같이 쓰면 해당 overflow된 부분에만 스크롤이 생김.

 

 

margin 상쇄 : margin은 세로 margin끼리 만났을 때, 더 큰 margin값을 적용한 후 작은 값의 margin은 적용되지 않는다.

(작은 값의 margin은 없어도 됨.) * 하지만 사이에 border값이나 padding값으로 거리가 있다면 상쇄되지 않음.

'CSS' 카테고리의 다른 글

2/8 공부  (0) 2023.02.09
2/7 공부  (0) 2023.02.07
공부 2/6  (0) 2023.02.06
1/31 공부  (0) 2023.02.01
나의 css 코드 컨벤션  (0) 2023.01.26

+ Recent posts