각 태그들은 기본 속성 값이 존재.
span 수직 정렬 기본 값은 baseline이다.
vertical-align: baseline
baseline? 글자 베이스 라인 밑줄
글자가 없을 경우 박스의 최하단을 베이스라인이라고 본다.
방법1:  
를 넣으면 공백하나를 글자로 인식해서 줄이 맞춰진다.
방법2:vertical-align:bottom
으로 맞추면 일정한 높이를 가질 수 있다.
https://developer.mozilla.org/en-US/docs/Web/CSS/border-style
border:선-두께 선-종류 선-색상
border가 컨텐츠 밖으로 씌워지는 것이다. = border의 두께만큼 상자가 커짐
아무것도 정해주지 않는다면, 컨텐츠 밖으로 border가 생긴다. 크기가 커진다.
border의 두께에 따라서 박스가 점점 커진다.
기본 값으로 medium이 있지만 정확한 단위(px,em 등)를 입력하는 것이 좋다.
margin과 padding과 단축속성 똑같다.
기본은 선 없음이다.
margin과 padding과 단축속성 동일하다.
50%이상을 주면 무슨 값이든 원이 된다.
기본적으로 요소의 내용으로 크기를 계산한다.
content박스일 때 content는 크기가 고정이고, padding과 border값은 옆에 추가로 붙어서 크기가 커진다.
border-box는 컨텐츠 사이즈가 줄어든다. padding과 border은 안 쪽에 붙어서
전체 크기가 고정되어있는다.
흘러넘치다.
요소의 크기 viewport 이상의 크기가 넘치면 스크롤을 만들어주는 것이 overflow이다.
부모의 요소 크기가 정해져있는데, 자식 요소 크기가 부모보다 커도 스크롤을 만들어준다.
기본 속성값은 visible
넘친 내용 그대로 보여준다.
hidden은 부모요소 크기에 맞춰 잘라버림
scroll은 페이지를 구성할 때 스크롤이 자리 차지하면서 생겨서 사용 안하는게 좋다.요소가 커지면 옆의 다른 콘텐츠를 밀어내버린다. 넘치지 않아도 스크롤이 생김 x축 y축 다.
요소엥 스크롤의 크기만큼 스크롤이 붙어서 요소가 커진다.
auto를 가장 많이 사용. 넘칠 경우에만, 넘친 축에만 스크롤을 만들어준다.
요소의 크기 이상으로 내용이 넘쳤을 때 보여짐을 제어하는 개별 속성
overflow-x
overflow-y
none으로 하면 화면에서 사라짐~
요소 투명도
기본으로 1 불투명
가시성
요소를 숨기는 3가지 방법
opacity
(투명하게 만들기)
모습만 숨기는 방법 / 속성 남음 / 자리 차지
visibility : hidden
모습과 속성을 숨기는 방법 / 자리 차지
display : none
그냥 없애 버리는 방법 / 자리도 사라짐
opacity 모습만 사라짐, 속성 남음 자리도 차지.(집에 가구는 남음)
visibility: hidden 자리만 차지게하 된다.
display:none 아예 존재조차안한것처럼 사라짐. 쓸 확률이 높음.
line-height: 줄 높이
특정 숫자보다는 배수나 %를 사용하는 것이 안전하다.
font-size를 변경해도 계속 적용되도록.
중앙 정렬할 때 특정 높이의 크기와 line-height를 동일하게 넣어주면 수직 정렬이 된다.
한글 폰트 : 눈누 https://noonnu.cc/
background : linear-gradient()
*relative: 자기 자신으로 기준
absolute의 기준이 되는 녀석.
문서 흐름을 해치지 않는다. 아래에 있는 빨간색 div 요소가 그대로 위치한다.
겉모습만 이동됐다고 생각하면 된다. 그대로 본인 자리에 있다.
그래서 빨간색 상자가 치고 올라오지 않는다.
기
container 또는 reb 이라고 한다 .
원래 넓이값은 부모에서 상속받는다.
자식값은 브라우저에서 자동으로 설정해준다.
div.container>div.item.item$
거리를 주면, 뷰 포트가 부모 요소 되어버린다. 나머지 콘텐츠들은 기준없음인 statice이니까
포지션 rel 줬을 때만 기준으로 삼기 시작한다.
absolute는 부모요소중에 포지션이 relative인 값을 단계단계 올라가서 기준으로 잡는다. 정 없으면 뷰 포트까지 올라간다.
대체로 absolute를 사용.
문서흐름에서 벗어나게되어서 붕 떠있게된다.
빈 자리를 자식3이 차지하게 된다.
고정됨. 부모 요소 중에 relative가 있든 말든,뷰포트를 기준으로 배치
보고있는 화면이 viewport니까 계속 유지되니까
스크롤이 내려가도 fixed인 상자는 계속 그 자리를 유지한다.
메뉴같은거 화면에 항상 붙어있어야하는 것에 쓴다.
요소의 쌓임 정도
span은 인라인 요소기 때문에 넓이 적용이 불가넝한..!
content 값에 따라서 크기가 자꾸 바뀌면 안되니까 블록으로 display가 바뀐다.
display : flex;
수평으로 정렬해준다.
wrap과 container로 div를 감싸서 사용한다.
<div class = "wrap">
<div class = "container">
<div></div>
</div>
</div>
flex는 전체적으로 한 줄을 먹는다.
inlin-flex는 인라인처럼 콘텐츠 크기만큼만 보인다.
콘텐츠의 시작점, 즉 주 축을 설정한다.
콘텐츠의 위치가 내려가는게 아니라 시작점이 달라지는 것이다.
flex 줄 바꿈
flex는 nowrap을 사용하면 강제로 콘텐츠의 크기를 줄여주면서 컨테이너 안에 한줄로 만든다.
flex의 기본 주축은 x방향이다.
flex-end는 콘텐츠는 123으로 오른쪽에 붙고
row-reverse는 콘텐츠가 321로 오른쪽에 붙는다. (둘의 차이)
justify-contetn:space-evenly;
는 익스플로어에는 적용안되고 크롬은 적용가능하다.
교차 축의 여러 줄 정렬방법
flex-wrap:wrap 일 때만(=여러 줄일 때) 적용된다.
height값이 없는 상태라면, flex의 줄만큼 길이값을 늘려준다.
정렬 값이 없기때문에 떨어져있는 상태로 있지만,
center 등을 사용하면 2줄이 떨어져있는 걸 무시하고 합친다.
줄을 유지하고, 그 줄에서 아이템의 위치를 정하는 것이다.
기본 속성으로 stretch가 있기때문에 height 값이 없으면 줄만큼 길이를 늘려준다.
교차 축의 한 줄 정렬방법
줄에서 정렬이된다. 줄을 유지
줄이 유지되는 상태에서
한줄 개념일 땐 align-items
두줄 개념일 땐 align-content
메인 축에 대한 것은 justify-content
/정렬이니까 container에 들어가는 속성 수평 J 수직은 align-item 붙여서 이동 content 떨어져서 이동 /
order: flx item의 순서
flex-grow: 증가 너비 비율 (가로)
flex container의 길이에 맞게 알아서 늘어남
flex-shrink
nowrap 상태일 때 flex-shrink 기본 값이 1이 있기때문에
flex container보다 아이템이 클 경우 강제로 꾸겨서 크기를 맞춰준다.
0으로 주면 안 줘서 그냥 삐져나간다.
flex-basis: 공간 배분 전 기본 너비
요소의 content의 너비 자동으로 설정되어 있다.
아래와 같이 grwo와 basis를 설정해준다면, 알아서 비율값을 맞춰서 메뉴를 구성해준다.
flex-grow 비율만큼 커지는 것
각각 아이템이 가지고 있는 빈공간만큼 나눠줘서 그 비율값만큼을 가져간다.
flex-shrink는 비율값만큼 줄어든다.
flex-basis
flex-basis의 기본 속성은 auto이다.
화면이 작아지면 컨텐츠 크기만을 제외하고 나머지는 자동으로 줄어든다. 이럴 경우 flex-basis=0으로 적용하면 컨텐츠 크기도 무시하고 flex에 따른 고정비율만 적용한다