<link rel+=”stylesheet” href=”./css/main.css”>
(병렬) [권장]
위의 방법으로 html에 CSS를 연결하고 또 외부의 CSS파일을 추가로 가져오고 싶을 경우,import를 사용한다.
@import url(“./box.css”); <-- CSS문서 안에서 또다른 CSS문서를 가져와 연결
단점은 main.css가 연결되기 전 까지는 box.css를 가지고 올 수 없음.
이것을 이용해서 연결을 지연시킬 수 도 있다. (직렬)
일치 선택자[Basic selector]: 만약 span.orange 라고 표현하면 span태그의 orange라는 값이 있다면 적용 // 만약 위치를 바꾼다면 브라우저가 인식을 못하기 때문에 태그선택자를 사용할때는 앞에 붙인다.
자식 선택자[Child selector]: ‘ >’ 기호를 사용하며 , ABC > XYZ 일 경우 선택자 ABC의 자식요소 XYZ를 선택 (ex. ul > .orange {})
하위(후손) 선택자[Descendant Combinator]: 띄어쓰기가 선택자의 기호
(ex. div .orange{ })
인접 형제 선택자[Adjacent sibling combinator): ‘+’기호를 사용
선택자 ABC의 다음 형제 요소 XYZ하나를 선택 (ex. .orange + li { } 일 경우 orange클래스를 가지고 있는 요소의 ‘다음’ li 태그 하나)
일반 형제 선택자[General sibling combinator]: ‘~’기호를 사용하며
선택자 ABC 다음 형제 요소 XYZ 모두를 선택
“ .box:hover “에서 ':hover'가 가상 클래스임. 어떠한 행동을 했을 때 동작하는 개념
:hover - 마우스를 올렸을 때를 선택
:active - 클릭하고 있는 동안만을 선택
:focus - 어떠한 요소가 포커스되면 선택( Focus가 될 수 있는 요소는 따로 있는데 HTML 대화형 콘텐츠가 해당) input, a, button, label 등
** tabindex속성을 통해 Focus가 되도록 만들어 줄 수 있다.
ex) <div class =”box” tabindex=”-1”> -1이 아닌 다른 값을 넣는 것은 흐름을 방해할 수 있어 권장X**
:first-child - ABC:first-child 선택자 ABC가 형제요소 중 첫째라면 선택.
:last-child 형제 요소중 막내라면 선택
:nth-child(n) - 형제 요소 중 (n)째 라면 선택
ex. .fruits *:nth-child(2) ← fruits라는 클래스를 가진 요소의 하위요소중 둘째를 선택
.fruits *:nth-child(2n) <- n키워드를 사용할 수도 있는데 (n은 0부터 시작) 2에다 n을 곱한다는 뜻이됨 즉, 짝수 째 요소들을 선택한다는 뜻
.fruits *:nth-child(2n+1) <- 홀수째 를 선택한다는 뜻
.fruits *:nth-child(2n+2) <- n은 0부터 시작하기때문에 첫번째 요소는 건너뛰고 3번째부터 선택한다는 뜻.
.fruits *:nth-child(-n+3) <- 앞에서 세 개의 요소를 나타낸다. [=-0+3, -1+3, -2+3]
:not(xyz) - ABC:not(XYZ) 선택자 XYZ가 아닌 ABC요소 선택
::콜론이 두개가 붙는다. 가상의 요소를 만들어서 실제로 삽입할 수 있음
자주 사용됨
::before 선택자 요소의 내부 앞에 내용을 삽입/ 가상의 인라인 요소를 만들어서 내부의 앞쪽에 어떤 내용을 실제로 삽입
.box::before이렇게 사용한다.
::after 선택자 요소의 내부 뒤에 내용을 삽입
가상요소 선택자를 사용할 때는 항상 content를 사용/ 속성을 사용하지 않더라도 content를 추가하고 봐야함.
.box::after { content: “뒤!” ;} 사용하지 않더라도 .box::after{ content:””;}
가상요소 선택자는 인라인 요소이기 때문에 width, height 를 지정해도 적용 x
이렇게 쓰고 싶을 때에는 display: block; 으로 블록요소로 전환해주어야함.
'[ ]'를 기호로 씀. [ABC] 속성 ABC를 포함한 요소선택
[ABC=”XYZ”] 속성 ABC을 포함하고 값이 XYZ인 요소 선택
자식, 하위 요소까지 영향을 미침 <- 스타일 상속
모든 것이 상속되는 것은 아님
**상속되는 CSS속성들
font-style, font-weight, font-size, line-height, font-family, color, text-align등등
(모두 글자/문자 관련 속성들이지만, 모든 글자/문자 속성은 아님!)
실질적으로 상속안되는 속성들도 임의로 상속이 되도록 하는 것
상속 안되는 속성에 inherit 을 값으로 주면서 부모 요소로부터 강제 상속받게 할 수 있음.
같은 요소가 여러 선언의 대상이 된 경우, 어떤 선언의 CSS속성을 우선 적용할지 결정
점수가 높은 선언이 우선함
점수가 같으면, 가장 마지막에 코드로 작성한 선언이 우선함.
^ 위의 그림에서 우선순위가 큰 순서대로 정렬하면
!important > 인라인 선언(orange) > ID 선택자 (#) > Class 선택자( .) > 태그 선택자 > 전체선택자(*) > 상속 (우선순위 점수를 따로 계산하지 않음)
:hover처럼 가상 클래스 선택자도 클래스이기 때문에 10점 부여
::before 가상 요소 선택자는 태그 선택자의 점수를 가짐 1점 부여
마지막 줄에 :not은 가상 선택자이기는 하지만 부정한 상태로 선택하기 때문에 .box만 계산하여 10점 부여
-html의 속성은 Attributes, JS의 속성은 properties
width : 가로너비, 따로 값을 지정하지 않으면 auto, 가로 전체에 뿌려줌
height: 세로너비, 따로 값을 지정하지 않으면 auto, 0으로 보이지 않음.
span: 대표적인 인라인 요소, 본질적으로 아무것도 나타내지 않는 콘텐츠 영역을 설정하는 요소(기본값은 가로세로너비가 모두 내부 컨텐츠 크기에 맞춰 줄어듬)
div: 대표적인 블록 요소, 본질적으로 아무것도 나타내지 않는 콘텐츠 영역을 설정하는 요소(부모요소의 크기 만큼 가로넓이는 자동으로 늘어나고, 세로 넓이는 자동으로 줄어듬(세로너비는 span과 동일)
max-width, max-height : 요소가 가질 수 있는 최대 가로/세로 너비 기본값은 none(최대너비 제한 없음)
min-width, min-height: 요소가 작아질 수 있는 최소 가로/세로 너비 기본값은 0; 숫자 0은 따로 단위를 붙일 필요가 없음