5월 ~ 7월) 웹/web
40Day - 14_input(+추가) / 15_label/ 16_textarea/ 17_select/ 18_datalist/ 19_fieldset/ [css] $$ 01_old/02_css/ 03_cascade/04_format.html & style.css / 05_basic_selector/ 06_derive_selector / 07_attribute_selector/ 08_virtual_selector
첼로그
2023. 5. 26. 18:16
14_input(+추가)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML</title>
</head>
<body>
<h1>input 태그</h1>
<hr>
<!-- input 태그 : 사용지로부터 값을 입력받기 위한 태그 - 입력태그 -->
<!-- type 속성 : 값을 입력받기 위한 형태를 속성값으로 설정 -->
<!-- name 속성 : 태그의 이름을 속성값으로 설정 - 전달값을 구분하기 위한 식별자 -->
<!-- value 속성 : 입력태그의 초기값을 속성값으로 설정 -->
<!-- size 속성 : 입력태그의 크기를 속성값으로 설정 -->
<!-- maxlength 속성 : 최대 입력 가능한 문자의 갯수를 속성값으로 설정 -->
<!-- autofocus 속성(HTML5) : 입력태그에 입력촛점(Focus)을 제공하는 속성 - 속성값 생략 가능 -->
<!-- required 속성(HTML5) : 필수 입력값을 설정하기 위한 속성 - 속성값 생략 가능 -->
<!-- => required 속성이 구현된 입력태그에 입력값이 없는 경우 form 태그 미동작 -->
<!-- placeholder 속성(HTML5) : 입력태그의 입력값에 대한 설명을 속성값으로 설정 -->
<!-- => placeholder 속성이 구현된 입력태그에 입력값이 입력되면 설명문 자동 소멸 -->
<!-- readonly 속성 : 입력태그를 읽기 전용으로 사용하기 위한 속성 - 속성값 생략 가능 -->
<!-- disabled 속성 : 입력태그를 비활성화 처리하기 위한 속성 - 속성값 생략 가능 -->
<!-- checked 속성 : 우선 선택을 제공하기 위한 속성 - 속성값 생략 가능 -->
<!-- min 속성 : 입력 가능한 최소값을 속성값으로 설정 -->
<!-- max 속성 : 입력 가능한 최대값을 속성값으로 설정 -->
<!-- type 속성값 -->
<!-- => hidden : 입력태그를 숨겨 사용자로부터 값을 입력받지 않고 요청 웹프로그램에게 필요한 값 전달 -->
<!-- => text : 문자값을 입력받아 전달 -->
<!-- => password : 문자값을 입력받아 전달 - 입력값이 특정문자로 변환되어 표시 -->
<!-- => radio : name 속성값이 같은 입력태그 중 하나를 선택하여 전달 -->
<!-- => checkbox : name 속성값이 같은 입력태그 중 한개 이상을 선택하여 전달 -->
<!-- => file : 파일을 입력받아 전달 -->
<!-- => email(HTML5) : 이메일을 입력받아 전달 - 이메일 형식에 검증 처리 -->
<!-- => number(HTML5) : 숫자 형식의 문자값을 입력받아 전달(증가 또는 감소 버튼 제공)
- 숫자 형식의 문자값만 입력 가능하여 최소값 및 최대값 검증 가능 -->
<!-- => tel(HTML5) : 전화번호 형식의 문자값을 입력받아 전달 - 스마트기기의 입력패드로 변경 -->
<!-- => url(HTML5) : URL 형식의 문자값을 입력받아 전달 - 스마트기기의 입력패드로 변경 -->
<!-- => search(HTML5) : 검색 관련 문자값을 입력받아 전달 - 스마트기기의 자동 완성기능 시용 -->
<!-- => color(HTML5) : 색을 선택하여 색상값(#RRGGBB)을 전달 -->
<!-- => range(HTML5) : 등급을 선택하여 등급값 전달 - min 속성과 max 속성으로 등급의 범위 설정 -->
<!-- => date(HTML5) : 날짜 형식의 문자값을 입력받아 전달 - 날짜를 선택할 수 있는 박스모델 제공 -->
<!-- => time(HTML5) : 시간 형식의 문자값을 입력받아 전달 - 시간를 선택할 수 있는 박스모델 제공 -->
<!-- => datetime-local(HTML5) : 날짜와 시간 형식의 문자값을 입력받아 전달 - 날짜와 시간를 선택할 수 있는 박스모델 제공 -->
<form action="#" method="post">
<input type="hidden" name="num" value="1000">
<p>아이디 : <input type="text" name="id" size="10" maxlength="20" autofocus="autofocus" required="required"></p>
<p>비밀번호 : <input type="password" name="passwd" placeholder="형식에 맞는 비밀번호 입력"></p>
<p>이름 : <input type="text" name="name" value="홍길동" readonly="readonly"></p>
<p>성별 : <input type="radio" name="gender" value="M">남자
<input type="radio" name="gender" value="W" checked="checked">여자</p>
<p>취미 : <input type="checkbox" name="hobby" value="독서">독서
<input type="checkbox" name="hobby" value="게임">게임
<input type="checkbox" name="hobby" value="등산">등산
<input type="checkbox" name="hobby" value="낚시">낚시</p>
<p>사진 : <input type="file" name="profile"></p>
<p>이메일 : <input type="email" name="email"></p>
<p>나이 : <input type="number" name="age" min="1" max="100"></p>
<p>전화번호 : <input type="tel" name="phone"></p>
<p>SNS : <input type="url" name="sns"></p>
<p>검색 : <input type="search" name="keyword"></p>
<p>좋아하는 색 : <input type="color" name="color"></p>
<p>실력 : 하<input type="range" name="grade" min="1" max="3">상</p>
<p>생년월일 : <input type="date" name="birthday"></p>
<p>기상시간 : <input type="time" name="uptime"></p>
<p>알람 : <input type="datetime-local" name="alram"></p>
<!-- form 태그에는 입력태그외에 제출 이벤트를 발생 시키는 태그가 반드시 존재 -->
<!-- => 제출 이벤트가 발생하면 form 태그가 실행되어 웹프로그램을 요청해 입력값 전달 -->
<!-- input 태그의 type 속성값을 [submit]으로 설정하여 태그(버튼)를 클릭한 경우 제출 이벤트 발생 -->
<!-- <input type="submit" value="회원가입"> -->
<button type="submit">회원가입</button>
<!-- form 태그의 하위태그에 입력태그의 입력값을 초기화 처리하는 기능의 태그 작성 가능 -->
<!-- => 초기화 이벤트(Reset Event) -->
<!-- input 태그의 type 속성값을 [reset]으로 설정하여 태그(버튼)를 클릭한 경우 초기화 이벤트 발생 -->
<!-- <input type="reset" value="다시입력"> -->
<!-- button 태그의 type 속성값을 [reset]으로 설정하여 버튼을 클릭한 경우 초기화 이벤트 발생 -->
<button type="reset">다시입력</button>
</form>
</body>
</html>
15_label
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML</title>
</head>
<body>
<h1>label 태그</h1>
<hr>
<!-- label 태그 : 입력태그에 입력촛점(Focus)을 제공하기 위한 태그 -->
<!-- label 태그를 사용하지 않은 경우 입력태그를 직접 클릭해야만 입력촛점 제공 -->
<h3>label 태그 미사용</h3>
<p>이름 : <input type="text" name="name"></p>
<p>취미 :
<input type="checkbox" name="hobby" value="낚시">낚시
<input type="checkbox" name="hobby" value="등산">등산
<input type="checkbox" name="hobby" value="독서">독서
<input type="checkbox" name="hobby" value="게임">게임
</p>
<hr>
<h3>label 태그 사용</h3>
<p><label>이름 : <input type="text" name="name"></label></p>
<p>취미 :
<label><input type="checkbox" name="hobby" value="낚시">낚시</label>
<label><input type="checkbox" name="hobby" value="등산">등산</label>
<label><input type="checkbox" name="hobby" value="독서">독서</label>
<label><input type="checkbox" name="hobby" value="게임">게임</label>
</p>
<p>취미 :
<!-- for 속성 : 태그를 구분하는 식별자를 속성값 설정 -->
<!-- => label 태그를 클릭한 경우 속성값으로 설정된 태그에 입력촛점 제공 -->
<input type="checkbox" name="hobby" id="hobby1" value="낚시"><label for="hobby1">낚시</label>
<input type="checkbox" name="hobby" id="hobby2" value="등산"><label for="hobby2">등산</label>
<input type="checkbox" name="hobby" id="hobby3" value="독서"><label for="hobby3">독서</label>
<input type="checkbox" name="hobby" id="hobby4" value="게임"><label for="hobby4">게임</label>
</p>
</body>
</html>
16_textarea
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML</title>
</head>
<body>
<h1>textarea 태그</h1>
<hr>
<!-- textarea 태그 : 다수행의 문자값을 입력받기 위한 태그 - 입력태그 -->
<!-- => 태그내용이 textarea 태그의 초기값으로 설정 -->
<!-- rows 속성 : 입력태그의 행의 갯수(높이)를 속성값으로 설정 -->
<!-- cols 속성 : 입력태그의 열의 갯수(폭)를 속성값으로 설정 -->
<form method="post">
<table>
<tr>
<td>장점</td>
<td>
<textarea rows="5" cols="80" name="good">장점이 아주 많습니다.</textarea>
</td>
</tr>
<tr>
<td>단점</td>
<td>
<textarea rows="5" cols="80" name="bad"></textarea>
</td>
</tr>
<tr>
<td colspan="2"><button type="submit">제출</button></td>
</tr>
</table>
</form>
</body>
</html>
17_select
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML</title>
</head>
<body>
<h1>textarea 태그</h1>
<hr>
<!-- textarea 태그 : 다수행의 문자값을 입력받기 위한 태그 - 입력태그 -->
<!-- => 태그내용이 textarea 태그의 초기값으로 설정 -->
<!-- rows 속성 : 입력태그의 행의 갯수(높이)를 속성값으로 설정 -->
<!-- cols 속성 : 입력태그의 열의 갯수(폭)를 속성값으로 설정 -->
<form method="post">
<table>
<tr>
<td>장점</td>
<td>
<textarea rows="5" cols="80" name="good">장점이 아주 많습니다.</textarea>
</td>
</tr>
<tr>
<td>단점</td>
<td>
<textarea rows="5" cols="80" name="bad"></textarea>
</td>
</tr>
<tr>
<td colspan="2"><button type="submit">제출</button></td>
</tr>
</table>
</form>
</body>
</html>
18_datalist
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML</title>
</head>
<body>
<h1>datalist 태그</h1>
<hr>
<!-- datalist 태그 : input 태그에 입력 가능한 값을 제공하기 위한 태그 -->
<!-- > 하위태그 : option -->
<form method ="post">
<label for ="subject">좋아하는 과목 : </label>
<!-- list 속성 : datalist 태그의 식별자를 속성값으로 설정 -->
<input type ="text" name ="subject" id ="subject" list ="subjectlist">
<datalist id ="subjectlist">
<option>JAVA</option>
<option>JSP</option>
<option>SPRING</option>
</datalist>
<button type="submit">제출</button>
</form>
</body>
</html>
19_fieldset
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML</title>
<style type="text/css">
fieldset, div {
width: 500px;
margin: 10px 20px;
}
li {
list-style-type: none;
margin: 10px;
}
</style>
</head>
<body>
<h1>fieldset 태그</h1>
<hr>
<!-- fieldset 태그 : 입력태그의 영역을 구분하기 위한 태그 -->
<!-- => 하위태그 : legend, input, textarea, select 등 -->
<h3>회원가입</h3>
<form method="post">
<fieldset>
<!-- legend 태그 : 입력태그의 영역에 대한 제목을 제공하기 위한 태그 -->
<legend>인증정보</legend>
<ul>
<li>아이디 : <input type="text" name="id"></li>
<li>비밀번호 : <input type="password" name="passwd"></li>
</ul>
</fieldset>
<fieldset>
<legend>개인정보</legend>
<ul>
<li>이름 : <input type="text" name="name"></li>
<li>이메일 : <input type="text" name="email"></li>
<li>전화번호 : <input type="text" name="phone"></li>
</ul>
</fieldset>
<div>
<button type="submit">회원가입</button>
<button type="reset">다시입력</button>
</div>
</form>
</body>
</html>
01_old
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS</title>
</head>
<body>
<!-- CSS를 사용하기 전에는 디자인 관련 HTML 태그와 속성을 사용하여 웹문서 작성 -->
<!-- > 웹문서 작성에 대한 생산성 저하 및 유지보수의 효율성 감소 -->
<h1 align = "center" > Old Style</h1>
<hr>
<p><font size = "7" color = "green"> 브라우저에 출력될 아주 중요한 내용입니다. </font> </p>
<p><font size = "7" color = "blue"> 브라우저에 출력될 아주 중요한 내용입니다. </font> </p>
<p><font size = "7" color = "green"> 브라우저에 출력될 아주 중요한 내용입니다. </font> </p>
<p><font size = "7" color = "blue"> 브라우저에 출력될 아주 중요한 내용입니다. </font> </p>
<p><font size = "7" color = "green"> 브라우저에 출력될 아주 중요한 내용입니다. </font> </p>
</body>
</html>
02_css
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS</title>
<!-- style 태그 : HTML 문서에 CSS를 사용하여 스타일 시트를 적용하기 위한 태그 -->
<style type = "text/css">
/* CSS 주석문 */
/*
Selector[,Selector,...][:paduo-class] {
Property: Value [Value Value ...];
Property: Value [Value Value ...];
...
}
*/
/* 선택자(Selector) : 태그(박스모델)를 선택하기 하기 위한 표현식 */
/* => 선택자에 의해 선택된 태그(박스모델)를 엘리먼트(Element)로 표현 */
h1 {
text-align: center;
}
/* p 태그를 사용하는 모든 엘리먼트에 동일한 스타일 적용 - 묵시적 반복 */
p {
font-size: 25px;
color: green;
}
p:nth-child(2n) {
color: blue;
}
</style>
</head>
<body>
<!-- CSS(Cascading Style Sheets) : HTML 문서에 모양과 서식을 제공하기 위한 스타일 시트 언어 -->
<!-- HTML 태그를 사용하여 웹문서를 구성하고 CSS를 사용하여 웹문서에 스타일(디자인) 적용 -->
<!-- => 웹문서 작성에 대한 생산성 증가 및 유지보수의 효율성 증가 -->
<h1>CSS Style</h1>
<hr>
<p>브라우저에 출력될 아주 중요한 내용입니다.</p>
<p>브라우저에 출력될 아주 중요한 내용입니다.</p>
<p>브라우저에 출력될 아주 중요한 내용입니다.</p>
<p>브라우저에 출력될 아주 중요한 내용입니다.</p>
<p>브라우저에 출력될 아주 중요한 내용입니다.</p>
</body>
</html>
03_cascade
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML</title>
<style type="text/css">
/* 부모 엘리먼트에 적용된 스타일은 자식 엘리먼트에 상속되어 적용 */
/* > 자식 엘리먼트에 상속되지 않는 스타일 존재 */
body {
color: red;
}
/* 스타일은 선언 순서에 의해 단계적으로 적용 - 기존 스타일 폐기(오버라이드) */
p {
color: green;
}
/* !important : 단계적 적용을 무시하고 최우선적으로 스타일을 적용하기 위한 속성값 */
li {
color: blue !important;
}
/* 단계적 적용의 예외사항 - HTML 태그의 계층적 순서에 의해 스타일 적용 */
/* > 자식 엘리먼트의 CSS 스타일이 나중에 적용 */
ul {
font-size: 20px;
color: lime;
}
li {
color: aqua;
}
</style>
</head>
<body>
<h1>CSS 스타일의 단계적 적용과 상속</h1>
<hr>
<p>브라우저에 출력될 아주 중요한 내용입니다.</p>
<hr>
<ul>
<li>아주 중요한 내용-1</li>
<li>아주 중요한 내용-2</li>
<li>아주 중요한 내용-3</li>
</ul>
</body>
</html>
04_style.css
@charset "UTF-8";
h1 {
color: red;
}
04_format.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML</title>
<!-- link 태그 : 외부파일을 불러와 내용을 연결하는 기능을 제공하는 태그 -->
<!-- => CSS 파일을 불러와 HTML 문서에 연결하여 스타일 시트 적용 -->
<!-- CSS 파일에 설정된 스타일을 사이트를 구성하는 모든 HTML 문서에 동일하게 적용하기 위해 사용 -->
<!-- => 사이트 구현시 모든 페이지에 일관성 있는 스타일 적용 -->
<!-- href 속성 : HTML 문서에 연결할 외부파일의 URL 주소를 속성값으로 설정 -->
<!-- type 속성 : HTML 문서에 연결할 외부파일의 파일형태(MimeType)를 속성값으로 설정 -->
<!-- rel 속성 : 파일 연결 관계를 속성값으로 설정 - CSS 파일을 연결하기 위해 [stylesheet] 속성값 사용 -->
<!-- <link href="/web/css/04_style.css" type="text/css" rel="stylesheet"> -->
<!-- style 태그를 사용하여 현재 HTML 문서에 스타일 시트를 적용 -->
<style type="text/css">
/* link 태그 대신 @import 시스템 속성을 이용하여 CSS 파일의 스타일 시트를 HTML 문서에 적용 */
/* => url 함수를 사용하여 HTML 문서에 포함시킬 CSS 파일의 URL 주소를 설정 */
@import url("/web/css/04_style.css");
h2 {
color: skyblue;
}
h3 {
color: blue;
}
h4 {
color: lime;
}
</style>
</head>
<body>
<h1>HTML 문서에 스타일 시트를 적용하는 방법</h1>
<hr>
<h2>브라우저에 출력될 아주 중요한 내용입니다.</h2>
<h3>브라우저에 출력될 아주 중요한 내용입니다.</h3>
<!-- 태그의 style 속성을 사용하여 해당 태그에 스타일 시트 적용 -->
<h4 style="color: maroon;">브라우저에 출력될 아주 중요한 내용입니다.</h4>
</body>
</html>
05_basic_selector
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS</title>
<style type="text/css">
/* 전체 선택자 : 모든 태그를 엘리먼트로 선택 - 비권장 */
/*
* {
margin: 0;
padding: 0;
}
*/
/* 태그 선택자 : 태그의 이름을 이용하여 엘리먼트로 선택 */
/* => 태그의 이름이 같은 다수의 엘리먼트에 동일한 스타일 적용 */
h2 { color: green; }
p { color: blue; }
/* 클래스 선택자 : 태그에 설정된 class 속성값을 이용하여 엘리먼트로 선택 */
/* => 태그 선택자와 구분하기 위해 앞에 [.]을 붙여 표현 */
/* => 동일한 class 속성값을 사용하는 다수의 엘리먼트에 동일한 스타일 적용 */
.text1 { color: maroon; }
.text2 { color: pink; }
.text3 { text-align: center; }
/* 아이디 선택자 : 태그에 설정된 id 속성값을 이용하여 엘리먼트로 선택 */
/* => 태그 선택자와 구분하기 위해 앞에 [#]을 붙여 표현 */
/* => id 속성값을 사용하는 하나의 엘리먼트에만 스타일 적용 */
#text4 { color: olive; }
/* 선택자는 , 기호를 사용하여 여러개 나열하여 엘리먼트로 선택 가능 */
#text5, #text6 { color: silver; }
</style>
</head>
<body>
<h1>선택자(Selector)</h1>
<hr>
<p>기본 선택자 - 태그 선택자, 클래스 선택자, 아이디 선택자</p>
<hr>
<h2>태그 선택자</h2>
<p>브라우저에 출력될 아주 중요한 내용입니다.</p>
<p>브라우저에 출력될 아주 중요한 내용입니다.</p>
<p>브라우저에 출력될 아주 중요한 내용입니다.</p>
<hr>
<h2>클래스 선택자</h2>
<!-- class 속성 : 스타일 시트를 적용하기 위한 태그의 클래스 이름을 속성값으로 설정 -->
<!-- => 태그에는 동일한 class 속성값 설정 가능 - class 속성값이 같은 태그에는 동일한 스타일 적용 -->
<!-- => class 속성값은 공백을 이용하여 다수의 속성값 설정 가능 -->
<p class="text1">브라우저에 출력될 아주 중요한 내용입니다.</p>
<p class="text1 text3">브라우저에 출력될 아주 중요한 내용입니다.</p>
<p class="text2">브라우저에 출력될 아주 중요한 내용입니다.</p>
<hr>
<h2>아이디 선택자</h2>
<!-- id 속성 : 태그를 구분하기 위한 식별자를 속성값으로 설정 -->
<!-- => id 속성값은 태그를 구분하기 위해 사용하므로 동일한 속성값 설정 불가능 -->
<p id="text4">브라우저에 출력될 아주 중요한 내용입니다.</p>
<p id="text5">브라우저에 출력될 아주 중요한 내용입니다.</p>
<p id="text6">브라우저에 출력될 아주 중요한 내용입니다.</p>
</body>
</html>
06_derive_selector
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS</title>
<style type="text/css">
/* 후손 선택자 : 부모 엘리먼트를 기준으로 모든 깊이의 태그를 이용하여 후손 엘리먼트로 선택 */
/* 형식)부모선택자 후손선택자 */
#super1 div { color: purple; }
/* 자식 선택자 : 부모 엘리먼트를 기준으로 첫번째 깊이의 태그를 이용하여 자식 엘리먼트로 선택 */
/* 형식)부모선택자 > 자식선택자 */
#super2 > div { color: gold; }
/* 필터 선택자 : 선택된 다수의 엘리먼트 중 특정 태그를 필터 엘리먼트로 선택 */
/* => 필터 선택자는 클래스 선택자를 사용하여 구현 */
/* 형식)선택자.클래스선택자 */
#super3 div { color: orange; }
#super3 div.choice { color: lime; }
/*-- △div. 선택자중 choice / 클래스선택자 */
/* 형제 선택자 : 선택자에 의해 선택된 엘리먼트 다음에 위치한 같은 깊이의 태그를 이용하여 형제 엘리먼트로 선택 */
/* 형식)선택자 ~ 선택자 */
#standard ~ p { color: fuchsia; }
/* 인접 형제 선택자 : 선택자에 의해 선택된 엘리먼트 다음에 위치한 같은 깊이의 첫번째 태그를
이용하여 인접 형제 엘리먼트로 선택 */
/* 형식)선택자 + 선택자 */
#standard + p { color: red; }
</style>
</head>
<body>
<h1>선택자(Selector)</h1>
<hr>
<p>파생 선택자 - 후손 선택자, 자식 선택자, 필터 선택자, 형제 선택자</p>
<hr>
<h2>후손 선택자</h2>
<div id="super1">
<div>사원이름</div>
<ul>
<li><div>홍길동</div></li>
<li><div>임꺽정</div></li>
<li><div>전우치</div></li>
</ul>
</div>
<hr>
<h2>자식 선택자</h2>
<div id="super2">
<div>사원이름</div>
<ul>
<li><div>홍길동</div></li>
<li><div>임꺽정</div></li>
<li><div>전우치</div></li>
</ul>
</div>
<hr>
<h2>필터 선택자</h2>
<div id="super3">
<div>사원이름</div>
<ul>
<li><div>홍길동</div></li>
<li><div class="choice">임꺽정</div></li>
<li><div>전우치</div></li>
</ul>
</div>
<hr>
<h2>형제 선택자</h2>
<p id="standard">브라우저에 출력될 아주 중요한 내용입니다.</p>
<p>브라우저에 출력될 아주 중요한 내용입니다.</p>
<p>브라우저에 출력될 아주 중요한 내용입니다.</p>
</body>
</html>
07_attribute_selector
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS</title>
<style type="text/css">
div {
font-size: 20px;
line-height: 35px;
}
a {
color: red;
text-decoration: none;
}
/* 속성 선택자 : 태그의 속성이나 속성값을 이용하여 엘리먼트로 선택 */
/* 형식)선택자[속성] => 태그 속성이 존재하는 태그를 엘리먼트로 선택 */
a[href] { color: green; }
/* 형식)선택자[속성='비교값'] => 태그 속성값이 비교값과 같은 태그를 엘리먼트로 선택 */
a[href='#abc'] { color: blue; }
/* 형식)선택자[속성*='비교값'] => 태그 속성값에 비교값이 포함된 태그를 엘리먼트로 선택 */
div[title*='여성'] { color: gold; } /* 1 3 4 */
/* 형식)선택자[속성~='비교값'] => 태그 속성값에 비교값이 하나의 단어로 포함된 태그를 엘리먼트로 선택 */
div[title~='화장품'] { color: silver; } /* 2 4 */
/* 형식)선택자[속성^='비교값'] => 태그 속성값에 비교값으로 시작되는 태그를 엘리먼트로 선택 */
div[title^='남성'] { color: orange; } /* 5 */
/* 형식)선택자[속성$='비교값'] => 태그 속성값에 비교값으로 종료되는 태그를 엘리먼트로 선택 */
div[title$='남성'] { color: maroon; } /* 6 */
</style>
</head>
<body>
<h1>선택자(Selector)</h1>
<hr>
<p>속성 선택자 : 태그의 속성과 속성값을 이용하여 엘리먼트를 검색하여 스타일 시트 적용</p>
<hr>
<div><a>하이퍼링크 기능을 제공하는 태그-1</a></div>
<div><a href="#">하이퍼링크 기능을 제공하는 태그-2</a></div>
<div><a href="#abc">하이퍼링크 기능을 제공하는 태그-3</a></div>
<hr>
<div title ="여성">화장품 -1</div>
<div title ="화장품">화장품 -2</div>
<div title ="여성화장품">화장품 -3</div>
<div title ="여성 화장품">화장품 -4</div>
<div title ="남성화장품">화장품 -5</div>
<div title ="화장품남성">화장품 -6</div>
</body>
</html>
08_virtual_selector
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS</title>
<style type="text/css">
div {
font-size: 20px;
line-height: 35px;
}
a {
color: orange;
text-decoration: none;
}
/* 가상선택자 : 선택자로 선택된 엘리먼트의 상태에 의해 스타일 시트 적용하기 위해 사용 */
/* 형식)선택자:상태 => 선택자로 선택된 엘리먼트에 따라 사용 가능한 상태 존재 */
/* :link : a 태그로 설정된 URL 주소의 웹문서를 브라우저로 한번도 요청하지 않은 상태인 경우 스타일 시트 적용 */
a:link { color: lime; }
/* :visited : a 태그로 설정된 URL 주소의 웹문서를 브라우저로 한번이상 요청한 상태인 경우 스타일 시트 적용 */
a:visited { color: red; }
/* :active : 엘리먼트에 마우스 커서를 위치하여 버튼을 누르고 있는 상태인 경우 스타일 시트 적용 */
a:active { color: green; }
/* :hover : 엘리먼트에 마우스 커서를 위치한 상태인 경우 스타일 시트 적용 */
a:hover {
color: blue;
text-decoration: underline;
}
/* :first-child : 후손 엘리먼트 중 첫번째 엘리먼트에 스타일 시트 적용 */
ul li:first-child { color: red; }
/* :last-child : 후손 엘리먼트 중 마지막 엘리먼트에 스타일 시트 적용 */
ul li:last-child { color: green; }
/* :nth-child(X) : 후손 엘리먼트 중 X번째 엘리먼트에 스타일 시트 적용 */
ul li:nth-child(3) { color: blue; }
/* :nth-child(2n-1) : 후손 엘리먼트 중 홀수번째 엘리먼트에 스타일 시트 적용 */
/* ol li:nth-child(2n-1) { color: silver; } */
ol li:nth-child(odd) { color: silver; }
/* :nth-child(2n) : 후손 엘리먼트 중 짝수번째 엘리먼트에 스타일 시트 적용 */
/* ol li:nth-child(2n) { color: gold; } */
ol li:nth-child(even) { color: gold; }
input { border: 1px solid gray; }
input[type='text'] { border: 1px solid maroon; }
/* :not(선택자) : 선택자의 엘리먼트를 제외한 나머지 엘리먼트에 스타일 시트 적용 */
input:not([type='text']) { border: 1px solid orange; }
/* :disabled : 선택자의 엘리먼트 중 비활성화 되어 있는 엘리먼트에 스타일 시트 적용 */
/* :checked : 선택자의 엘리먼트(input - radio 또는 checkbox)중에서 선택된 엘리먼트에 스타일 시트 적용 */
/* :selected : 선택자의 엘리먼트(select - option)중에서 선택된 엘리먼트에 스타일 시트 적용 */
input[type='text']:disabled { border: 2px dotted red; }
/* :focus : 선택된 엘리먼트(입력태그)중에서 입력촛점이 위치한 엘리먼트에 스타일 시트 적용 */
input:focus { border: 3px double green; }
</style>
</head>
<body>
<h1>선택자(Selector)</h1>
<hr>
<p>가상 선택자 : 엘리먼트의 상태에 따라 다른 스타일을 적용하기 위한 선택자</p>
<hr>
<!-- a 태그는 기본적으로 태그내용에 밑줄(underline)이 적용되며 글자색은 파란색(갈색)으로 스타일 적용 -->
<a href="https://www.daum.net">다음</a>
<a href="https://www.naver.com">네이버</a>
<a href="https://www.google.com">구글</a>
<hr>
<ul>
<li>홍길동</li>
<li>임꺽정</li>
<li>전우치</li>
<li>일지매</li>
<li>장길산</li>
</ul>
<hr>
<ol>
<li>홍길동</li>
<li>임꺽정</li>
<li>전우치</li>
<li>일지매</li>
<li>장길산</li>
</ol>
<hr>
<table>
<tr>
<td>아이디</td>
<td><input type="text" name="id"></td>
</tr>
<tr>
<td>비밀번호</td>
<td><input type="password" name="passwd"></td>
</tr>
<tr>
<td>이름</td>
<td><input type="text" name="name" value="홍길동" disabled="disabled"></td>
</tr>
<tr>
<td>이메일</td>
<td><input type="email" name="email"></td>
</tr>
</table>
</body>
</html>