
우선 내가 만들려고 했던 페이지는 이 페이지이다.
내가 헷갈렸던 부분들을 정리해서 나만의 것으로 만들어보자!
기본 작성 코드는 다음과 같다.
✔️ html
<!DOCTYPE html>
<html>
<head>
<title>Animals</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div>
<img src="./images/cat.png" />
<h1>CAT</h1>
<p>
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Animi, eos
soluta eaque accusamus veritatis perspiciatis error! Beatae consequuntur
amet id tenetur officia quas quos in nobis, quidem quae fuga expedita.
</p>
</div>
</body>
</html>
✔️ css
body {
background-color: #999;
}
div {
background-color: white;
width: 500px;
margin: 100px auto;
padding: 20px;
box-sizing: border-box;
text-align: center;
border-bottom: 50px solid brown;
border-radius: 20px 20px 0 0;
}
h1 {
color: brown;
font-size: 40px;
border-bottom: 10px solid brown;
width: fit-content; /*컨텐츠 크기에 맞춤 */
margin: 20px auto; /*좌우 가용 공간에 margin을 두어 가운데 정렬*/
padding: 0 20px;
}
p {
background-color: #ddd;
padding: 40px;
border: 1px solid #999;
color: #888;
}
💡 헷갈렸던 부분 1
이미지, 타이틀, 컨텐츠의 가운데 정렬
모든 요소들이 가운데 정렬되어있는데 이때는 어떤 타입 선택자를 선택하고 어떤 property로 가운데 정렬을 해야할 지 헷갈렸다.
text-align: center;
❗️text-align 속성은 텍스트에만 적용될 것이라 생각했는데 아니다!!
❗️이 속성은 모든 inline 요소에 적용이 된다
따라서 오늘 작성한 요소 중 img, p 등은 모두 inline 요소 이므로 가운데 정렬이 된다.
💡 헷갈렸던 부분 2
CAT 밑의 밑줄
가운데 정렬은 해결이 되었고 밑줄은 border-bottom 속성을 이용하면 쉽게 해결될 줄 알았는데 CAT 글자 밑에만 밑줄이 생겨야 하는데 엄청 긴 밑줄이 생겨버렸다 ㅠㅠ

✔️ 문제의 코드
h1 {
color: brown;
font-size: 40px;
border-bottom: 10px solid brown;
padding: 0 20px;
}
이 문제의 이유는 크롬에서 검사에 들어가면 알 수 있다.
user agent stylesheet를 보면 h1의 display가 block으로 설정된 것을 볼 수 있다.
💡 display
- block : 가로로 한 줄 다 씀
- inline : 컨텐츠 크기 만큼만 씀
block 속성은 width를 지정하지 않을 때 부모 요소의 너비에 맞추어 가로를 다 쓴다.
따라서 저 밑줄이 그어진 너비 부분만큼 다 h1의 요소인 것이다. (cat = h1이 아님)

❗️cat은 h1의 content
❗️display: block 때문에 공간 전체에 태그 선택자인 h1 전체에 border 속성이 적용된 것
❗️h1 속의 content인 CAT이라는 text는 위에 작성한 text-align 속성으로 가운데 정렬이 된 것!!
실제 h1이 가운데 정렬된 것이 아니라 h1 속 content만 inline요소로 가운데 정렬이 된 것이다! (공간은 변화 없음)
✔️ 정답 코드
h1 {
color: brown;
font-size: 40px;
border-bottom: 10px solid brown;
padding: 0 20px;
width: fit-content; /*컨텐츠 크기에 맞춤 */
margin: 20px auto; /*좌우 가용 공간에 margin을 두어 가운데 정렬*/
}
h1이 갖는 공간은 부모 요소의 너비만큼 (block)이고 그 안의 content인 cat은 글자 길이가 작으니 content에 맞추면 됨
❗️fit-content는 너비를 컨텐츠의 크기에 맞춤
💡 이렇게 하면 밑줄은 cat 밑으로 가는데 갑자기 다시 왼쪽 정렬이 됨
그 이유 역시 크롬 검사에서 h1을 선택해보면 알 수 있다.

처음엔 width를 따로 지정하지 않았으니 block으로 부모의 너비만큼 h1 너비가 지정이 된것이다.
이때는 공간이 넓으니 그 공간 중에서 가운데로 정렬이 되어 가운데에 cat이 뜸
여기서는 width가 컨텐츠 너비로 지정이 되었으므로 공간이 왼쪽으로 크기가 줄어들게 됨
❗️결론 : 처음과 두번째 모두 text-align으로 가운데 정렬이 적용은 되었으나 h1의 너비에 따라 바뀐 것!!
❗️두번째는 공간 자체가 컨텐츠에 딱 맞췄으니 컨텐츠는 박스에 꽉 껴서 가운데 정렬을 하든 왼쪽 정렬을 하든 같은 위치인 것이다!

20px : 상하 (신경 ㄴㄴ)
auto : 좌우
좌우 가용 공간에 margin을 두어 가운데 정렬
❗️주황색 부분은 원래 h1{ display: block }으로 인해 언제든 사용할 수 있는 가용 공간임
이 가용 공간을 사용하여 Margin을 두어 가운데 정렬 한 것 정도로 이해하면 될 듯 하다
✨ 총평
나름 html, css, javascript, react 등을 혼자 공부해보면서 기초적인 건 다 안다고 생각하고 교육을 들으며 조금 자만했던 것 같다.
막상 기초적인 부분에서 막히고 개념이 헷갈리고 흔들리는 것을 보니 기초를 튼튼하게 다지는 것이 너무 너무 중요하다고 느꼈고 모르는 것은 더 자세하게 파고 들어 기록을 해야겠다고 느꼈다.
++ 크롬 검사를 자세히 보고 또 보고 파악하는 습관을 들여야겠다 !!