리스트에 효과주기

Insert title here
  • Coffee
  • Tea
  • Cocoa
  1. 사과
  2. 바나나
  3. 포도
  4. 파인애플

 

예시

<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<style type="text/css">
ul.ulist{
	list-style-image: url("https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTZhZJ%2Fbtq6RMWWdrb%2FThqh4MzZVqAPV3TbyK4nSk%2Fimg.gif"); /* 이미지 넣기 */
}
.olist{

	list-style-type: lower-alpha;
}
</style>
</head>
<body>
<ul class="ulist">
	<li>Coffee</li>
	<li>Tea</li>
	<li>Cocoa</li>
</ul>
<ol class="olist">
	<li>사과</li>
	<li>배</li>
	<li>바나나</li>
	<li>포도</li>
	<li>파인애플</li>
</ol>
</body>

 

참고

list-style-image

이미지를 마커로 삽입할 수 있다.

list-style-type

마커를 변경해준다.

 

a:link, a:visited, a:hover, a:active 

a:link 링크를 방문 하기 전이였을 때
a:visited 링크가 방문했던 사이트였을 때
a:hover 링크에 마우스를 올려놨을 때
a:active 마우스로 링크를 클릭했을 때

 

예시

<head>
<style type="text/css">
a:link{
	color: royalblue;
	transition: 1s;
}
a:visited {
	color: red;
}
a:hover {
	color: white;
	background-color: blue;
}
a:active {
	color:yellow;
	background-color: black;
}
</style>
</head>
<body>
<a href="http://www.google.com" target="_blank">구글로 이동!</a>
</body>

 

실행화면

 

구글로 이동!

 

참조

transition : 시간

설정한 속성이 보여지는 시간 설정

background == background-color 배경색을 지정
background-image 배경이미지를 지정
background-position 배경이미지의 위치를 지정
background-repeat 배경이미지의 반복여부를 지정
background-size 배경이미지의 크기를 지정
background-attachment
배경이미지의 스크롤 여부를 지정

 

예시

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
body{
	width: 100%;
	/*
	background-color: green;
	background-image: url("back.png");
	background-repeat: no-repeat; 
	background-position: center;
	background-attachment: fixed; 
	*/

	/* 위와동일 */
	background: green url('images/back.jpg') no-repeat center fixed;

	-webkit-background-size : cover;
	-moz-background-size : cover;
	-o-background-size: cover;
	background-size: cover;
	
}
.main{
	width: 800px;
	/* opacity 찾아보기 불투명도 */
	background-color:rgba(255,255,255,0.5);
	margin: 1em auto;
	padding: 1em; 
}

</style>
</head>
<body>
<div class="main">
안녕하세요. 환영합니다.
</div>
</body>
</html>

 

실행화면

 

참고

background :  값 값 값 값; 이런 형식으로 지정할 수 있다.

background-repeat

no-repeat : 반복하지 않는다.

repeat-x : 가로로만 반복한다.

repeat-y : 세로로만 반복한다.

background-attachment

fixed: 고정(스크롤 x)

 

창 크기를 줄여도 배경이미지가 잘리지 않게 하는 방법

	-webkit-background-size : cover;
	-moz-background-size : cover;
	-o-background-size: cover;
	background-size: cover;

 

 

text속성

text-align 글자의 위치를 지정해주는 속성
text-decoration 글자에 줄을 그어주는 속성
text-indent 글자를 들여쓰기, 내어쓰기해주는 속성 (음수: 들여쓰기, 양수: 내여쓰기)
text-shadow 글자에 그림자를 주는 속성
text-transform 글자를 대문자 또는 소문자로 바꿔주는 속성

 

예시

<head>
<style type="text/css">
*{
	margin: 20px;
}
.p1{ 
	text-align: center;
}
.p2{
	text-decoration: overline;
}	
.p3{
	text-indent: -30px;
}

.p4{
	text-shadow:1px 1px 2px blue; 
}	
.p5{
	text-transform: uppercase;
} 
</style>

</head>
<body>
<p class="p1">Hello My World Welcome</p>
<p class="p2">Hello My World Welcome</p>
<p class="p3">Hello My World Welcome</p>
<p class="p4">Hello My World Welcome</p>
<p class="p5">Hello My World Welcome</p>
</body>

 

실행화면

참고

