css의 선택자에 대해 알아보자 .
CSS - Cascading Style Sheet
그후 상속 과 우선순위에 대해서도 같이 알아보자 .
1. 스타일 우선순위
inherited> * > tag 스타일 < class < id < 인라인 스타일 < !important
2. 스타일 상속
부모요소에 있는 스타일 속성이 자식 요소로 전달된다.
< 선택자의 종류 selector>
1. Type : 태그명으로 선택
2. class : . 으로 선택한다. 클래스 다중 선택가능 (html에서 클래스명 띄우고 또 적으면됨)
id : # 으로 선택한다.
ex) div.box { } div중에 클래스가 box인것 선택 !
3. 속성 선택자 Attribute selector 요소[ ]
ㅡ [속성명]
ㅡ [속성=value]
ㅡ[속성^] : 뒤에 있는 값으로 시작하는 값을 모두 선택
[속성$="~"] ~ : ~ 로 끝나는 것을 모두 선택
[속성*="~"] : ~적어도 하나를 가지고 있는 것 모두 선택
ㅡ 예제 : 중첩가능하다.
ol li:nth-child(3) ~ li {
color: gray;
}
ol 안의 li 태그중에 3번째 이후에 있는 li 태그들에게 gray 컬러 준다.
ㅡ 예제2
ol li:only-child {
color:red;
} 자식이 오직 1개의 li 에게 red주기
4. 가상클래스 선택자 :
ㅡ fist-child 형제 /last-child 형제 /nth-child 자 : 태그명,클래스명, 자식의 형제들 / 자식의 형제들 중에서몇번째로 나오기 때문에 자식이 다른태그와 순서 섞여있으면 안됨.
ㅡ first-of-type() / last-of-type() / nth-of-type(even) : 태그,클래스명으로 가능(태그명이 편함) /특정 타입의 몇번째로 계산됨
ㅡ not : !를 제외한 나머지에 000처리해주세요 . select:not(.클래스) { }
ㅡ 예시1 두개 중첩도 가능하다.
버튼이 비활성화 된게 아닌 ! 그리고 hover되면 레드색상 배경주기.
button:not(:disabled):hover {
background-color:red;
}
ㅡ 예시2
인풋 타입이 체크드인 요소가 체크되면 ! 그리고 + 인접된 형제선택자의 값이 변한다.
input[type="checked"]:checked + label {
color : blue;
}
5. 동적 가상클래스 ㅡ L V H A 순서로 진행 ( link -visited -hover- acitve)
ㅡ link : 링크의 상태변경/ visited : 방문했던 것을 변경
ㅡ hover : 커서를 올렸을때 변경 / active : 클릭 했을때 변경 / focus : 탭으로 포커싱 or 입력하는 text 선택 시에 변경
ㅡ enabled : disabled이 있는 요소에는 적용안됨 / disabled :비활성화 / checked : 체크된 곳에 변경
6 . 가상요소 선택자 ::
ㅡ before : 전에 추가/ after : 후에 추가 (뱃지나, 구분 바 추가 할때 꾸밈의 요소로 사용함)
ㅡ first-letter : 첫번째 글자만 변경 / first-line : 첫 줄만 변경 / selection : 선택 영역만 변경 (드래그)
7. 선택자 결합 ㅡ 하위 : 스페이싱으로 사용 (한칸 띄워서) / 자식 : > 로 사용
ㅡ 일반 형제 선택자 결합 : 그룹화 ~ 로 표현 / 선택 ~ 뒤 쪽으로만선택가능
ㅡ 인접 형제 선택자 결합 : 바로 뒤에 있는 코드를 선택함 / + 로 선택
ㅡ 그룹화 : 전부선택 , 로 표현함
8. 범용 선택자 / 전체 선택자 : * 로 사용함
* 전체선택자는 성능저하 가능성이 있다. ( 참고 )
ㅇ 상속 제어하기
ㅡ CSS 오류가 있을때 대부분 상속을 끊어보면서 찾는다.
ㅡ initial : 상속을 끊는다 / inherit : 상속을 받는다
ㅡ unset : css파일이 많을 때 상속받는 값이 무엇인지 알아볼 때 사용
1. 부모로부터 상속받을 값이 있을 때 : inherit , 2.부모로부터 상속받을 값이 없을때 :initial
ㅇ 우선순위는 무엇인가 ?
ㅡ Cascading 의 원칙에 의해서 스타일링이 적용되는 우선순위 이다.
ㅡ inherited> * > tag 스타일 < class < id < 인라인 스타일 < !important
ㅡ 선언된 곳
ㅡ 명시도 (적용범위가 적을수록 명시도가 높은 것 ! class < id )
ㅡ 코드 위치 (나중에 선언된 것)
!important >>> 치트키 !