1. ⭐) CSS 레이아웃
1) 박스모델
레이아웃을 빠르게 파악할 수 있는 일종의 옵션
✔ margin, border
.box-model {
box-sizing: border-box;
width: 200px;
height: 200px;
background-color: cadetblue;
border: solid 10px dodgerblue;
padding: 100px 0 0 100px;
}
margin: 100px 0 0 100px;
padding: 100px 0 0 100px;
/*
margin-top: 100px;
margin-left: 100px;
margin-right: ;
margin-bottom: ;
padding-top: 100px;
padding-left: 100px;
padding-bottom: px;
padding-right: px;
*/
html, body {
margin: 0;
padding: 0;
}
형제지간에 발생하는 병합 현상 : 숫가가 큰값이 작은값을 병합 or 같은 값을 하나로 병합
<div class="margin-one"></div>
<div class="margin-two"></div>
.margin-one {
width: 100%;
height: 100px;
background-color: steelblue;
margin-bottom: 100px;
}
.margin-two {
width: 100%;
height: 100px;
background-color: deeppink;
margin-top: 100px;
}
부모자식간 병합 현상 (가장 많이 볼 수 있음) : 자식에게 magin값을 주었는데 부모까지 적용됨
<div class="margin-parent">
<div class="margin-child"></div>
</div>
.margin-parent {
width: 300px;
height: 300px;
background-color: mediumpurple;
}
.margin-child {
width:150px;
height: 150px;
background-color: lightyellow;
margin-top: 100px;
}
position: absolute; 태그로 분리 !
.margin-child {
position: absolute;
width:150px;
height: 150px;
background-color: lightyellow;
margin-top: 100px;
}
h1 {
width: 100px;
height: 100px;
background-color: lightyellow;
margin-top: 100px;
}
span {
width: 100px;
height: 100px;
background-color: cadetblue;
margin-top: 100px;
}
h1 {
display: inline;
width: 100px;
height: 100px;
background-color: lightyellow;
margin-top: 100px;
}
span {
display: Block;
width: 100px;
height: 100px;
background-color: cadetblue;
margin-top: 100px;
}
display: inline-block; inline,block 모두 사용도 가능
ex) 메뉴버튼 만들 때 사용
h1 {
display: inline-block;
width: 100px;
height: 100px;
background-color: lightyellow;
margin-top: 100px;
}
<span class="inline">Inline</span>
<span class="inline-block">Inline-Block</span>
<img src="https://via.placeholder.com/200">
.inline .inline-block, img {
vertical-align: middle;
}
⭐포지션의 속성⭐
차원 : 2,3차원이 결합하여 홈페이지가 만들어짐 !
1) 1차원 선
2) 2차원 평면, 서로다른 박스가 붙여져 있다면 같이 움직임
3) 3차원 z축 등장,
포지션 속성값의 특징
1) margin-top 사용시 부모 자식 지간에 발생하는 마진 병합 현상이 일어나는지
2) top, right, bottom,, left 속성을 사용할 수 있는지
3) 자식의 높이 값이 부모에게 영향을 주는지
포지션
1) Static : 2차원 영역에 해당
모든 html은 포지션 Static 속성 상태이다 = 2차원에서부터 시작한다라는 이야기
.static-parent {
width: 300px;
height: 300px;
background-color: skyblue;
}
.static-child {
position: static;
width: 150px;
height: 150px;
background-color: lightpink;
*margin-top: 100px;*
.static-parent {
width: 300px;
height: 300px;
background-color: skyblue;
}
.static-child {
position: static;
width: 150px;
height: 150px;
background-color: lightpink;
top: 100px;
}
.static-parent {
width: 300px;
/*height: 300px;*/
background-color: skyblue;
}
.static-child {
position: static;
width: 150px;
height: 150px;
background-color: lightpink;
}
2) fixed :3차원 영역에 해당
3) relative : 2,3차원 모두 존재 (혼합형)
4) absolute : 3차원 영역에 해당
추가 설명) 부모 포지션에 따라 움직이는 기준이 달라짐
1) margin,padding VS top 차이점 : 주체의 차이
top은 내가 주체가 되어 움직이고 margin,padding은 공백을 넣음으로써 밀어서 사용하는 것
포지션 개념을 이해하는게 쉽지 않았다.
강사님께서 48가지의 경우의 수를 완벽하게 이해한다면 레이아웃을 가지고 놀 수 있다하셨다.
부모, 자식 각 포지션에 4가지의 속성값을 넣어보면서 16가지로 실습해보았다.
여러번 더 반복해보는 과정이 필요할 것 같아, 자기전에 한번 더 실습해보기로 계획을 세웠다.
html과 css를 학습한지 벌서 5일차가 되어가는데, 웹페이지와 친해진 기분이다.
코드도 예전보다 빠르게 치고 있는 것 같고 ! 사이트에 들어가면 구역을 나누어서 보게되었다.
좋은 습관들이 길러지고 있는 것 같고, 벨로그에 기록하는 것도 한몫한다.
나중에 시니어가 되어서 개발일지를 본다면 어떤 기분일지 👵