<link rel="stylesheet" href="index.css" />
li {
text-decoration: underline;
}
<h4 id="navigation-title">This is the navigation section.</h4>
#navigation-title {
color: red;
}
<!-- 바른 예제 -->
<ul>
<li class="menu-item">Home</li>
<li class="menu-item">Mac</li>
<li class="menu-item">iPhone</li>
<li class="menu-item">iPad</li>
</ul>
.menu-item {
text-decoration: underline;
}
<li class="menu-item selected">Home</li>
.selected {
font-weight: bold;
color: #009999;
}
| 기능 | 속성 | 기능 | 속성 |
|---|---|---|---|
| 글자 색상 | color | 굵기 | font-weight |
| 배경 색상 | background-color | 밑줄, 가로줄 | text-decoration |
| 테두리 색상 | border-color | 자간 | letter-spacing |
| 글꼴 | font-family* google font 활용 | 행간 | line-height |
| 크기 | font-size | 정렬 | 가로 : text-align세로 : vertical-align |
글꼴 사이즈를 정할 때
화면 사이즈를 정할 때
| block | inline-block | inline | |
|---|---|---|---|
| 줄바꿈 여부 | 줄바꿈이 일어남 | 줄바꿈이 일어나지 않음 | 줄바꿈이 일어나지 않음 |
| 기본적으로 갖는 너비 (width) | 100% | 글자가 차지하는 만큼 | 글자가 차지하는 만큼 |
| width, height 사용가능 여부 | 가능 | 가능 | 불가능 |
Block-level elements - HTML: HyperText Markup Language | MDN
developer.mozilla.org
Inline elements - HTML: HyperText Markup Language | MDN
developer.mozilla.org
!https://blog.kakaocdn.net/dn/bbW5Ny/btrKURDdcBu/kakiW0LFPda8I94WJLF031/img.png
p {
border: 1px solid red;
}p {
margin: 10px 20px 30px 40px;
}p {
margin: 10px 20px;
}p {
margin: 10px;
}p {
margin-top: 10px;
margin-right: 20px;
margin-bottom: 30px;
margin-left: 40px;
}p {
margin-top: -2rem;
}p {
padding: 10px 20px 30px 40px;
}p {
height: 40px;
overflow: auto;
}
#container {
width: 300px;
padding: 10px;
background-color: yellow;
border: 2px solid red;
}
#inner {
width: 100%;
height: 200px;
border: 2px solid green;
background-color: lightgreen;
padding: 30px;
}
위 코드에서 #container의 넓이는 300px가 아니라 324px, #inner의 100%는 300px가 아니라 364px
| #container | #inner |
|---|---|
| 300px (콘텐츠 영역)+ 10px (padding-left)+ 10px (padding-right)+ 2px (border-left)+ 2px (border-right) | 300px (300px의 100%)+ 30px (padding-left)+ 30px (padding-right)+ 2px (border-left)+ 2px (border-right) |
* {
box-sizing: border-box;
}
전체 셀렉터 참고 : https://www.w3schools.com/cssref/css_selectors.asp
CSS Selectors Reference
www.w3schools.com
요약
| 종류 | 명칭 | 표기 | 종류 | 명칭 | 표기 |
|---|---|---|---|---|---|
| 기본 | 전체 | * { } | 자식 / 후손 / 형제 | 자식 | header > p { } |
| 태그 | h1 { } | 후손 | header p { } | ||
| ID | #id { } | 형제 | section ~ p { } | ||
| class | .class { } | 인접 형제 | section + p { } | ||
| attribute |
전체 셀렉터 : 문서의 모든 요소 선택
* { }
태그 셀렉터 : 같은 태그명을 가진 모든 요소 선택 (복수선택 가능)
h1 { }
div { }
section, h1 { }
ID 셀렉터 : #id, 해당 id의 요소 선택
#id { }
class 셀렉터 : .class, 같은 class를 가진 모든 요소 선택
.widget { }
.center { }
attribute 셀렉터 : 같은 속성을 가진 요소를 선택
a[href] { }
p[id="only"] { }
p[class~="out"] { }
p[class|="out"] { }
section[id^="sect"] { }
div[class$="2"] { }
div[class*="w"] { }
자식 셀렉터 : 첫 번째로 입력한 요소의 바로 아래 자식인 요소를 선택
header > p { }
후손 셀렉터 : 첫 번째로 입력한 요소의 후손을 선택. 자식뿐만 아니라 자식의 자식들 중의 같은 요소(아래 예시에서는 p요소) 까지 선택
header p {}
형제 셀렉터 : 같은 부모 요소를 공유하면서, 첫 번째 입력한 요소 뒤에 오는 두 번째 입력한 요소를 모두 선택
section ~ p { }
요소를 모두 선택
<header>
<section></section>
<p></p><!-- 선택 -->
<p></p><!-- 선택 -->
<p></p><!-- 선택 -->
</header>
인접 형제 셀렉터 : 같은 부모 요소를 공유하면서 첫 번째 입력한 요소 바로 뒤에 오는 두 번째 입력한 요소를 선택
section + p { }
가상 클래스 셀렉터 : 요소의 상태 정보에 기반해 요소를 선택
a:link { }/*사용자가 방문하지 않은 <a>요소를 선택합니다.*/
a:visited { }/*사용자가 방문한 <a>요소를 선택합니다. *
/a:hover { }/* 마우스를 요소 위에 올렸을 때 선택합니다. */
a:active { }/* 활성화 된(클릭된) 상태일 때 선택합니다. */
a:focus { }/* 포커스가 들어와 있을 때 선택합니다. */
UI 요소 상태 셀렉터
input:checked + span { }/*체크 상태일 때 선택합니다. */
input:enabled + span { }/*사용 가능한 상태일 때 선택합니다. */
input:disabled + span { }/*사용 불가능한 상태일 때 선택합니다. */
구조 가상 클래스 셀렉터
p:first-child { }/*p엘리먼트 중에서 첫 번째 자식 엘리먼트*/
ul > li:last-child { }/*ul의 자식 엘리먼트 중에서, 마지막 자식 엘리먼트가 li인 것을 선택*/
ul > li:nth-child(2n) { }section > p:nth-child(2n+1) { }/* section의 자식 엘리먼트 중에서, 홀수 번째 자식 엘리먼트가 p인 것을 선택*/
ul > li:first-child { }li:last-child { }div > div:nth-child(4) { }/* div의 자식 엘리먼트 중에서 네 번째 자식 엘리먼트가 li인 것*/
div:nth-last-child(2) { }/* 엘리먼트가 div인 것 중 마지막에서 두 번째 자식인 것*/
section > p:nth-last-child(2n + 1) { }/* section의 자식 엘리먼트 중에서, 마지막에서 홀수 번째 자식 엘리먼트가 p인 것*/
p:first-of-type { }/* p 엘리먼트의 형제 엘리먼트 중 첫 번째 p 엘리먼트를 선택 ((first-child와는 다르게 첫 번째 자식 엘리먼트가 아닌, 처음 등장하는 p를 선택) */
div:last-of-type { }/* div 엘리먼트의 형제 엘리먼트 중 마지막 div 엘리먼트를 선택 */
ul:nth-of-type(2) { }/* ul 엘리먼트의 형제 엘리먼트 중 두 번째 ul 엘리먼트를 선택 */
p:nth-last-of-type(1) { }/* p 엘리먼트의 형제 엘리먼트 중 마지막에서 두 번째 p 엘리먼트를 선택 */
부정 셀렉터
input:not([type="password"]) { }
div:not(:nth-of-type(2)) { }/*div 엘리먼트의 형제 엘리먼트 중 두 번째 div 엘리먼트를 제외한 모든 div 엘리먼트를 선택*/
p:not(#only) { }/*p 엘리먼트 중에서, id가 only인 엘리먼트를 제외하고 모두 선택*/
정합성 확인 셀렉터