7/2 [레이아웃] 박스모델, 마진병합, display, vertical-align, position
💡 학습한 내용
🌳 박스모델 설명 추가자료사이트
✅ 박스모델을 구성하는 요소
margin(마진) padding(패딩) border(테두리) content(내용)
💨 내용(content) : 텍스트나 이미지가 들어있는 박스의 실질적인 내용 부분
💨 패딩(padding) : 내용과 테두리 사이의 간격. 패딩은 눈에 보이지 않는다.
💨 테두리(border) : 내용과 패딩 주변을 감싸는 테두리
💨 마진(margin) : 테두리와 이웃하는 요소 사이의 간격. 마진은 눈에 보이지 않는다.
💨 margin / padding : 좌표 배치 작업을 할 때 사용
선택된 영역이 주체가 되어 움직이는 것이 아닌 공백에 의해서 타의적으로 움직인다.
❗️❕ padding 사용 시 주의점
실제 노란색 박스의 width값은 벌어진 공간(padding) + 원래 width이다.
선택된 영역의 공간의 크기가 달라질 수 있다.
💨 margin / padding을 :left top right bottom; 으로 각각 기입하지 않고 적는 법
margin: 100px 0 0 100px;
[시계방향(left-top-right-bottom)으로 한줄로 정리] margin: 100px 0 0 100px - 한줄로 정리함으로써 웹사이트 로딩속도를 줄일 수 있다.
-html과 body에 기본적으로 margin padding 이 기입되어있으므로 0으로 적용시켜주어야 없어진다.
html, body {
margin: 0;
padding: 0;
}
✅ margin 병합현상
형제지간 :
<div class="margin-one"></div>
<div class="margin-two"></div>
.margin-one {
width: 100%;
height: 100px;
background-color: yellow;
margin-bottom: 100px;
}
.margin-two {
width: 100%;
height: 100px;
background-color: blue;
margin-top: 150px;
}
인접하는 block 요소들끼리 margin의 더 큰 값을 먹어버리는 것.
부모지간 :
<div class="margin-parent">
<div class="margin-child"></div>
</div>
.margin-parent {
width: 300px;
height: 300px;
background-color:yellow;
}
.margin-child {
width: 150px;
height: 150px;
background-color: blue;
margin-top: 100px;
}
해결방법 : child만 공백을 주기 위해서는 position을 이용한다-.margin-child {position :absolute;
✅ display
display 사용을 통해 선택한 태그의 진렬을 바꿀 수 있음.
display: inline / block / inline-block
💨 display: inline-block
: 한 줄에 여러 개를 넣을 수 있는데 상자로 변환되어 안의 컨텐츠의 사이즈와는 상관없이 내가 지정한 박스의 width나 height에 맞춰서 표기 되는 것.
(→ 상자. 한 줄에 여러 개 진열 가능 한 것 )
💨 display: block
: 상자이지만 한 줄에 하나만 들어갈 수 있음.
(→ 상자. 한 줄에 하나만 들어감 )
💨 display: inline
:
(→ 물건. )
✅ vertical-align
-inline 에서만 사용가능
{vertical-align: bottom; }
형제 관계에 있는 inline 중에서 가장 크기가 큰 이미지를 기준으로 하단에 정렬
{ vertical-align: top; }
형제 관계에 있는 inline 중에서 가장 크기가 큰 이미지를 기준으로 상단으로 정렬
{ vertical-align: middle; }
형제 관계에 있는 inline 중에서 가장 크기가 큰 이미지를 기준으로 중간으로 정렬
-img 태그는 inline-block 요소를 가지고 있기 때문에 vertical-aligh 사용가능
✅ position (⭐️⭐️⭐️⭐️⭐️)
선택한 영역을 몇 차원으로 만들 것인지 결정짓는 속성값
1.2.3차원
position 경우의 수
1. margin-top 사용시 부모 자식 지간에 발생하는 마진 병합 현상이 일어나는지
2. top. right. bottom. left 속성을 사용할 수 있는지
3. 자식의 높이 값이 부모에게 영향을 주는지
position 속성값
1. static(기본 값 / 2차원) 요소를 문서 흐름에 맞추어 배치.
- margin-top을 사용했을 때 부모자식간의 margin 병합현상이 일어남
- top: left right bottom 사용 x
- 부모가 높이값이 없을 때 자식의 높이값이 부모에게 영향을 줄 수 있음.
모든 html 태그는 2차원에서 시작한다.
- fixed(3차원) 지정한 위치에 고정하여 배치.(배너광고 같은 것)
-부모자식간의 margin 병합현상이 없음.
-top: left: right: bottom 속성은 브라우저 기준으로 움직임.
- 부모가 높이값이 없을 때 자식의 높이값이 부모에게 영향을 줄 수 없음.
- relative(2.3차원) 이전 요소(주로 부모 요소)에 자연스럽게 연결하여 위치를 지정.
-margin-top을 사용했을 때 부모자식간의 margin 병합현상이 일어남
-top: left: right: bottom 속성은 최초로 있었던 위치기준으로 움직임
공백에 밀러서 움직이는 것이 아닌 자신이 주체가 되어서 움직임.
- 부모가 높이값이 없을 때 자식의 높이값이 부모에게 영향을 줄 수 있음.
- absolute(3차원) 원하는 위치를 지정해 배치.
-margin 병합현상 x
-top 브라우저 기준으로 움직임.
- 부모가 높이값이 없을 때 자식의 높이값이 부모에게 영향을 줄 수 없음.
[정리]
❌ 학습한내용중 어려웠던 점
오늘 학습내용이 이때까지 배운 것 중에서 제일 어려웠던 것 같다. 뭔가 나 자신도 오늘 집중이 잘 되지 않았고 이해하기도 힘들어서 많이 힘들었던 회차인 것 같다.
⭕️ 해결방법
머리가 오히려 복잡할 때는 쉬는시간이 가지고 처음부터 다시 개념을 잡아야 할 것 같다. 나중에는 이보다 더 어려운 것들이 많을텐데 벌써부터 막히면 안된다고 생각한다. 인터넷 검색도 하면서 다양한 경우들을 봐야할 것 같다.
🙋♀️ 학습소감
프론트엔트 학습 1주차가 끝났다. 주말엔 배웠던 내용을 복습하는 시간을 가져야겠다.
어려운 점이 생겨도 흥미를 가지고 접근하는 내가 되어야 겠다..!
Author And Source
이 문제에 관하여(7/2 [레이아웃] 박스모델, 마진병합, display, vertical-align, position), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@youngeun998/대구AI스쿨-7월-2일저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)