CSS 박스 모델
- content : 이 속성은 너비 및 높이 속성을 사용하여 크기를 조정할 수 있는 텍스트, 이미지 등을 표시하는 데 사용됩니다.
- padding : 이 속성은 정의된 테두리 내부의 요소 주위에 공간을 만드는 데 사용됩니다.
- border : 이 속성은 콘텐츠, 패딩 영역을 둘러싼 테두리를 만들며, 스타일, 색상 및 너비를 설정할 수도 있습니다.
- margin aria : 이 속성은 테두리 주변의 빈 공간을 만들며, 다른 요소와의 분리를 위해 사용됩니다.
CSS box-sizing : border-box VS content-box
content-box를 적용하면, 컨텐츠 크기가 해당 width, height로 적용되며, padding, border는 컨텐츠 크기에 더해진다.
실제 화면에 보여지는 크기는 border까지 반영이 되기 때문에, 요소 크기 예측을 어렵게 한다.
content-box를 적용하면, 화면에 보이는 크기는 width-height로 제한된다.
주의할 점은 자식 요소다. 컨텐츠의 width, height를 부모의 padding, border를 고려해서 계산해야 한다.
아래 box element의 dimension은 450px * 200px이다. padding이 부모의 컨텐츠 영역을 줄이기 때문이다.
<style>
* {
box-sizing: border-box;
}
section {
width: 500px;
height: 250px;
padding: 25px;
}
.box {
width: 100%;
height: 100%;
border: 2px solid;
}
</style>
<section>
<div class="box"></div>
</section>
CSS 속성 적용 방향
1. 일단 12시부터 시계 방향으로 적용.
2. 해당 공간이 비어있으면 대칭 적용
CSS 사용하면 좋은 단위
타이포그래피 : rem
박스모델(마진, 보더, 패딩) : px
width/height : 고정은 px, 상대는 %
컬러 : hsl
명시적 색상 동기화
.box {
color: hotpink;
border: 1px solid currentColor;
box-shadow: 2px 2px 2px currentColor;
}
Auto Margin
명시적 너비를 가진 요소의 중앙 정렬을 위해 사용.
수평에서만 적용됨. top,bottom에 auto는 0px과 마찬가지.
블록 요소는 명시적 요소가 없으면 한 줄을 채움.
<style>
.content {
width: 50%;
margin-left: auto;
margin-right: auto;
background: palevioletred;
padding: 16px;
}
main {
width: 100%;
height: 200px;
border: 3px solid silver;
}
</style>
<main>
<section class="content">
Hello World
</section>
</main>
응용 : 이미지 카드 만들기 (패딩 없애기)
이미지는 일반 dom과 다르게 동작함.
크기를 지정 안해주면 문서 흐름에서 벗어남.
직접 레이아웃과 연관되게 하면 좋지 않음.
wrapper element를 만든다.
그 다음 부모 엘리먼트의 패딩 크기만큼 마진을 당겨준다.
<div class="card">
<p>
Otters have long, slim bodies and relatively short limbs. Their most striking anatomical features are the powerful webbed feet used to swim, and their seal-like abilities holding breath underwater.
</p>
<div class="stretched-out">
<img alt="A cute otter in water" src="/course-materials/otter.jpg" />
</div>
<p>
More importantly, otters are glorious water dogs, playful and curious. The otter, no other, is the best animal.
</p>
</div>
<style>
body {
background: #222;
padding: 32px;
}
.card {
background-color: white;
padding: 32px;
border-radius: 8px;
}
.stretched-out{
margin-left : -32px;
margin-right : -32px;
}
img {
display: block;
width: 100%;
}
p, img {
margin-bottom: 16px;
}
</style>
Negative Margin
http://www.quirksmode.org/blog/archives/2020/02/negative_margin.html
Flow Layout
css의 다양한 레이아웃 모드 중 디폴트.
인라인, 박스, 인라인 박스 중 하나로 보여줌
display 속성을 사용함.
인라인은 텍스트의 일부분을 강조하기 위해 사용. strong, a
블록은 레이아웃, 텍스트 구역을 만들기 위해 사용. 대부분 블록임.
인라인 예외: 해당 요소들은 마진, 보더, 패딩, 컨텐츠 크기 조절 가능
버튼
- img
- video
- canvas
'FrontEnd' 카테고리의 다른 글
[CSS][box-sizing 알아보기] (0) | 2022.01.15 |
---|---|
[CSS][Layout][Flow layout :마진 및 마진 겹침] (0) | 2022.01.09 |
[React][Remix][Jokes App Tutorial][Part1] (0) | 2022.01.05 |
[Epic React][Build an Epic React App][Testing Hooks and Components][훅과 컴포넌트 테스트] (3) | 2022.01.02 |
[Epic React][Build an Epic React App][Unit Test][단위 테스트] (0) | 2022.01.02 |