Cascading을 비유해보자면 폭포라고 생각해보자! css에도 우선순위가 있는데, External -> CSS in head -> inline CSS -> CSS applied by the user 순이다.
그럼 user는 개발자일까? 아님 브라우저를 사용하는 직접적인 사용자일까?
정답은 후자이다. 예를들어 사용자가 선택하는 다크모드 같은 설정이 최우선순위가 된다.
신기하게도, html문서 내에서 style태그로 묶게되면, CSS 문법을 같이 쓰게된다!
/* */
로 작성한다!/* 주석 */
style
속성으로 스타일을 주는 방식입니다.:hover
, ::before
, ::after
와 같은 가상요소에는 사용불가 )@@@여기서 가상요소란?@@@
CSS를 통해서 html내의 컨텐츠에 가상으로 집어넣은 컨텐츠 같은 것!
<p **style="color:yellow; background-color:black;"**>Hello wold</p>
하지만, 현직자는 이렇게 작성하지 않는다고 하는데 어쩌지?
style
태그를 사용하여 스타일을 주는 방식입니다.<!DOCTYPE html>
<html lang="ko-KR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>내부 스타일</title>
**<style>
p {
color:yellow;
background-color:black;
}
</style>**
</head>
<body>
<p>Hello world</p>
</body>
</html>
link
head
요소 내부에만 위치할 수 있습니다.rel
: relations 관계. 대상 파일의 속성을 나타냅니다. css 파일은 stylesheethref
: hyper-references 경로. 연결 시 참조할 파일의 위치를 나타냅니다.<!-- index.html -->
<!DOCTYPE html>
<html lang="ko-KR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>외부 스타일</title>
**<link rel="stylesheet" href="style.css">**
</head>
<body>
<p>Hello world</p>
</body>
</html>
/* style.css */
p {
color:yellow;
background-color:black;
}
<div>
<h1>Hello</h1>
<h2>Hello</h2>
<p>Hello</p>
</div>
CSS는 정답이 하나가 아니라 여러 가지 방법들이 있어요!
개별로 인라인 스타일 적용하기
<div>
<h1 style="color:red;">Hello</h1>
<h2 style="color:red;">Hello</h2>
<p style="color:red;">Hello</p>
</div>
태그 선택자 적용하기
<div>
<h1>Hello</h1>
<h2>Hello</h2>
<p>Hello</p>
</div>
h1{color:red;}
h2{color:red;}
p {color:red;}
그룹 선택자(,
)로 적용하기
<div>
<h1>Hello</h1>
<h2>Hello</h2>
<p>Hello</p>
</div>
h1,
h2,
p {color:red;}
상속 이용하기
<div>
<h1>Hello</h1>
<h2>Hello</h2>
<p>Hello</p>
</div>
div{
color:red;
}
예를들어 상속 적용해보기!
color
속성은 자식인 h1, h2, p에게 상속이 됩니다!width
, height
, margin
, padding
, border
와 같은 것은 상속되지 않습니다.<div>
<h1>Hello</h1>
<h2>Hello</h2>
<p>Hello</p>
</div>
div {
color: red;
border: 5px solid pink;
}
inherit
: 선택한 요소에 적용된 속성값을 부모와 동일하게, 즉 상속받게 합니다.initial
: 브라우저 기본 스타일 속성을 따르게 합니다.<div>
<h1>Hello</h1>
<h2>Hello</h2>
<p>Hello</p>
</div>
div {
color: red;
border: 5px solid pink;
}
h1 { **border: inherit;** }
button
, input
요소처럼 form 관련 태그들은 상속받지 않기도 합니다.<div>
<h1>Hello</h1>
<h2>Hello</h2>
<p>Hello</p>
<button>Hello</button>
<input type="text" value="hello">
</div>
div {
color: red;
border: 5px solid pink;
}
h1 { **border: inherit;** }
하지만 여기서 질문, 왜 이런 요소들은 상속이 되지 않는 것일까??
정답은 크기와 관련된 것들이라서!
엥...? 근데 왜...?
이유는 부모의 레이아웃이 변경되면 자식의 레이아웃까지 모두 변경되어 어지러웡
html
을 포함한 HTML 문서 내의 모든 요소를 선택합니다. *
(별표, 애스터리스크) 사용하여 선택할 수 있습니다* {
margin:0;
padding:0;
}
reset CSS를 알아보고싶은걸? 브라우저에 설정된 모든CSS를 초기화 시켜주는 방법인데?
h1 {
font-weight:bold;
}
p{
font-size: 24px;
}
#
)<header id="header">
...
</header>
#header {
padding: 10px;
}
.
)가장 많이 사용하는 선택자!
<h1 class="fc-red">hello wolrd</h1>
<p>Lorem ipsum dolor sit amt</p>
<p class="fc-red">Lorem ipsum dolor sit amt</p>
.fc-red {
color: red;
}
💡 id, class는 숫자로 시작하면 안 됩니다!
하이픈(`-`) 과 언더바(`_`), 문자로만 시작할 수 있습니다.
[]
)[type="button"]{
border:0;
cursor:pointer;
}
[class="btn"]{
color:#fff;
background: royalblue;
}
,
)h1 {font-weight:bold;}
h2 {font-weight:bold;}
h3 {font-weight:bold;}
h4 {font-weight:bold;}
h5 {font-weight:bold;}
h6 {font-weight:bold;}
h1, h2, h3, h4, h5, h6{ font-weight:bold;}
section p {
border: 3px solid skyblue;
}
>
)>
를 통해 구분합니다.section > p{
color:royalblue;
}
~
)~
를 통해 구분합니다.section ~ p{
text-decoration:underline;
}
+
)+
를 통해 구분합니다.section + p{
background:yellow;
}
:link | 방문하지 않은 링크 |
---|---|
:visited | 방문한 링크 |
:hover | 마우스 커서를 올려 놓았을 때 |
:active | 마우스로 클릭했을 때 |
:focus | 포커스 되었을때 |
:first-child
:last-child
:nth-child
/* 2번째 li */
li:nth-child(2) {
color: lime;
}
/* 홀수번째 li */
li:nth-child(odd) {
color: lime;
}
/* 짝수번째 li */
li:nth-child(even) {
color: lime;
}
/* 2n+1번째 li. (n은 0부터 1씩 증가합니다)*/
li:nth-child(2n+1) {
color: lime;
}
:not
/* li 중 첫번째가 아닌 li */
li:not(:first-child){
margin-top:20px;
}