[목차]
01. 선택자
1) 기본 선택자
➡️ 전체 선택자
- 기호 : * (애스터리스크)
- 방법 : * { 속성 : 값; }
➡️ 태그 선택자(타입 선택자)
- 선택자를 작성하는 위치에 기호 없이 태그 이름만 명시
- W3C 제공하는 선택자에 대한 설명에는 “타입 선택자(type selector)”라고 명시되어 있다.
➡️ 아이디 선택자
- 중복불가.
- 기호 : #아이디 이름
➡️ 클래스 선택자
- 중복가능.
- 기호 : .클래스이름
- 여러 이름을 가질 수 있다. (class = “black red” ➡️ black, red 클래스가 두개)
➡️ 그룹 선택자
- 쉼표(,)로 구분해서 여러 선택자를 나열하고 스타일 규칙을 한번만 작성한다.
[코드예제] 그룹 선택자
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8" /> <title>CSS</title> <style> /* 그룹 선택자 */ div, .red, #red { color: red; } </style> </head> <body> <span class="red">붉은색</span> <p id="red">붉은색</p> <p>검은색</p> <div>붉은색</div> </body> </html>
[코드예제] 기본 선택자
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8" /> <title>CSS</title> <style> /* 전체 선택자 기호 : *(애스터리스크) * { color: deeppink; } */ /* 태그 선택자(타입 선택자) span { color: red; } */ <!-- 클래스 선택자 --> .apple { color: deeppink; } .food { font-size: 40px; } .food.japanese-food { color: deeppink; text-decoration: underline; } <!-- 아이디 선택자 --> #apple { color: gold; } </style> </head> <body> <ul> <li class="apple">사과</li> <li>딸기</li> <li>블루베리</li> </ul> <p id="apple">사과</p> <span class="apple">사과</span> <span class="food">비빔밥</span> <!-- 클래스 두개 --> <span class="food japanese-food">초밥</span> </body> </html>
[코드예제] 기본 선택자 실습
[html.html]
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8" /> <title>기본 선택자</title> <link rel="stylesheet" href="./css/main.css" /> </head> <body> <!-- 태그 선택자, 클래스 선택자, 아이디 선택자 색상 변경, 텍스트 정렬, 밑줄 --> <div>태그 선택자</div> <span>태그 선택자</span> <div class="main_div"> <h1 class="class_selector">클래스 선택자</h1> <h1 class="class_selector special">클래스 선택자</h1> <button id="id_selector">아이디 선택자</button> <p class="class_selector">클래스 중복 가능</p> </div> </body> </html>
[main.css]
@import url("./sub.css"); span { color: blueviolet; text-decoration: underline; background-color: aqua; } .main_div { background-color: antiquewhite; text-align: center; } .class_selector.special { color: blue; } .class_selector { color: deeppink; } #id_selector { font-size: 50px; width: 500px; height: 500px; border-color: red; background-color: aqua; }
2) 복합 선택자
➡️ 일치선택자
- 사용 시 태그 선택자와 클래스/아이디 선택자의 위치를 바꿔서 작성하면 찾을 수 없다.
- 태그 선택자를 먼저 작성하는 것이 좋다.
➡️ 자식 선택자
- 기호 : > (앵글 브레킷, 꺽쇠 괄호)
➡️ 하위(후손) 선택자
- 기호 : 스페이스바(”공백 문자”)
- 띄어쓰기도 하나의 특수 기호 = 공백 문자
➡️ 인접 형제 선택자
- 기호 : +
➡️ 일반 형제 선택자
- 기호 : ~ (틸드 Tilde)
[코드예제] 복합 선택자
[html.html]
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8" /> <title>복합 선택자</title> <link rel="stylesheet" href="./css/main.css" /> </head> <body> <div> <ul> <li>수박</li> <li class="peach">복숭아</li> <li>사과</li> <li>딸기</li> <li>망고스틴</li> <li>귤</li> </ul> </div> <span class="peach">복숭아</span> <ol> <li>JAVA</li> <li>HTML</li> <li>CSS</li> <ul> <li>Spring</li> <li>JS</li> <li>DBMS</li> </ul> </ol> </body> </html>
[main.css]
/* 일치 선택자 */ span.peach { color: pink; } /* 자식 선택자 */ /* 요소 ul를 찾고 해당 요소의 자식 요소를 > 기호로 찾음 */ ul > .peach { color: pink; } /* 하위 선택자 */ div .peach { color: mediumaquamarine; text-decoration: underline; } /* 인접 형제 선택자 */ .peach + li { color: darkgrey; } /* 일반 형제 선택자 */ .peach ~ li { color: orange; font-weight: bold; } /* ---------------------------------- */ /* ol tag의 자식 선택자 */ ol > li { color: forestgreen; font-weight: bold; } /* ol tag의 모든 하위 선택자 */ ol li { color: red; }
3) 가상 클래스 선택자
- 표기법 ➡️ 선택자:가상클래스
종류
동작을 나타내는 가상 클래스 선택자
- hover
- active
- focus
- 포커스가 가능한 요소는 HTML의 대화형 콘텐츠(input, a, button 등)이다.
- 대화형 콘텐츠 : 사용자와 상호작용을 위해 설계된 요소이다.
[코드예제] 동작
[html.html]
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8" /> <title>title</title> <link rel="stylesheet" href="./css/sub.css" /> </head> <body> <input type="text"> <div class="box"></div> <div class="box-sub"></div> </body> </html>
[sub.css]
input:focus { background-color: blue; } .box { width: 100px; height: 100px; background-color: blue; } .box:hover { width: 300px; background-color: blueviolet; transition: 2s; } .box-sub { width: 100px; height: 100px; background-color: chartreuse; } .box-sub:active { width: 300px; background-color: deeppink; }
특정 요소를 선택하는 가상 클래스 선택자
- first-child
- last-child
- nth-child(n)
- not(요소)
[코드예제] 선택
[html.html]
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8" /> <title>title</title> <link rel="stylesheet" href="./css/sub.css" /> </head> <body> <div class="address"> <p>송천동</p> <p>중화산동</p> <span>덕진동</span> <div>호성동</div> <h3>우아동</h3> <h4>만성동</h4> <h5>효자동</h5> </div> </body> </html>
[sub.css]
.address p:first-child { color: darkblue; font-weight: bold; text-decoration: underline; } .address h5:last-child { color: deeppink; } .address *:nth-child(even) { color: greenyellow; } .address *:nth-child(odd) { color: aqua; } .address *:not(p) { color: lawngreen; }
4) 가상 요소 선택자
- 문서 안에 특정 부분에 대해 스타일을 지정하기 위해 가상으로 요소를 만들어 추가합니다.
- 표기법 ➡️ ::가상요소선택자 (1개 찍어도 동작하지만 웹표준에 어긋난다.)
종류
- before
- 어떤 선택자 요소의 앞부분에 내용을 넣을 수 있다.
- after
- 어떤 선택자 요소의 뒷부분에 내용을 넣을 수 있다.
[코드예제] before, after + breadcrumb
[html.html]
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8" /> <title>가상 요소 선택자</title> <link rel="stylesheet" href="./css/main-2.css"/> </head> <body> <div class="box">김재훈입니다.</div> <fieldset> <legend>라면 메뉴</legend> <ol> <li class="hot">진라면</li> <li>신라면</li> <li>열라면</li> <li>참깨라면</li> <li class="new">마라탕면</li> </ol> </fieldset> <fieldset> <legend>Breadcrumb</legend> <div class="breadcrumb"> <a href="">HOME</a> <a href="">국민내일배움카드</a> <a href="">훈련과정</a> <a href="">정보마당</a> </div> </fieldset> </body> </html>
[main-2.css]
.box::after { content: " 안녕하세요~!"; } ol li.hot::after { content: "HOT"; background-color: red; color: white; font-size: 13px; border-radius: 5px; padding: 0 5px; margin-left: 3px; } ol li.new::before { content: "NEW"; background-color: yellowgreen; color: white; font-size: 13px; border-radius: 5px; padding: 0 5px; margin-right: 3px; } .breadcrumb a { text-decoration: none; color: black; } .breadcrumb a::after { content: ">"; margin-left: 5px; } .breadcrumb a:last-child::after { content: ""; }
- before
5) 속성 선택자
- 특이한 속성을 가진 요소를 찾을 때 적합합니다.
- 하지만 일반적으로 가지는 속성을 기준으로 특정 요소를 찾을 때는 유용하지 않습니다.
- (1) 표기법 ➡️ [속성이름]
- (2) 표기법 ➡️ [속성 = “값”]
[코드예제] 속성
[html.html]
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8" /> <title>title</title> <link rel="stylesheet" href="./css/sub.css" /> </head> <body> <input type="text"> <input type="password"> <input type="text" value="id001" disabled> </body> </html>
[sub.css]
[disabled] { color: chartreuse; } [type="password"] { color: crimson; }
02. 웹 브라우저에서 적용되는 스타일
적용 스타일 예시
➡️ 브라우저 자체 색상 : 하얀색
➡️ 제작자 : 색상을 라이트 그레이
➡️ 사용자 : 눈이 아파서 다크 모드 실행
03. CSS 적용 우선 순위
점수
- !important : 1억점 그냥 높다
- 인라인 : 1천점
- 아이디 선택자 : 100점
- 클래스 선택자 : 10점
- 태그 선택자(타입 선택자) : 1점
[코드예제] 우선 순위
[html.html]
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8" /> <title>css 스타일 적용 우선 순위</title> <link rel="stylesheet" href="./css/main.css" /> </head> <body> <h1>적용 우선 순위 - 태그</h1> <h1 class="test">적용 우선 순위 - 클래스</h1> <h1 id="test" style="color: blueviolet;">적용 우선 순위 - 아이디</h1> <h1>적용 우선 순위 - 인라인</h1> <h1>적용 우선 순위 - !important</h1> </body> </html>
[main.css]
/* 태그 선택자 */ h1 { color: deeppink !important; } /* 클래스 선택자 */ .test { color: brown; } /* 아이디 선택자 */ #test { color: blue; } /* 동일한 스타일은 나중에 작성한 스타일 규칙이 적용 */ #test { color: bisque; }
04. 부모와 자식 관계
1) 부모, 자식
➡️ 바깥에 있는 요소를 “부모 요소”라고 하며 내부에 있는 요소를 “자식 요소”라고 한다.
2) 조상(상위), 후손(하위)
➡️ div는 조상 요소(상위 요소)라고 부른다.
➡️ h2, span은 후손 요소(하위 요소)라고 부른다.
05. CSS 스타일 상속
상속이 가능한 속성 목록
➡️ 주로 글자, 문자 관련 속성들
- ex) 글자 크기, 두께, 기울기, 폰트, 색상 등
➡️ 강제 상속 inherit
- 실제 상속할 수 없는 내용도 강제 상속 가능
[코드예제] 상속
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>title</title> <style> .box { background-color: aqua; width: 300px; height: 300px; } .item { width: 100px; background-color: blue; height: inherit; } </style> </head> <body> <div class="box"> <div class="item"></div> </div> </body> </html>
06. 기타 CSS 속성
1) overflow
➡️ 값
- visible
- 넘친 내용을 그대로 보여준다.
- hidden
- 넘친 내용을 잘라낸다.
- scroll (사용x)
- 넘친 내용을 자르고 스크롤 바를 생성한다.
- auto
- 넘친 내용이 있는 경우에만 잘라내고 스크롤 바 생성한다.
- overflow-x / y
- x축 또는 y축으로 스크롤 바 생성한다.
[코드예제] overflow.css
.overflow { width: 400px; height: 200px; border: 2px solid red; /* overflow: hidden; */ /* overflow: scroll; */ overflow: auto; }
- visible
2) opacity
값
- 1 : 불투명
- 0~1 까지의 소수점 숫자
3) display
- 화면에 보여질 요소의 특성을 지정합니다.
- display속성 사용 시 블록 요소와 인라인 요소를 바꿔서 사용 가능합니다.
값
- block : 인라인 > 블록
- inline : 블록 > 인라인
- inline-block
- flex
- grid
4) float
- p태그는 불록요소이기 때문에 이미지와 함께 배치할 수 없다.
5) 글꼴, 문자
➡️ font-style
값
- normal : 기울기 없음
- italic : 기울어진 글자
- oblique : 기울어진 글자
➡️ font-weight
값
- normal : 기본 두께(400)
- bold : 두꺼운 글씨(700)
- 100 ~ 900 까지 숫자를 작성.
➡️ font-size
- 단위 : px, em, rem
➡️ line-height
- 값은 숫자를 작성(배수 사용을 권장. 유지보수 용이)
➡️ font-family
- 글꼴 후보를 쉼표로 구분해서 여러개 명시 가능
- 마지막 글꼴 계열은 필수 작성
- 모든 후보를 사용 시도 후 사용 가능한 글꼴 후보가 없다면 글꼴계열에서 브라우저가 사용 가능한 폰트를 화면에 출력한다.
- 글꼴 계열 : serif(바탕체 계열), sans-serif(고딕체 계열) 등
➡️ text-align
값
- left : 기본값
- right
- center
- justify : 양 쪽 정렬
➡️ text-decoration
값
- none : 장식없음
- underline : 밑 줄
- line-through : 중앙선
6) 목록
➡️ list-style
값
- disc : 채워진 원
- circle : 빈 원 모양
- square : 채워진 사각형
- decimal : 1부터 시작하는 수
- none : 없음
- 원하는 이모지, 텍스트를 작성하고 싶으면 쌍따옴표안에 작성
tag : #선택자 #우선순위 #부모 #자식 #조상 #하위 #상속 #CSS
Uploaded by N2T