text-decoration

overline : 글자의 위에 선을 그어준다.

underline : 글자의 아래에 선을 그어준다.

line-through : 글자의 가운데에 선을 그어준다.

text-transform

uppercase : 대문자로 변환한다.

lowercase : 소문자로 변환한다.

capitalize : 첫글자를 다 대문자로 변환한다.

예) 본래 글자 : hello my world welcome

       변환 후 글자 : Hello My World Welcome

font 속성

font-size 글꼴의 크기를 지정
font-family 글꼴을 설정
font-style 글꼴의 스타일을 지정
font-variant 소문자를 작은 대문자로 바꿈
font-weight 글꼴의 굵기를 지정

 

예시

<head>
<style type="text/css">
.p1{ 
	font-size: 2em;
}
.p2{
	font-style: italic;
}	
.p3{
	font-family: "Times New Roman";
}	
.p4{
	font-variant: small-caps;
}	
.p5{
	font-weight: 700;
} 
</style>
</head>
<body>
<p class="p1">Hello My World Welcome</p>
<p class="p2">Hello My World Welcome</p>
<p class="p3">Hello My World Welcome</p>
<p class="p4">Hello My World Welcome</p>
<p class="p5">Hello My World Welcome</p>
</body>

 

실행화면

 

참고

font-size

px : 정밀한 크기 맞출 때 많이 사용

px는 숫자가 커져야해서 불편해서 em을 사용함

inch = 2.54cm

% : 100% == 16px == 1em

 

font-style

italic : 글자를 기울여 줍니다.

 

CSS(Cascading Style Sheet)란?

html을 이쁘게 꾸며주는 역할을 한다.

tag의 형태를  속성(attribute)의 속성값(property)으로 꾸며준다.

문자의 컬러, 종류, 형태 지정, 배경화면 설정, 이미지 지정, 테두리 넣기 등 각종 tag에 이미지 형태 라인 형태로 설정할 수 있다.

 

CSS 선언방식

inline  : 태그 선언과 동시에 태그 안에 직접 적어주는 방식

 

예시

<p style="font-size:10pt">p tag</p>

internal : heed태그 안에 style태그를 선언해 주는 방식

 

예시

<head>
<style type="text/css">
p {   
	background-color:blue;
	font-size:20pt
}
</style>
</head>
<body>

<p>p tag</p>

</body>

External : heed태그 안에 외부파일 불러오는 방식

 

예시

<head>

<link rel="stylesheet" href="city.css">

</head>

style tag에서 tag 접근 방법

* : 전체 tag 접근한다.

태그명 : 동일한 태그명 전체 접근한다.

#id명 : id로 접근 , 하나에만 적용할 땐 id를 사용한다.

.class명 : class로 접근, 여러개에 적용할 땐 class를 사용한다.

태그명#id명 : 해당 태그의 class로 접근한다.

태그명.class명 : 해당 태그의 class로 접근한다.

 

예시 : style태그 한 블록씩 실행해 가면서 확인 해보시는 걸 추천합니다!

<head>

<style type="text/css">

*{
	color: red;
}
p{
	font-size: 15px;
}
#pid{
	background-color: gray;
}
.class{
	background-color: black;
}
p#pid{
	padding-left: 20px;
}
p.class{
	padding: 5px;
}

</style>
</head>
<body>

<h1>h1 tag</h1>
<p>p tag</p>
<p id="pid">p tag id = pid</p>
<p class="class">p tag class = class</p>
<pre class="class">pre tag class = class</pre>

</body>

 

실행화면

 

스크립트에서 테이블 생성하여 JSON value값 넣기

 

json 예시

[
	{
		"title":"완전한 행복",
		"author":"정유정",
		"price":"14,200원"	
	},
	{
		"title":"혼자의 넓이",
		"author":"이문재",
		"price":"8,100원"	
	},
	{
		"title":"인간만세",
		"author":"오한기",
		"price":"11,700원"	
	},
	{
		"title":"빅버드",
		"author":"박기영",
		"price":"13,050원"	
	},
	{
		"title":"재와 물거품",
		"author":"김청귤",
		"price":"9,000원"	
	}
]

 

html 예시

<h2>책 목록표 JSON 받아오기</h2>
<table id="table" border="1" style="width: 25%"  cellpadding="5" rules="rows">
<tr>
	<th>제목</th><th>저자</th><th>가격</th>
