⇒ 모든 Selector 내 Property가 적용된다.
.author{
font-style: italic;
font-size: 18px;
}
#author-text{
font-size: 20px;
}
p,li{
font-family: sans-serif;
color: #444444;
font-size: 22px;
}
⇒같은 우선 순위의 selector들로만 구성될 때 같은 property에 대해서는 마지막에 있는 selector가 적용된다.
⇒ id나 class 이름이 똑같아도 상관 없다.
<footer id="copyright" class="copyright text">
<p id="copyright">Copyright © 2027 by The Code Magazine.</p>
</footer>
#copyright{color: red;}
.copyright{color: blue;}
.text{color: yellow;}
footer p{color: green;}
⇒ id selector의 우선순위가 가장 높으므로 빨간색으로 표시된다.
⇒ VSC에서 selector에 마우스를 hover하면 selector specificty를 볼 수 있다.



⇒ 개발자 도구에서 #copyright 의 color를 체크 해제하면
그 다음 우선순위인 yellow가 된다.
.text의 color를 해제하면 blue가,
.copyright의 color를 해제하면 green이 된다.
#copyright{color: red;}
.copyright{color: blue;}
.text{color: yellow;}
footer p{color: green !important;}
⇒ important keyword !가 다른 모든 selector보다 더 높은 우선순위로 만들어주기 때문에 초록색으로 표시된다.
⇒ 이는 보통 사용하지 않는 키워드이다.
💡 CSS 작성 팁Selector를 최대한 간단하게 작성한다.
하나의 Element에 너무 많은 중첩이나 id, class를 추가하지 않는다.
important keyword같은 해킹을 일반적으로는 사용하지 않는다.

