
class의 값으로 선택할수있다.
<p class="foo">내용</p>
일때 p는 class foo라고 선언되었음으로
.foo{font-size:30px;}
로 앞에 . 을 찍고 class이름을 입력해주면 그 클래스에 해당되는 요소에 스타일이 적용된다
<p class="foo bar">내용</p>
일때 이 p의 값은 class foo, bar 2개의 값으로 선언되어있다
.foo{font-size:30px{
.bar{color:blue;}
이렇게 2가지 값을 선언하면 위의 p는 두가지 클래스가 중복선언되어있기에 중복값이 모두 적용된다.
<p id="bar">내용</p>
id의 값을 선언했을때에는 아래와 같이 사용가능하다
#bar {background-color:yellow;}
#id값을 쓰고 {}안에 내용을 넣어 선언하면 된다.
/*요소와 클래스의 조합*/
p.bar{내용}
/*다중 클래스*/
.foo.bar{내용}
/*아이디와 클래스의 조합*/
#foo.bar{내용}
p[class]{color:silver;}
p{class][id] {text-decoration:underline;}
<p class="foo"> Hello</p>
<p class="bar">CSS</p>
<p class="baz" id="title">HTML</p>

class에는 silver로 색이 지정되었기때문에 전부 색이 변하였고
id와 class가 동시에 있는 요소에는 밑줄을 선언하여소 html에만 밑줄이 그어졌다
p[class~="color"]{font-style:italic;}
p[class^="color"]{font-style:underline}
p[class$="color"]{font-style:strong}
p[class*="color"]{color:green}
<p class="color hot">red</p>
<p class="cool color">blue</p>
<p class="colorful nature">rainbow</p>

class값이 공백으로 구분되어 있는 color가 포함된 red에는 italic이 적용되었다. : class~
class값이 공백으로 구분되어 color가 포함된 blue는 italic이 적용되었다 : class~
class값에 공백으로 구분한 color가 없는 rainbow는 italic이 적용되지 않았다 : class~
class값이 color로 시작하는 rainbow는 underline이 적용되었다 : class^
class값이 color로 끝나지 않는 rainbow에는 strong이 적용되지 않았다다 : class$
class의 값에 color가 포함된 rainbow의 색은 green으로 적영되었다 : class*
실행결과 : https://hana78786.github.io/Study_hana/bostcourse_htmlcss/4-6.html
<html>
<body>
<div>
<h1><span>HTML</span>: Hyper Text Markup Language</h1>
<span>CSS는 문서를 꾸며줍니다</span>
</div>
<span>Javascript는 문서를 능동적으로 제어할수 있습니다.</span>
<p>HTML과 CSS와 JAVASCRIPT를 이용해서 멋진 웹 사이트를 제작할 수 있습니다.</p>
</body>
</html>
div span{color:red;}
div를 공백으로 두고 span을 선택하면 div의 자손인 span을 선택한다는 의미이다.
그 외의 span에는 해당되지 않는다

div안에 있는 span 요소에만 red값이 적용된걸 알수있다.
div>span{color:green;}

div의 직접적 자식요소인 span에만 해당 태그가 적용된것을 확인할수 있다.
div+span{color:blue;}

div와 인접한 형제 요소인 span요소만 변화한것을 알수있다. div에는 적용되지 않는다.
body>div table+ul{color:darkblue;}
<div>
<table>
<tr>
<td>1</td><td>2</td>
</tr>
<tr>
<td>1</td><td>2</td>
</tr>
</table>
<ul>
<li>목록</li>
<li>목록</li>
</ul>
</div>

body태그의 자식요소인 div안에 있는 자손요소중 table태그에 인접한 형제요소인 ul태그에 스타일이 선언되었음을 알수있다.
미리 정의 해놓은 상황에 적용되도록 약속되어있는 보이지 않는 클래스
:pseudo-class{
property:value;
}
가상 클래스 앞에 : 를 넣어준다
:first-child : 첫번째 자식요소 선택
:last-child : 마지막 자식요소 선택
li:first-child{color:red;}
li:last-child{color:blue;}
<ul>
<li>html</li>
<li>Css</li>
<li>JS</li>
</ul>
출력값

첫번째 li인 html에는 red 마지막 li인 JS에는 blue가 적용되었다.
a:link {color:blue;}
a:visited {color:gray;}
<a href="http://www.naver.com">네이버</a>
<a href="http://www.google.com">구글</a>
<a href="http://www.daum.net">다음</a>
출력값


a:focus{background-color:yellow;}
a:hover{font-weight: bold;}
a:active{color:red;}
동작관련 가상 클래스 시현은 (여기)[https://hana78786.github.io/Study_hana/bostcourse_htmlcss/4-7.html] 에서 확인가능하다
미리 정의해놓은 위치에 삽입되도록 약속되어있는 보이지 않는 요소
p:before{
color:red;
content:"before 가상 요소를 활용한 내용";
}
/*p태그를 사용한 가장 앞에 content가 삽입되고 색깔은 red이다*/
p:after{
color:blue;
content:"after 가상 요소를 활용한 내용"
}
/*p태그 가장 마지막에 content가 삽입되고 color는blue이다*/
p:first-line{
color:yellow;
}
/*브라우저에 보이는 첫째줄의 색이 yellow가 된다 브라우저 크기에 따라 yellow로 지정되는 길이는 변한다
*/
p:first-letter{
color:skyblue;
font-size:3em;
}
/*첫줄 첫번째 글자가 skyblue 3배 크기로 출력된다*/
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum
dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>

https://hana78786.github.io/Study_hana/bostcourse_htmlcss/4-8.html
h1{내용} /* 0,0,0,1*/
body h1 {내용} /*0,0,0,2*/
.grape{내용}/*0,0,1,0*/
*bright{내용}/*0,0,1,0*/
p.bright em.dark{내용}/*0,0,2,2*/
#pags{내용}/*0,1,0,0*/
div#page{내용}/*0,1,0,1*/
<p id=”page” stype=”color:blue”>Lorem ipsum dolor sit</p>p#page{color:red !important;}
<p id=”page” stype=”color:blue”>Lorem ipsum dolor sit</p>
!important를 선언하면 다른 모든 선언을 무시하고 가장 높은 구체성을 얻게된다 이 경우 inline태그로 ㅠblue를 선언했지만 그 위에 !important가 우선시되어 red로 색이 나오게 된다.
h1{color:gray;}
<h1>Hello <em>Css</em></h1>
결과 : https://hana78786.github.io/Study_hana/bostcourse_htmlcss/4-9.html
h1이 gray로 선언되어서 h1안에 있는 em값까지 gray로 나타난다
em은 h1의 자식요소이기에 상속이 되었지만 모든 요소가 자식요소에게 상속되는것은 아니다
*{color:red;}
h1#page{color:blue;}
<h1 id="page">Hello <em>Css</em></h1>
em요소가 *선언인 red로 표현되었다.
상속된값은 구체성을 가지지 않으며 0,0,0,0에도 속하지 않는다
하지만 *선언이 없었다면 blue로 표현되었을 것이다.
사용자 !important
제작자 !important
제작자 스타일
사용자 스타일
사용자 에이전트 스타일
순으로 중요도가 정해진다.
p#bright{color:silver;}
p{color:red}
<p id="bright">Hello, Css</p>
일때 p선언보다 p#bright선언이 구체성이 높기때문에 본문은 silver로 프린트된다
p{color:silver}
p{color:red;}
일때 나중에 선언된 요소가 우선되기때문에 red로 출력된다