</tr>
</table>

<script type="text/javascript">

let xhttp = new XMLHttpRequest();

xhttp.onreadystatechange = function () {

	if(xhttp.readyState == 4 && xhttp.status == 200){
		jsonfunc(this.responseText); 
	}
}
xhttp.open("GET","book.json", true);
xhttp.send();

function jsonfunc( jsonText ) {
	let arrTitle = new Array();
	let arrAuthor = new Array();
	let arrPrice = new Array();
	
	let json = JSON.parse(jsonText);

	for(i=0; i<json.length; i++){ // 값 전체 가져오는법
		arrTitle[i] = json[i].title;
		arrAuthor[i] = json[i].author;
		arrPrice[i] = json[i].price;
	}
	let table = document.getElementById('table');

	for(i=0; i<arrTitle.length; i++){
		let tr = document.createElement("tr");
		
		let td1 = document.createElement("td");			  
		td1.appendChild(document.createTextNode(arrTitle[i] + ""));
		
		let td2 = document.createElement("td");			 
		td2.appendChild(document.createTextNode(arrAuthor[i] + ""));
		
		let td3 = document.createElement("td");			 
		td3.appendChild(document.createTextNode(arrPrice[i]+ ""));
		
		tr.appendChild(td1);
		tr.appendChild(td2);
		tr.appendChild(td3);
		
		table.appendChild(tr);
	}
}
</script>

 

설명

new Array() : 테이블을 만들기 전 테이블에 뿌려줄 json value값을 넣기 위해 배열을 생성한다.

let json = JSON.parse(jsonText) : 변수를 지정하여 json 데이터를 파싱해준다.

for문을 사용하여 key값으로 접근 → 변수에 value값을 넣어준다.

for문을 사용하여 td태그에 값을 넣어주고 appendChild를 사용하여 데이터를 추가한다.

 

실행화면


XML 예시 : json데이터와 동일하다.

<?xml version="1.0" encoding="UTF-8"?>
<books>
	<book>
		<title>완전한 행복</title>
		<author>정유정</author>
		<price>14,200원</price>
	</book>
	<book>
		<title>혼자의 넓이</title>
		<author>이문재</author>
		<price>8,100원</price>
	</book>
	<book>
		<title>인간만세</title>
		<author>오한기</author>
		<price>11,700원</price>
	</book>
	<book>
		<title>빅버드</title>
		<author>박기영</author>
		<price>13,050원</price>
	</book>
	<book>
		<title>재와 물거품</title>
		<author>김청귤</author>
		<price>9,000원</price>
	</book>
</books>

 

html 예시 : 위 예제와 동일 구문이 많아 데이터 넣는 코드만 업로드 하였다.

// 위코드 json예제와 동일
xhttp.send();

