Language/html&css

[css] 개념, Selector(선택자)

지윤공원🌳 2021. 3. 14. 00:30
728x90

CSS란?

css는 cascading style sheet라는 뜻이다. cascading은 계단식, 폭포, 단계라는 의미를 가지고 있다. 

css는 마크업 언어인 html을 꾸며줌으로서 다양한 디자인의 웹사이트를 제작할 수 있도록 돕는 아주 중요한 요소이다.

같은 html파일은 css를 달리함으로서 수백, 수천개의  다른 웹사이트를 만들 수 있다. 

css는 생각해야 하는 부분이 많으므로 복잡한 경향이 있다.

 

Selector (선택자)

1. 요소 선택자 (태그 선택자)

html 태그를 이용하는 선택자다. html문서 내의 해당 태그에 스타일을 적용한다.

여러 개를 쉼표로 구분하여 그룹화를 할 수도 있다.

*{
	margin: 0 auto;
}

h1, h2, h3{
	color: blue;
}

div{
	background-color: yellow;
}

2. class 선택자

html 태그의 글로벌 속성인 class를 사용하는 선택자이다.

html 태그에 class 속성에 값을 넣고 그 값을 사용해서 스타일을 넣을 수 있다. 

참고로 class 속성은 여러 개의 값을 가질 수 있다. 

css에서 클래스는 . (마침표)를 사용한다. class는 여러 요소가 같은 값을 가질 수 있다. (약속, 규약같은 것이다.)

.container{
	width: 100%;
}

.menu{
	line-height: 30px;
}

3.  id 선택자

html 태그의 글로벌 속성인 id를 사용하는 선택자이다.

html 태그에 id 속성에 값을 넣고 그 값을 사용해서 스타일을 넣을 수 있다.

id 속성은 class 속성과는 다르게 문서 내의 유일한 요소에만 사용한다.

(여러 요소가 id로 같은 값을 가질 수 없는 것은 아니지만, 이렇게 하지 않는다. )

css에서 클래스는 # (해시)를 사용한다. 

#logo{
	width: 100px;
    height: 150px;
}

4.  속성 선택자

  • 단순 속성

단순하게 속성을 사용해서 선택하는 것입니다.

속성 선택자는 대괄호를 이용해서 선언합니다.

대괄호 안에 속성 이름이 들어갑니다. ex) class, id 등

요소에 해당 이름의 속성이 있다면 해당 사항이 적용됩니다.

ex) 대괄호 안에 class 적을 시 요소에 class 속성이 있다면 적용

span[class]{
	color: pink;
}

div[class][id]{
	color: gray;
}

 

  • 정확한 속성

 

 

정확하게 속성과 그 값을 통해서 선택하는 것입니다.대괄호 안에 속성 이름과 속성값을 적으면 적용됩니다.

span[class="text"]{
	color: pink;
}

div[class="text"][id="info"]{
	color: gray;
}

 

  • 부분 속성

속성명과 그 값 사이에 기호가 포함됩니다.

기호에 따라서 동작이 다릅니다. 

~ : 값이 공백으로 구분된 "text" 단어가 포함되는 요소 선택

^ : 값이 "text"로 시작하는 요소 선택

$ : 값이 "text"로 끝나는 요소 선택

* : 값이 "text" 문자가 포함되는 요소 선택 (포함만 되면 가능)

span[class~="text"] { 
	font-style: italic; 
}
span[class^="text"] { 
	font-style: italic; 
}
span[class$="text"] { 
	font-style: italic; 
}
span[class*="text"] { 
	font-style: italic; 
}

5. 선택자 조합

선택자는 다양하게 조합할 수 있습니다. 

/* 요소, class : p요소이고 class가 text인 것 */
p.text { 
	... 
}

/* class 여러 개 : class에 text, menu 둘 다 있는 것 */
.text.menu { 
	... 
}

/* id, class : id가 info이고, class가 text인 것 */
#info.text것{ 
	... 
}
728x90