html에서 <!-- -->가 주석이였다면
css에서는 /* */ 가 주석이다.
div태그는 블록 영역이 설정되고 자동으로 줄바꿈된다.
span태그는 인라인 요소들을 하나로 묶을 때 사용된다. 줄바꿈x
css를 적용하는 방법에는 세 가지 방법이 있다.
1. 인라인 스타일(inline style) : html 태그마다 style 속성으로 css 코드를 적용하는 방법이다.
여러 요소들에 공통 속성을 재사용하여 부여할 수 없으며, html 코드와 css 코드가
분리되어 있지않기 때문에 특별한 경우 빼고 사용하지 않는다.
추론 : 일일히 속성으로 적용하기에는 길이도 길어지고 일괄적으로 수정하기 어려울 것이다.
2. 내부 스타일 시트(internal style sheet) : head 태그 안에 style 태그를 두고 그 안에 css코드를 작성하는 방식. html과 css의 전체 코드량이 많지 않고 css가 해당 html 문서에만 적용될 경우
유용하게 사용될 수 있다.
3. 링킹 스타일 시트(linking style sheet) : 외부의 css 파일을 html 문서에 연결하는 방법이다.
HTML과 CSS의 코드가 분리되고 CSS 코드를 여러 HTML 파일에서 공통으로 사용할 수 있으므로
가장 널리 사용되는 방식이다.
--------------------------------------------------------------------------------------------------------------
css 적용시 같은 선택자의 경우, 뒤에 오는 것이 우선순위가 높다.
태그 선택을 할 때의 예시 : 모든 <p> 태그에 css적용하고 싶으면
p { }
class 선택자는 태그보다 우선순위가 높고, 페이지상의 여러 요소가 같은 class를 가질 수 있다.
class 선택할 때 예시(class="blue") : .blue{ }
id 선택자는 같은 id는 단 한개만 존재해야한다.
id 선택자 예시 (id="red") : #id{ }
--------------------------------------------------------------------------------------------------------------
기본&그룹 선택자 css코드
/*모든 요소 선택*/ , /**/는 주석!
같은 선택자인 경우 뒤에 오는 것이 우선 순위가 높다.
*{ }
/*태그 선택자*/
p {} 모든 p태그에 적용한다.
/*class선택자*/
태그보다 우선 순위 높음.
페이지상의 여러 요소가 같은 class를 가질 수 있음.
.blue {} blue 클래스를 가진 모든 태그에 적용한다.
다른 선택자에 이어붙일 수 있다.(태그,클래스 등)
선택자는 구체적일수록 우선순위가 높다.
ex) p.blue {color:red;} p태그 안에 있는 모든 blue 클래스들은 red 색상이다.
.blue.dark{color:blue;} 모든 blue 클래스와 dark 클래스들은 blue 색상이다.
p.blue.dark{color:black;} p태그 안에 있는 모든 blue 클래스와 dark 클래스들은 black 색상이다.
주의. html 태그에서 2개의 class를 지정할 때
<p class= "blue dark"> 띄어쓰기를 해서 지정한다.
"blue" 클래스와 "dark" 클래스를 지정했다는 코드. "blue dark" 클래스가 아님.
/*id 선택자*/
class보다 우선순위가 높고, 페이지상에서 요소마다 고유해야한다.
#red {}
/*그룹 선택자*/
span, .dark, #red {} 쉼표로 여러 그룹을 선택할 수 있다.
------------------------------------------------------------------------------------------------------------
결합자와 가상 클래스
/*자손 결합자*/
.outer li {} outer클래스 안에 있는 모든 li 태그에 적용한다.
<ul class="outer">
<li>한자</li>
<li>영어</li>
<li>숫자
<ul>
<li>1</li>
<li>2</li>
</ul>
</li>
</ul>
/*자식(1촌 자손) 결합자*/
.outer > li {} outer클래스 안에 있는 1촌 자손인 li 태그에만 적용한다.
<ul class="outer">
<li>한자</li>
<li>영어</li>
<li>숫자
<ul>
<li>1</li>
<li>2</li>
</ul>
</li>
</ul>
.outer > li li {} outer클래스 안에 있는 li 태그의 자손에만 태그에만 적용한다.
<ul class="outer">
<li>한자</li>
<li>영어</li>
<li>숫자
<ul>
<li>1</li>
<li>2</li>
</ul>
</li>
</ul>
/*뒤따르는 모든 동생들 결합자*/
.starter ~ li {} starter클래스와 같은 위치? 등급에 있는 li 태그에만 적용한다.
ex) <ol>
<li> 1 </li>
<li class="starter"> 2 </li>
<li> 3 </li>
<li> 4 </li>
</ol>
/*뒤따르는 바로 다음 동생 결합자*/
.starter + li {} starter클래스 바로 다음에 있는같은 등급의 li 태그에만 적용한다
ex) <ol>
<li> 1 </li>
<li class="starter"> 2 </li>
<li> 3 </li>
<li> 4 </li>
</ol>
/*첫 번째, 마지막 요소 가상 클래스*/
ol li:first-child, 쉼표로 여러개 선택.
ol li:last-child {}
<ol>
<li>1</li>
<li>2</li>
<li>3</li>
</ol>
/*~가 아닌 요소 가상 클래스*/
.outer > li:not(:last-child) {} outer클래스의 직계 자손중 li 태그중에 마지막 자손을 제외.
<ul class="outer">
<li>한자</li>
<li>영어</li>
<li>숫자 <마지막 자손을 제외.
<ul>
<li>1</li>
<li>2</li>
</ul>
</li>
</ul>
ul:not(.outer) li {} ul 태그에서 outer 클래스가 아닌 ul 태그의 li들.
<ul class="outer">
<li>한자</li>
<li>영어</li>
<li>숫자
<ul>
<li>1</li>
<li>2</li>
</ul>
</li>
</ul>
추론 : 가장 먼저 쓰인 최상위 ul 태그 에다가 outer라는 클래스로 묶었지만
그 자손들인 ul태그들은 outer 클래스가 아닌것이고
그렇기 때문에 not(.outer) 를 쓰는 것이다?
그래서 not(.outer)를 쓰지 않고 .outer{} 를 입력하면 전체가 바뀐다.
전체를 outer로 묶었지만 그 안에 있는 요소들은 outer가 아닌? 것이다
/*~번째 요소 가상 클래스*/
/*#, #n, #n+#, odd(홀수), even(짝수) 등 시도해보기*/
ol li:nth-child(3) {} nth는 n번째를 뜻한다. 즉 ol 태그의 li 태그 중 3번 째 자손.
<ol>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ol>
ol li:nth-child(2n) {} 2n은 2의 배수를 뜻한다.
<ol>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ol>
ol li:nth-child(2n+2) {} 2의 배수 +2
<ol>
<li>1</li>
<li>2</li> n이 0일 때 0+2
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ol>
ol li:nth-child(odd) {} odd는 홀수를 뜻함.
<ol>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ol>
ol li:nth-child(even) {} even는 짝수를 뜻함.
<ol>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ol>
/*마우스오버 가상 클래스*/ 마우스가 올라간 li 태그에 적용.
만약 적용이 안되면 구체적으로 적용해준다.
li:hover {}
가상 셀렉터에는
hover, active, focus, visited가 있다
:hover 를 이용하면 마우스가 해당 요소 위에 있을 때 요소의 스타일을 변경할 수 있다.
쉽게 말하면 마우스를 클릭 안 하고 대고만 있어도 스타일이 변한다.
:active 를 이용하면 마우스가 해당 요소를 클릭하는 순간부터 떼는 순간까지의 요소 스타일을 변경할 수 있다
:focus 를 이용하면 마우스가 해당 요소를 클릭하면 요소 스타일을 변경할 수 있다. 탭키도 가능
:visited 는 이미 방문한 링크를 선택해 스타일을 줄 때 사용된다.
추론 :마우스 클릭 서순을 생각해보면
visited가 제일 우선 순위를 가지고 그 다음 hover, active, focus 순으로 우선순위를 가진다.
'코딩' 카테고리의 다른 글
8. 박스모델 복기 (0) | 2022.11.19 |
---|---|
7.CSS-3 (2) | 2022.11.19 |
5.html (0) | 2022.11.17 |
4.Semantic tag와 non-Semantic tag의 차이 (0) | 2022.11.15 |
3.CSS-1 (0) | 2022.11.15 |