function nodeValfunc( xml ) { // ( xml ) 객체 넘겨받기
	let arrTitle = new Array();
	let arrAuthor = new Array();
	let arrPrice = new Array();
	
	let title, author, price;
	let xmlDoc;

	xmlDoc = xml.responseXML; 
	
	title = xmlDoc.getElementsByTagName("title");
	author = xmlDoc.getElementsByTagName("author");
	price = xmlDoc.getElementsByTagName("price");

	for(i=0; i < title.length; i++){
		arrTitle[i] = title[i].childNodes[0].nodeValue;
		arrAuthor[i] = author[i].childNodes[0].nodeValue;
		arrPrice[i] = price[i].childNodes[0].nodeValue;
	}
    
    let table = document.getElementById('table');
// 아래코드 json예제와 동일

 

설명

new Array() : 테이블을 만들기 전 테이블에 뿌려줄 XML 데이터를 넣기 위해 배열을 생성한다.

xml.responseXML : xml문서의 데이터를 변수에 넣어줍니다.

title = xmlDoc.getElementsByTagName("title") : xmlDoc의 tag name명이 "title"인 요소의 node list를 넘겨받아 title에 넣어줍니다.

for문을 사용 → 배열에 childNodes[0].nodeValue로 접근하여 값을 넣어준다. 

 

실행화면은 json과 동일합니다.

html에서 json 데이터 불러오기

 

아래와 같은 json파일이 있다고 가정하자.

[
   {
      "name":"정수동",
      "age":24,
      "address":"서울시",
      "height":181.1
   },
   {
      "name":"심청",
      "age":14,
      "address":"강원시",
      "height":155.4
   },
   {
      "name":"향단",
      "age":17,
      "address":"남원시",
      "height":159.2
   },
   {
      "name":"이몽룡",
      "age":18,
      "address":"공주시",
      "height":173.3
   }
]

 

예시 1

<p id="demo"></p>

<script type="text/javascript">

let xhttp = new XMLHttpRequest();

xhttp.onreadystatechange = function () {
	if(xhttp.readyState == 4 && xhttp.status == 200){
		jsonfunc(this.responseText); //this = xhttp
//		jsonfunc(xhttp.responseText); // 둘다 가능
	}
}
xhttp.open("GET","member.json", true);
xhttp.send();

function jsonfunc( jsonText ) {

	let json = JSON.parse(jsonText); // String -> json으로 변환
	
	let txt = "";
	// 접근법 1
	for(i=0; i<json.length; i++){
		for(key in json[i]){ // key값 가져오기
			txt += key + ":" + json[i][key]; 
		}
		txt += "<br>";
	} 
	document.getElementById('demo').innerHTML = txt;
}
</script>

 

설명

json도 데이터를 읽어오려면 XML을 사용한다.

이중 for문을 사용하여 key값과 value값을 가져온다.

 

 

예시 2

	// 접근법 2
	for(i=0; i<json.length; i++){
		txt += json[i].name + " " + json[i].age + " " +
			   json[i].address+ " " + json[i].height + "<br>";
	}

 

설명

for문의 사용법만 달라진다.  key에 바로 접근하여 value값을 가져온다.

보기에 더 명확한 코드라 더 많이 사용하는 형식이다.

 

실행화면

정수동 24 서울시 181.1
심청 14 강원시 155.4
향단 17 남원시 159.2
이몽룡 18 공주시 173.3

예시 3

<p id="demo1"></p>
<p id="demo2"></p>
<p id="demo3"></p>
<p id="demo4"></p>
<script type="text/javascript">
let json = { // json : 맨앞에 [], {} 된다.
	       "quiz": {
	           "sport": {
	               "q1": {
	                   "question": "Which one is correct team name in NBA?",
	                   "options": [
	                       "New York Bulls",
	                       "Los Angeles Kings",
	                       "Golden State Warriros",
	                       "Huston Rocket"
	                   ],
	                   "answer": "Huston Rocket"
	               }
	           },
	           "maths": {
	               "q1": {
	                   "question": "5 + 7 = ?",
	                   "options": [
	                       "10",
	                       "11",
	                       "12",
	                       "13"
	                   ],
	                   "answer": "12"
	               },
	               "q2": {
	                   "question": "12 - 8 = ?",
	                   "options": [
	                       "1",
	                       "2",
	                       "3",
	                       "4"
	                   ],
	                   "answer": "4"
	               }
	           }
	       }
	   };
document.getElementById("demo1").innerHTML = json.quiz.sport.q1.question[0];
document.getElementById("demo2").innerHTML = json.quiz["sport"].q1.question;
document.getElementById("demo3").innerHTML = json.quiz.sport.q1.options[1];
document.getElementById("demo4").innerHTML = json.quiz.maths.q1.options[2];
</script>

설명

배열로 접근하는 방식이다.

key값.key값.key값.key값 이런식으로 접근한다. value의 index가 1개일 땐 [0]을 사용하지 않는다.

[0]을 사용할 경우 해당 index의 첫번째 문자열만 반환한다.

 

실행화면

W

Which one is correct team name in NBA?

Los Angeles Kings

12

 

JSON(Java Script Object Notation)

key : value - key값을 통해서 value값을 얻는다.

json은 문자열이 아니다. 완전한 json데이터이다.

블록으로 관리한다.

xml에 비해 접근법이 간단하다.

key값은 영어를 권장한다.

JSON파일의 시작 괄호는 [, { 둘다 사용 가능하다.

 

JSON파일 예시 

[
    {
    name:"홍길동",
    age:24,
    address:"서울시"
    },
    {
    name:"성춘향",
    age:16,
    address:"남원시"
    }
]

 

html 접근 예시

 <p id="demo1"></p>
 <p id="demo2"></p>

 <script type="text/javascript">
 let jsonData = [	// json의 형태
					 { // 0번지
						 name:"홍길동",
					   	 age:24 
					 },
					 { // 1번지
						 name:"성춘향",
					   	 age:24 
					 },
					 { // 2번지
						 name:"일지매",
					   	 age:24 
					 }
				 ];
 // alert(jsonData);

 document.getElementById("demo1").innerHTML 
 			= jsonData[0].name + " " + jsonData[0].age;
 
 let jsonText = '{ "name":"홍두깨", "age":25, "주소":"서울시" }';  // 현재는 문자열이다.
 // alert(jsonText);
 
 let jsonObj = JSON.parse(jsonText);
 let jsonStr = JSON.stringify(jsonObj)
 
 document.getElementById("demo2").innerHTML =  jsonObj.name + " " + jsonObj.주소;

 </script> 

 

설명

json value 접근방법 : json변수명[index].key로 접근할 수 있다.

alert(jsonData) : 문자열이면 문자열 전체가 보일텐데 jsonData이기 때문에 object가 출력된다.

alert(jsonText) : 문자열이기 때문에 문자열 전체가 출력된다.

JSON.parse(jsonText)  : String → json(object) 변경법

JSON.stringify(jsonObj) : json(object) → String 변경법

json을 String형으로 변경시 key값은 ""따옴표 안에 들어가 있어야 한다. 예시) "name"

 

실행화면

홍길동 24

홍두깨 서울시

Html파일에서 xml 파일에 직접 접근하기

 

이러한 내용의 xml 파일이 있다고 가정하자.

<?xml version="1.0" encoding="UTF-8"?>
<고객들>
	<고객>
		<번호>1</번호>
		<이름>홍길동</이름>
		<주소>서울시</주소>
		<방문>2020/03/23</방문>
	</고객>
	<고객>
		<번호>2</번호>
		<이름>성춘향</이름>
		<주소>남원시</주소>
		<방문>2021/01/31</방문>
	</고객>
	<고객>
		<번호>3</번호>
		<이름>일지매</이름>
		<주소>부산시</주소>
		<방문>2019/07/11</방문>
	</고객>
</고객들>

 

Hhtml 예시

<p id="demo"></p>
<script type="text/javascript">

let xhttp = new XMLHttpRequest();

xhttp.onreadystatechange = function () {
	
	if(this.readyState == 4 && this.status == 200){
	 nodeValfunc( this ); // this == xhttp 
	}
}
xhttp.open("GET", "member.xml", true);
xhttp.send();

function nodeValfunc( xml ) { // ( xml ) 객체 넘겨받기
	let num, name;
	let txt, numtxt, xmlDoc;
	
	txt = numtxt = ''; // 빈 문자열로 초기화
	
	xmlDoc = xml.responseXML; 
	
	num = xmlDoc.getElementsByTagName("번호");
	name = xmlDoc.getElementsByTagName("이름");
	console.log(num.length);
	
	for(i=0; i < num.length; i++){
		txt += num[i].childNodes[0].nodeValue + "<br>";
		numtxt += name[i].childNodes[0].nodeValue + "<br>";
	}
	
	document.getElementById("demo").innerHTML = txt + numtxt;
	// 실행하면 번호와 이름이 p태그에 출력된다.
}

</script>

 

설명

Java Script Ajax : 이런방식으로 데이터와 통신한다.

 

XMLHttpRequest() : XML 통신을 하기 위한 객체(상태정보)

onreadystatechange : 요청에 대한 응답(readyState의 진행 상태)을 받는 이벤트 리스너

readyState : 진행 상태

    0 -> open 메소드(xhttp.open("GET", "member.txt", true);)를 수행하기 전 상태
    1 -> loading 중...
    2 -> loading 완료
    3 -> Server 처리중
    4 -> Server 처리 완료

status : 상태
    200 -> 성공(success)
    403 -> 접근금지(서버에 문제가 있을 때)
    404 -> 없음(파일(test.txt)을 못찾는거)
    500 -> 구문(문법)에러

this.readyState == 4 && this.status == 200

이와 같은 조건이 되었을 때 정상적으로 요청이 처리되어 응답이 온 경우 입니다.

 

send : ajax요청을 서버로 전달한다.

responseXML : 응답을 받은 XML

 

실행화면

+ Recent posts