상속이란 부모 요소에게서 값을 물려받는 속성이다.
body는 보통 모든 요소들의 부모 요소이므로 이를 활용할 수 있다.
자식 요소에서의 속성은 부모 요소에서의 같은 속성보다 우세하기(override) 때문에 자식 요소의 속성이 나타난다. 상속된 속성의 우선순위가 가장 낮다고 할 수도 있다.
그러나 body 요소의 모든 속성이 자식 요소에 상속되는 것은 아니다.
일반적으로 CSS 속성은 부모 요소에서 자식 요소로 상속되지만, 몇 가지 속성은 상속되지 않거나, 상속되지만 일부 제한이 있을 수 있다. 이는 속성의 특성에 따라 다르다.
CSS에서는 명시적으로 inherit 값을 사용하여 특정 속성을 상속하도록 지정할 수 있다. 그러나 기본적으로 대부분의 속성은 상속되지 않거나 명시적으로 상속을 설정하지 않는 한 상속되지 않는다.
예를 들어, 보통 text와 관련된 color, font-size, font-family와 같은 일부 속성은 일반적으로 상속된다. 이 경우, body 요소에 적용된 속성이 자식 요소에 상속되어 자식 요소에서도 동일한 스타일이 적용될 수 있다.
하지만 width, height, margin, padding과 같은 박스 모델 속성은 일반적으로 상속되지 않는다. 이러한 속성은 각 요소에 개별적으로 적용되며, 부모 요소의 속성과는 독립적으로 계산된다.
따라서 모든 CSS 속성이 자동으로 body 요소의 자식 요소에 상속되지는 않는다. 각 속성은 상속 여부를 속성 자체의 특성과 명시적인 상속 설정에 따라 결정된다.
*{
border-top: 10px solid #1098ad;
}박스 모델은 웹페이지의 요소들이 어떻게 표시될지 정한다. width와 height를 가진다. 박스 모델의 (background-color 들을 적용하는 부분이면 padding)
→ background-color 등을 적용하고 싶으면 padding, 요소 간의 간격을 주고 싶으면 margin을 사용하면 된다.
padding: 20px; /* 네 면에 20px의 패딩 */
/* shorthand */
padding: 10px 40px; /* 상하 좌우 */
padding: 10px 40px 20px 30px; /* 상 우 하 좌 (시계방향) */
list에 margin을 넣을 때 보통 마지막 항목에는 공간이 없어야 한다. list item들 간 공간은 원하지만 item의 끝에 공간을 넣는 건 원치 않기 때문이다. 이 때 아래와 같이 할 수 있다.
li{
font-size: 20px;
margin-bottom: 10px;
}
li:last-child{
margin-bottom: 0; /* 0은 unit을 입력하지 않아도 된다. */
}
element에 margin과 padding을 스타일링 하기 전에 글로벌 초기화를 해주어야 한다.
새 프로젝트를 할 때마다 해주어야 할 과정이다.
*{
margin: 0;
padding: 0;
}
global reset을 해주면 ul이나 ol에 대해서 왼쪽 공간이 사라져서 bullet-point나 숫자가 보이지 않는다. 이 때 padding-left나 margin-left를 주면 된다.
💡 수직적인 공간을 주고 싶을 때 margin-top이나 margin-bottom 둘 중 하나만 사용하는 것이 추천된다. 둘을 섞어 사용하는 것은 비추천. (개인적인 선호로 margin-bottom을 사용하는 것을 추천함)
같은 공간을 차지하는 margin이 2개일 때 둘 중 하나만 페이지에 보인다. 보통 둘 중 더 큰 쪽이 보인다.
p와 h3이 위아래에 위치하고 있다.
❗ p에 margin-bottom을 15px로 주고, h3에 margin-top을 40px로 줬을 때 p와 h3 간의 간격은 55px이 아닌 40px이 된다<p>You can learn more at MDN Web Docs</p>
<h3>Why should you learn HTML?</h3>
p{
margin-bottom: 15px;
}
h3{
margin-bottom: 20px;
margin-top: 40px;
}
<header class="post-header">
<img
src="img/post-img.jpg"
alt="HTML code on a screen"
width="500"
height="200"
class="post-img"
/>
</header>
.post-img{
width: 100%;
height: auto;
}
보통 %는 부모 요소 컨테이너의 너비의 %를 말한다.
여기서 post-header의 너비가 웹페이지의 가로 길이라서 post-img의 width를 100%로 했을 때 웹페이지의 크기를 따라간다.
이는 스크린의 크기가 변하는 반응형 웹에서 중요한 개념이다.
<body>
<div class="container">
...
...
...
</div>
</body>
.container{
width: 700px;
margin-left: auto;
margin-right: auto;
}
⇒ margin 왼쪽 오른쪽 값이 똑같아지고, 이는 반응형 웹에서 중요하다.
CSS에는 다양한 유형의 박스가 있다.
대부분의 요소는 좌우 공간을 전부 차지고 있다. — block-level box, block-level element
몇몇 요소는 콘텐츠가 있는 공간만 차지한다. — inline box, inline element
display: block, display: inline를 이용해 박스를 바꿀 수 있다.
nav a:link{
background-color: orangered;
}


nav a:link{
background-color: orangered;
margin: 20px;
}
nav a:link{
background-color: orangered;
padding: 20px;
}
padding의 경우, 상하에도 잘 적용된 것처럼 보일 수 있으나 이는 오직 element 내부에서만 그렇게 보일 뿐이다.
block 요소였다면 element끼리 수평을 있을 수 없고, 상하로 20px씩 내려갔을 것이다.
display: inline-block
외부에서는 inline box처럼 작동하지만 내부에서는 block 수준의 요소처럼 작동하는 box이다.
즉, inline box 컨텐츠를 위해 필요한 공간만을 차지하는 block box인 것이다. 그래서 줄 바꿈을 일으키지 않는다.
하지만 여전히 margin과 padding을 사용할 수 있다.
→ inline과 block의 장점만을 결합한 것.

nav a:link{
background-color: orangered;
margin: 20px;
padding: 20px;
display: inline-block;
}
위에서 List Item과 마찬가지로 여러 항목에 margin을 넣을 때 보통 마지막 항목에 공간이 없어야 한다. 여기서는 오른쪽에 margin을 준다고 했을 때, 마지막 요소에서는 오른쪽 margin을 아래와 같이 없앨 수 있다.
nav a:link{
background-color: orangered;
margin-top: 10px;
margin-right: 20px;
display: inline-block;
}
nav a:link:last-child{
margin-right: 0;
}
💡 보통의 경우 디폴트 box type을 사용하지만, 필요한 경우 우리가 임의로 block, inline, inline-block 등으로 바꿔 사용할 수 있다.