#
).
)[]
),
)
)>
)~
)+
)html
을 포함한 HTML 문서 내의 모든 요소를 선택한다. *
(별표, 애스터리스크) 사용하여 선택할 수 있다. * {
margin:0;
padding:0;
}
모든 요소들을 선택함
h1 {
font-weight:bold;
}
HTML 내에서 사용된 모든 h1 요소에 적용
#
)<!--HTML-->
<header id="header">
...
</header>
<!--CSS-->
#header {
padding: 10px;
}
id=header인 요소에만 적용
.
)_
), 문자로만 시작할 수 있다.<!--HTML-->
<h1 class="fc-red">hello wolrd</h1>
<p>Lorem ipsum dolor sit amt</p>
<p class="fc-red">Lorem ipsum dolor sit amt</p>
<!--CSS-->
.fc-red {
color: red;
}
class가 "fc-red"인 요소들에 적용
[]
)[type="button"]{
border:0;
cursor:pointer;
}
[class="btn"]{
color:#fff;
background: royalblue;
}
type이 button인 요소, class가 btn인 요소 적용
,
),
를 통해서 그룹으로 한번에 스타일을 지정하는 방법이다.h1, h2, h3, h4, h5, h6{ font-weight:bold;}
,로 구분 돼 있는 모든 h1~h6 요소에 적용
)
)를 사용한다. 많이 쓰는 선택자이다.section p {
border: 3px solid skyblue;
}
section 요소안에 모든 p요소들 적용
>
)>
를 통해서 구분하고 선택 요소 기준으로 직계 자손만(바로 아래 범주의 해당 요소)을 선택한다.section > p{
color:royalblue;
}
section 요소안에 section요소 기준으로 직계자손에 해당하느 p요소만 적용
~
)~
를 통해 구분하며, 선택 요소 기준으로 뒤에 나오는 형제만 선택한다.section ~ p{
text-decoration:underline;
}
section 요소를 기준으로 section요소의 뒤에있는 형제중 p요소만 적용
section + p{
background:yellow;
}
section 요소 기준으로 section요소의 형제중에 바로 뒤에있는 p요소만 적용
:link | 방문하지 않은 링크 |
---|---|
:visited | 방문한 링크 |
:hover | 마우스 커서를 올려 놓았을 때 |
:active | 마우스로 클릭했을 때 |
:focus | 포커스 되었을때 |
a:link {
color: blue;
}
a요소인데 방문하지 않은 링크일 경우만 적용
다른 선택자를 사용하려면 원하는 조건의 선택자를 골라서 link자리 대신 넣어주면 된다.
:first-child
: 형제 요소 그룹 중 첫 번째 요소:last-child
:형제 요소 그룹 중 마지막 요소:nth-child
: 형제 사이에서의 순서에 따라 요소를 선택할 수 있음li:nth-child(2n+1) {
color: lime;
}
n은 0부터 증가하며, 1,3,5,...이런식으로 li의 해당 인덱스(2n+1)만 적용
안에 수식(+,-)를 이용하여 만들 수 있음
4.:not
li:not(:first-child){ margin-top:20px; }
li요소안에 첫번째 요소가 아닌 요소들 적용
:enabled
, :disabled
: 활성화 /비활성화 상태일때:read-only
, :read-write
: 사용자가 편집할수 없는/있는 상태일 때:checked
: input checkbox
radio
유형일때 선택된 상태를 나타냅니다:required
: 필수입력값일 경우**::placeholder**
: 입력에 대한 추가 정보가 있을 경우앞서 CSS 선택자에 대해서 알아보았다. 배운 CSS의 선택자를 사용하다가 오류나 원하지 않는 결과가 나올수도 있다. 이런 경우 대다수의 원인은 CSS의 선택자의 우선순위가 존재해서 그렇다. 가령, 다른 선택자를 사용하여 동일한 요소에 스타일을 선언해주면 어떻게 될까? 이러한 문제가 있을 수 있기 때문에 CSS 선택자가 적용되는 우선순위가 존재하는 것이다.
li:nth-child(2n+1) {
color: lime;
color: blue;
}
위의 예제 코드일 경우 후자우선의 원칙으로 해당하는 요소의 color은 blue가 된다.
다른 선택자에 동일한 속성이 사용되었을 경우 더 구체적인 선택자에 적혀있는 속성을 따른다. 우선 가중치의 level이 존재한다. level은 1~4로 존재하는데 아래와 같다. 아래의 선택자중에서 1이 제일 높은 level이고 4로 갈수로 낮은 level이다. 그래서 높은 level에 있는 선택자일 수록 우선순위가 더 높다는 것이다. 가령, inline 스타일 속성과 가상 클래스에서 같은 속성이 사용된다면 inline은 level 1에 위치하고 가상 클래스는 level 3에 위치해 있기 때문에 inline선택자에 포함돼 있는 속성을 따를 것이다.
- inline 스타일 속성
- id
#
- class
.
, 가상 클래스, 속성선택자- type(tag), 가상요소 선택자
하지만 여기서 끝이 아니다. 만일, 같은 수준의 선택자에서 동일한 속성이 사용된다면 어느 선택자의 속성을 적용할까? 예를들어, 동일한 3수준에 있는 가상 클래스와 속성선택자에서 동일한 속성이 사용된다면 level로 우선순위를 판단하기 힘들다. 이때, 우선 순위 점수 계산이 필요하다.
inline-style | 1000점 |
---|---|
id 선택자 # | 100점 |
class ., 가상클래스, 속성선택자 | 10점 |
타입, 가상요소 선택자 | 1점 |
전체선택자 * | 0점 |
*!important*
!important
를 한번 사용하는 순간 다른 선택자에서 원하는 속성을 적용시킬 수 가 없게되며, 적용시키려면 또 다시 !important
를 사용해야한다. 이렇게 반복이 되면 코드에 !important
가 많아지고 더이상 사용할 수 없는 코드가 되버린다. 따라서 사용에 주의해야하며, 사용하지 않는 습관이 가장 바람직하다.