레이아웃을 구성하는 CSS 박스 모델

 

 

CSS 박스모델이란, 웹 문서의 내용을 박스형태로 정의하는 방법.

 

블록 레벨의 대표적인 태그는 <h1>, <div>, <p> 등이 있다.

 - 이들은 한줄을 혼자 차지(왼쪽, 오른쪽에 다른 요소가 올 수 없다.)

 

인라인 레벨의 대표적인 태그는 <span>, <img>, <stong> 등이 있다.

 - 이들은 콘텐츠 만큼만 영역을 차지, 나머지 공간에 다른 요소가 올 수 있다.

 

 

 

 


1. CSS박스모델  &  테두리 스타일 지정

📌 CSS 박스모델

🤔 박스모델의 기본 구성
콘텐츠 영역(contents), 패딩(padding), 테두리(border), 마진(margin) 등의 요소로 구성



🤔 콘텐츠 영역의 크기를 지정하는 width, height 속성
	.box1 {
    	width: 400px;
        height: 50%;
    }
 </style>
 ...
 <div class="box1"></div>

 

 

📌 테두리 스타일 지정

🤔 박스모델 방향 소개

🤔 테두리 스타일 지정하는 border-style 속성



🤔 테두리 두께를 지정하는 border-width 속성


🤔 테두리 색상을 지정하는 border-color 속성



🤔  둥근 테두리를 만드는 border-radius 속성
	#round {border-radius: 25px;}
</style>
...
<img src="img/cat.png">
<img id="round" src="img/cat.png">



cf. 이미지를 원형으로 표시하기
#round {border-radius: 50%;}

cf. 원하는 모서리만 둥글게 처리
#round {
	border-top-left-radius: 20px;
}

 

 

 


2. 여백을 조절하는 속성

  • 요소 주변 여백을 설정하는 margin 속성
margin: <크기> | <백분율> | auto

ex)
#margin1 {margin: 50px;} /*상하좌우 모두 50px*/
#margin2 {margin: 30px 50px;} /*상하 30px, 좌우 50px*/
#margin3 {margin: 30px 20px 50px} /*상 30px 좌우 20px 하 50px*/

 

  • margin속성을 사용해 가운데 정렬
	body {...}
    #container {
    	...
        width: 60px;
        margin: 20px auto;
        padding: 20px;
    }
    
<div id="container">
	...

 

  • margin 중첩 이해하기
    • 요소를 세로로 여러개 배치할 때, 중간에 있는 마진이 지나치게 커지는 것을 방지
    • 이로 인해 서로 만날 때, 큰 마진값으로 합쳐진다.

 

 

 

  • contents와 테두리사이 여백을 설정하는 padding 속성
	#padding1 {padding: 20px 30px 40px 50px;}
    ...
</style>
...

 

 

🤔 Style 형식

- 맨 앞의 선택자: 스타일을 어떤 태그에 적용할 것인지 알려주는 것.
- { }안에 스타일 정보를 넣는다. (이때, ;으로 구분, 여러 스타일 규칙을 지정가능)

Ex. 글자를 가운데로 정렬 및 파란색 글자로 지정하고 싶을 때,




🤔 Style Sheet
스타일 규칙을 한눈에 확인 및 필요 시 수정하기 쉽게 한군데 묶어 놓은것.
크게 스타일 시트는 2가지로 나눌 수 있다.
 - 브라우저 기본 스타일: 웹브라우저에 기본으로 만들어져 있음
 - 사용자 스타일: 사이트 제작자가 만듬
     i) 인라인 스타일
    ii) 내부 스타일 시트
    iii) 외부 스타일 시트
 


Ex) 인라인 스타일

 

 

 


3. 웹 문서의 레이아웃 만들기

  • 배치 방법을 결정하는 display 속성 (block, inline, inline-block, none)

 

 

  • 왼쪽, 오른쪽으로 배치하는 float 속성 (left, right, none)
<style>
	img {
    	float: left;	/* 왼쪽에 떠있게*/
        margin-right: 40px;	/*오른쪽 마진 40px*/        
    }

....

<img src="img/cat.png">
<p>Ex et adipisicing ... </p>

 

  • float속성을 해제하는 clear 속성 (left, right, both)
<style>
	#box1 {
    	background: #ffd800;
        float: left;
    }
    #box2 {
    	background: #ffd800;
        float: right;
    }
    #box3 {
    	background: #ffd800;
    }
    
    #box4 {
    	background: #ffd800;
        clear: left;	/*floating 해제*/
    }
    
    ...
    
<div id="box1">박스1</div>

 

 

 


4. 웹 요소의 위치 지정하기

  • 웹요소 위치를 정하는 left, right, top, bottom 속성
  • 배치 방법을 지정하는 position 속성 (static, relative, absolute, fixed)

static: 문서의 흐름에 맞춰배치(기본값)&nbsp; /&nbsp; relative: 위치값 지정가능한 static. /. absolute: relative값을 사용한 상위요소를 기준으로 위치를 지정해 배치&nbsp; /&nbsp; fixed: 브라우저창 기준 위치를 지정해 배치

 

	#pos_left_top {
	position: absolute;
    left: 50px;
    top: 50px;
	}
...
<p id="pos_left_top">Ex et adipisicing ... </p>

텍스트 표현 스타일

 

 

 


1. 글꼴 관련 스타일

  • 글꼴을 지정하는 font-family
font-family:<글꼴 이름> | [<글꼴 이름>, <글꼴 이름>]

ex)
body{font-family: "맑은 고딕", 돋움, 굴림}

 

  • 글자 크기를 지정하는 font-size
font-size: <절대 크기> | <상대 크기> | <크기> | <백분율>

절대크기: 브라우저 지정 글자크기
상대크기: 부모요소 글자크기 기준 상대 글자크기 지정
크기: 브라우저 상관없이 글자크기 직접지정
백분율: 부모요소 글자크기 기준 백분율로 지정

 

  • italic체로 표시하는 font-style
font-style: normal | italic | oblique

normal: 기본값
italic: 이탤릭체
oblique: 이탤릭체

 

  • 글자 굵기를 지정하는 font-weight
font-weight: normal | bold | lighter | 100 | ... | 900

normal: 기본값
bold: 굵게
bolder: 더 굵게
lighter: 더 가늘게
100~900: 높은 값일 수록 굵음

 

Ex)
<style>
	body {
    	font-size: 20px;	/*전체 글자 크기*/	
    }
    h1 {
    	font-family: 바탕;	/*글꼴*/
        font-size: 3em;		/*글자 크기*/
    }
    .accent {
    	font-size: 150%;	/*글자 크기*/
        font-weight: 800;	/*글자 굵기*/
    }
    .italic {
    	font-style: italic;	/*글자 스타일*/
    }
    </style> 
...

<h1>레드향</h1>
<p>껍질에 붉은 빛이 돌아 <span class="accent">레드향</span>이라 불린다.</p>
<p>레드향은 한라봉과 귤을 교배한 것으로</p>
<p class="italic">일반 귤보다 2~3배 크고, 과육이 붉고 통통하다.</p>

 

 


2. 웹 폰트 사용하기

🤔 Web font 사용이유?
- font-family 속성으로 글꼴을 지정할 때, 시스템에 없는 글꼴을 사용가능하다.

🤔 웹 폰트 정의 방법
@font-face {
	font-family: <글꼴 이름>;
    src: <글꼴 파일>[<글꼴 파일>, <글꼴 파일>, ...];
}



🤔 구글폰트 사용하기
Step 1. 구글 폰트 사이트(https://fonts.google.com/)
 

Browse Fonts - Google Fonts

Making the web more beautiful, fast, and open through great typography

fonts.google.com




Step 2. 글꼴 목록 충 마음에 드는 글자 찾아 클릭후 Select 클릭


Step 3. 차례로 아래의 코드를 복사, html 파일에 붙여넣기


Step 4.
<style>
  @import url('https://fonts.googleapis.com/css2?family=Nanum+Pen+Script&display=swap');
  	
    h1 {
    	font-size: 60px;
        font-weight: bold;
        font-family: 'Nanum Pen Script', cursive;
    }
  
</style>



 

 

 


3. 텍스트 관련 스타일

  • 글자색을 지정하는 color 속성
color: <색상>

ex)
<style> {
	h1 {
    	color: #0000ff;
    }
    p {
    	color: green;
    }
    .accent {
    color: hsl(0, 100%, 50%);
    font-weight: bold;
    }
    </style>
...

 

  • 텍스트를 정렬하는 text-align 속성
text-align: start | end | left | right | center | justify | match-parent

ex)
...
.center {
	text-align: center;
}
.justify{
	text-align: justify /*양쪽 정렬*/
}

 

  • 글자 간격을 조절하는 letter-spacing, word-spacing 속성
	.spacing1{
    	letter-spacing: 0.2em	/*글자간격 0.2em*/
    }
    .spacing2{
    	letter-spacing: 0.5em 	/*글자간격 0.5em*/
    }
</style>

...

<p>CSS</p>
<p class="spacing1">CSS</p>

 

  • 줄 간격을 조절하는 line-height 속성
...
	.small-line {line-height: 0.7;}	/*글자크기 0.7배 줄간격*/
	.big-line {line-height: 2.5;} /*글자크기 2.5배 줄간격*/
</style>

...

<p class="small-line'>껍질에 붉은 빛이 돌아 오동통통</p>

 

  • 텍스트의 줄을 표시 or 없애주는 text-decoration 속성
<body>
	<h1>text-decoration 속성</h1>
    <p style="text-decoration:none">none</p>
    <p style="text-decoration:underline">underline</p>
    <p style="text-decoration:overline">overline</p>

 

  • 텍스트에 그림자 효과를 주는 text-shadow 속성
	.shadow1{
    	color: red;
        text-shadow: 1px 1px black;	/*가로, 세로, 색상*/
    }
    .shadow2{
    	color: #fff;
        text-shadow: 7px -7px 20px #000;	/*가로, 세로, 번짐정도, 색상*/
    }
</style>

<h1 class="shadow1">HTML</h1>
<h1 class="shadow2">CSS</h1>

 

  • 텍스트 대소문자를 변환하는 text-transform 속성
	.trans1{text-transform: capitalize;}	/*첫번째 글자를 대문자로*/
    .trans2{text-transform: uppercase;}		/*전체글자를 대문자로*/
</style>

<p class="trans1">html</p>
<p class="trans2">css</p>

 

 


4. 목록 및 표 스타일

📌 목록

  • 불릿 모양과 번호 스타일을 지정하는 list-style-type 속성

	.book1 {
    	list-style-type: none;
    }
    .book2 {
    	list-style-type: uppercase;
    }
</style>

 

  • 불릿 대신 이미지를 사용하는 list-style-image 속성
	ul {
    	list-style-image: url('img/dot.png');
    }
</style>

ex)
<ul>
	<li>Just Do it!</li>
    ...
</ul>

 

  • 목록을 들여쓰는 list-style-position 속성
list-style-position: inside | outside;

ex)
	.inside {list-style-position: inside;}
<style>

<ul class="inside">
	<li>Do it!</li>

 

 

 

 

 

📌 표

  • 표 제목 위치를 정해주는 caption-side 속성
  • 표에 테두리를 그려 주는 border 속성
  • 셀 사이 여백을 지정하는 border-spacing 속성
  • 표와 셀 테두리를 합치는 border-collapse 속성

기본 CSS

📌 HTML: 웹 문서의 내용을 맡고!
📌 CSS: 웹 문서의 디자인을 담당!

 


1. 웹 문서에 디자인 입히기

🤔 Style이란?
- HTML문서에서 자주 사용하는 "글꼴, 색상, 정렬, 배치방법 등"
- 위와 같이 "문서의 겉모습, 즉 디자인을 결정짓는 것"

- 내용과 디자인을 HTML과 CSS로 나누기에 수정 시 전혀 영향을 미치지 않는다.
- 내용은 그대로이지만 디자인만 바꿔 완전히 다른 느낌의 문서로 만들 수도 있다.

 

 

 

 


2. Style. &. Style Sheet

🤔 Style 형식
선택자 { 속성1:속성값;  속성2:속성값2 }

- 맨 앞의 선택자: 스타일을 어떤 태그에 적용할 것인지 알려주는 것.
- { }안에 스타일 정보를 넣는다. (이때, ;으로 구분, 여러 스타일 규칙을 지정가능)

Ex. 글자를 가운데로 정렬 및 파란색 글자로 지정하고 싶을 때,
<p> 태그에 스타일 적용하기

p {
	text-align; center;	/*텍스트 정렬; 중앙;*/
    color: blue;		/*글자색; 파랑;*/
}




🤔 Style Sheet
스타일 규칙을 한눈에 확인 및 필요 시 수정하기 쉽게 한군데 묶어 놓은것.
크게 스타일 시트는 2가지로 나눌 수 있다.
 - 브라우저 기본 스타일: 웹브라우저에 기본으로 만들어져 있음
 - 사용자 스타일: 사이트 제작자가 만듬
     i) 인라인 스타일
    ii) 내부 스타일 시트
    iii) 외부 스타일 시트
 


Ex) 인라인 스타일
<h1>레드향<h1>
<p style="color: blue;">껍질에 붉은 빛이 돌아 레드향이라 불린다.</p>
<p>레드향은 한라봉과 귤을 교배한 것으로 일반 귤보다 2~3배 크고 과육이 붉고 통통하다.</p>
<p>비타민 C와 비타민 P가 풍부해 혈액순환, 감기예방 등에 좋은 것으로 알려져 있다.</p>​



Ex) 내부 스타일 시트
<!DOCTYPE html>
<html lang="ko">
<head>
	<meta charset="UTF-8">
    <title>상품 소개 페이지</title>
    
    <style>
    	h1{
        	padding: 10px;
            background-color: #222;
            color: #fff;
        }
    </style>
    
</head>
<body>
<h1>레드향</h1>
<p style="color: blue;">껍질에 붉은 빛이 돌아 레드향이라 불린다.</p>
<p>레드향은 한라봉과 귤을 교배한 것으로 일반 귤보다 2~3배 크고 과육이 붉고 통통하다.</p>
<p>비타민 C와 비타민 P가 풍부해 혈액순환, 감기예방 등에 좋은 것으로 알려져 있다.</p>
</body>
</html>​



Ex) 외부 스타일 시트
<!DOCTYPE html>
<html lang="ko">
<head>
	...	
    /*외부 스타일 시트 연결*/
    <link rel="stylesheet" href="css/style.css">
	...
</head>​

 

 

 


3. CSS 기본 선택자

  • 전체 선택자
  • 타입 선택자
  • 클래스 선택자
  • id 선택자
  • 그룹 선택자
📌 전체 요소에 스타일을 적용하는 전체 선택자
<style>
	* {속성: 값; ...}​

 

- 웹 브라우저의 기본 스타일을 초기화 하는 등의 방식에서 자주 사용.
- 문서내용과 브라우저 테두리 사이 여백여부에 따라 margin과 padding을 사용.
여백 없애는 방법: margin이나 padding을 0으로 함.
<style>
	*{
    	margin: 0;
    }
</style>​



📌 특정 요소에 스타일을 적용하는 타입 선택자
<head>
	<style>
    p {
        font-style: italic;
    }

    ...
    
<body>
	...
    	/*아래 모든 p요소에 스타일이 적용됨*/
		<p>...</p> 
        <p>...</p> 
        <p>...</p>​



📌 특정 부분에 스타일을 적용하는 클래스 선택자
...
<h1 class="A">레드향</h1>
<p>껍질에 붉은 빛이 돌아<span class="A">레드향</span>이라 불린다.<p>
<p>...</p> 
<p>...</p>​
- 같은 태그더라도 특정 부분만 선택해 스타일을 적용하려 할 때


📌 특정 부분에 스타일을 한번만 적용할 수 있는 id 선택자
<style>
	#아이디명 {  스타일 규칙  }​


Ex)
<style>
	#container {
    	width: 500px
        margin: 10px auto;
        padding:10px;
        border: 1px solid #000
    }
<style>

<div id="container">



📌 같은 스타일 규칙을 사용하는 요소들을 묶어주는 그룹 선택자
선택자1, 선택자2 { 스타일 규칙 }​


Ex)
h1, p{
	text-align: center;  /* 두 태그(h1, p)중앙 정렬 */
}​

 

 


4. Cascading Style Sheet

  • cascading이란?
    • 스타일 시트에서는 우선순위가 위에서 아래 (=계단식) 방법으로 적용된다는 의미
    • 즉, 웹 요소에 둘 이상 스타일 적용 시, 우선순위에 따라 적용된다.

 

[스타일이 충돌하지 않게 하는 방법]

  1. Style 우선순위
    • 얼마나 중요한가? : 사용자 스타일 > 제작자 스타일 > 브라우저 기본 스타일
    • 적용범위는 어디까지인가? : !important > 인라인 스타일 > id 스타일 > 클래스 스타일 > 타입 스타일
    • 소스코드의 작성 순서는 어떠한가? : 나중에 작성된 것이 앞서 작성한 스타일을 덮어 씀
  2. Style 상속
    • 부모 요소: 포함하는 태그
    • 자식 요소: 포함되는 태그
      • ex) <body>의 모든 요소는 부모 요소

 

 

 

 

웹 문서 작성 형식

 

 

 


1. 폼 삽입하기

사용자의 의견·정보 등을 얻기 위해 폼을 사용한다.

ex) 검색사이트, 쇼핑몰 주문서 정보입력란 등

 

🤔 폼(form)의 작동방식은?
폼과 관련한 작업은 정보를 저장, 검색, 수정하는 것이 대부분으로
모두 "데이터베이스"를 기반으로 동작한다.

- 따라서 폼 형태는 HTML 태그로 만들지만
- 폼에 입력한 정보는 ASP, PHP, JSP같은 서버 프로그래밍을 이용해 처리한다.

 

  • 폼을 만드는 <form>태그

📌 기본형
<form [속성="속성값"]>여러 폼 요소</form>


ex) 입력한 폼을 서버로 보내기
<form action="register.php">
	...생략...
</form>


📌 자동완성기능의 autocomplete
<form action=""autocomplete="off">
	...생략...
</form>​

 

    • 폼 요소를 그룹으로 묶는 <fieldset>, <legend>태그
📌 기본형
<fieldset [속성="속성값"]> </fieldset>

<fieldset>
	<legend>그룹이름</legend>
</fieldset>


📌 응용

<form action="">
	<fieldset>
    	<legend>상품 선택</legend>
    </fieldset>
    <fieldset>
        <legend>배송 정보</legend>
    </fieldset>
</form>

 

  • 폼 요소에 라벨을 붙이는 <label>태그
📌 기본형
<label>라벨명<input></label>


📌 응용

[방법 1]
<label>아이디(6자 이상)<input type="text"></label>

[방법 2]
<label for="user_id">아이디(6자 이상)</label>
<input type="text" id="user_id">

 

 

 

 


2. <input>태그  for 사용자 입력

 

  • 자주 사용되는 type속성
    • 텍스트와 비밀번호를 나타내는 "text", "password"
    • 다양한 용도에 맞게 입력하는 "search", "url", "email", "tel"
    • 체크박스와 라디오 버튼을 나타내는 "checkbox", "radio"
    • 숫자입력필드를 나타내는 "number", "range"
    • 날짜 입력을 나타내는 "date", "month", "week"
    • 시간 입력을 나타내는 "time", "datetime", "datetime-local"
    • 전송, 리셋버튼을 나타내는 "submit", "reset"
    • 이미지 버튼을 나타내는 "image"
    • 기본 버튼을 나타내는 "button"
    • 파일 첨부 시 사용하는 "file"
    • 히든 필드를 만들 때 사용하는 "hidden"
📌 텍스트와 비밀번호를 나타내는 "text", "password"
<form>
	<fieldset>
    	<label>아이디: <input type="text" id="user_id" size="10"></label>
        <label>비밀번호: <input type="password" id="user_pw" size="10"></label>
        <input type="submit" value="로그인">
    </fieldset>
</form>​


📌 다양한 용도에 맞게 입력하는 "search", "url", "email", "tel"
<ul>
	<li>
    	<label for "user_name">이름</label>
        <input type="text" id="user_name">
    </li>
    <li>
    	<label for "addr">배송주소</label>
        <input type="text" id="addr">
    </li>
    <li>
    	<label for "mail">e-mail</label>
        <input type="email" id="mail">
    </li>
    <li>
    	<label for "phone">연락처</label>
        <input type="tel" id="phone">
    </li>
</ul>​


📌 체크박스와 라디오 버튼을 나타내는 "checkbox", "radio"
<fieldset>
	<legend>상품 선택</legend>
    <p><b>주문할 상품을 선택해 주세요.</b></p>
    <label><input type="checkbox" value="s_3">선물용 3kg</label>
    <label><input type="checkbox" value="s_5">선물용 5kg</label>
    <label><input type="checkbox" value="f_3">가정용 3kg</label>
    <label><input type="checkbox" value="f_3">가정용 5kg</label>
    <p><b>포장 선택</b></p>
    <label><input type="radio" name="gift" value="yes">선물 포장</label>
    <label><input type="radio" name="gift" value="no">선물 포장 안 함</label>
</fieldset>



📌 숫자입력필드를 나타내는 "number", "range"
<ul>
	<li>
    	<label><input type="checkbox" value="s_3">선물용 3kg</label>
        <input type="number" min="0" max="5">개 (최대 5개)
    </li>
    <li>
    	<label><input type="checkbox" value="s_5">선물용 5kg</label>
        <input type="number" min="0" max="3">개 (최대 3개)
    </li>
</ul>​

 

<ul>
	<li>
    	<label><input type="checkbox" value="f_3">가정용 3kg</label>
        <input type="range" min="0" max="5">개 (최대 5개)
    </li>
    <li>
    	<label><input type="checkbox" value="f_5">가정용 5kg</label>
        <input type="range" min="0" max="3">개 (최대 3개)
    </li>
</ul>​



📌 날짜 입력을 나타내는 "date", "month", "week"
📌 시간 입력을 나타내는 "time", "datetime", "datetime-local"
<h1>날짜 지정하기</h1>
<input type="date">
<input type="month">
<input type="week">

<h1>시간 지정하기</h1>
<input type="time">
<input type="datetime-local">

<input type="date" min="2021-02-05" max="2021-02-09">




📌 전송, 리셋버튼을 나타내는 "submit", "reset"
<ul>
	<li>
    	<label for "user_name">이름</label>
        <input type="text" id="user_name">
    </li>
    <li>
    	<label for "addr">배송주소</label>
        <input type="text" id="addr">
    </li>
    <li>
    	<label for "mail">e-mail</label>
        <input type="email" id="mail">
    </li>
    <li>
    	<label for "phone">연락처</label>
        <input type="tel" id="phone">
    </li>
</ul>

<div>
	<input type="submit" value="주문하기">
    <input type="reset" value="취소하기">
</div>​



📌 이미지 버튼을 나타내는 "image"
<fieldset>
    <label>아이디: <input type="text" id="user_id" size="10"></label>
    <label>비밀번호: <input type="password" id="user_pw" size="10"></label>
    <input type="image" src="img/login.png" alt="로그인">
</fieldset>​



📌 기본 버튼을 나타내는 "button"
- 버튼을 삽입해 자바스크립트 실행하기
<form>
	<input type="button" value="공지 창 열기" onclick="window.open('notice.html')">
</form>​




📌 파일 첨부 시 사용하는 "file"
<fileset>
	<input type="file">
</fileset>​



📌 히든 필드를 만들 때 사용하는 "hidden"
<input type="hidden" name="이름" value="서버로 넘길 값">​

 

 

 

<input>태그에서 사용할 수 있는 다양한 type속성

 

 

 

 


3. <input>태그 주요속성

  • 자동으로 커서를 갖다놓는 autofocus 속성
  • 힌트를 표시해주는 placeholder 속성
  • 읽기 전용 필드를 만들어주는 readonly 속성
  • 필수 입력 필드를 지정하는 required 속성
📌 자동으로 커서를 갖다놓는 autofocus
- 웹 문서를 불러오자 마자 원하는 요소에 마우스 포인터를 표시할 수 있다.
📌 속성힌트를 표시해주는 placeholder 속성
<label for="user_name">이름</label>
<input type="text" id="user_name" autofocus placeholer="홍길동">



📌 읽기 전용 필드를 만들어주는 readonly 속성
- 사용자가 입력하지 못하고 읽게만 하는 필드

📌 필수 입력 필드를 지정하는 required 속성
<form>
	<fieldset>
    	<legend>배송 정보</legend>
        <ul id="shipping">
        	<li>
            	<label for="prod">주문 상품</label>
                <input type="text" id="prod" value="상품용 3kg" readonly>
            </li>
            <li>
            	<label for="user_name">이름</label>
                <input type="text" id="user_name" autofocus required>
            </li>
            <li>
            	<label for="addr">배송 주소</label>
                <input type="text" id="addr" required>
            </li>
            <li>
            	<label for="mail">e-mail</label>
                <input type="email" id="mail">
            </li>
            <li>
            	<label for="phone">연락처</label>
                <input type="tel" id="phone" placeholder="(-)제외 입력" required>
            </li>
            <li>
            	<label for="d-day">배송 지정</label>
                <input type="date" id="d-day"><small>(주문일로부터 최소 3일 후)</small>
            </li>
        </ul>
    <fieldset>
    <div>
    	<input type="submit" value="주문하기">
        <input type="reset" value="취소하기">
    </div>
</form>

 

 


4. 폼에서 사용하는 여러가지 태그

  • 여러 줄을 입력하는 텍스트 영역 <textarea>태그
  • 드롭다운 목록을 만들어주는 <select><option>태그
  • 데이터 목록을 만들어주는 <datalist><option>태그
  • 버튼을 만들어주는 <button>태그

 

<ul>   
    <li>
    	<label for "prod1">상품 선택</label>
        <selelct id="prod1">
        	<option value="special_3" selected>선물용 3kg</option>
            <option value="special_5">선물용 5kg</option>
            <option value="family_3">가정용 3kg</option>
            <option value="family_5">가정용 5kg</option>
        </select>
    </li>
    
    
    
    <li>
    	<label for "prod2">포장 여부</label>
        <input type="text" id="prod2" list="pack">
        <datalist id="pack">
        	<option value="package">포장 함</option>
            <option value="package">포장 안함</option>
        </datalist>
    </li>
    
    
    
    <li>
    	<label for "memo">메모</label>
        <textarea id="memo" cols="10" rows="4"></textarea>
    </li>
    
    
    <li>
    	<button type="submit">주문하기</button>
        <button type="reset">취소하기</button>
    </li>

</ul>

 

 

 

 

 

웹 문서 작성 형식

 

 


1. 텍스트 입력하기

  • 제목을 나타내는 <hn>태그
  • 텍스트 단락을 만드는 <p>태그
  • 줄을 바꾸는 <br>태그
  • 인용을 위한 <blockquote>태그
  • 텍스트 bold를 위한 <strong>태그
  • 텍스트 기울임을 위한 <i>태그
  • 위첨자, 아래첨자의 <sup>, <sub>태그
  • 텍스트 밑줄을 위한 <u>태그

 

Ex)

<!DOCTYPE html>
<html lang="ko">
	<head>
    	<meta charset="UTF-8">
        <title>탐라국 입춘굿</title>
        <link rel="stylesheet" href="css/poster.css">
    </head>
    <body>
    	<div id="container">
        
        
        ...생략...
        <h1>탐라국 입춘굿</h1>
        <p>탐라국 입춘굿은 입춘을 맞아 풍년을 기원하는 행사로, 제주도의 문화 축제 중에서 유일하게 탐라 시대부터 이어져 왔다.</p>
        <p>자세한 정보 보기</p>
        
        <h2>일정</h2>
        <h2>먹거리</h2>
        ...생략...
        
        
        </div>
    </body>
</html>

 

 


2. 목록 만들기

  • 순서있는 목록을 생성하는 <ol><li>태그  -- type과 start를 이용해 여러 기호의 순서로도 표현가능
  • 순서없는 목록을 생성하는 <ul><li>태그

<h2>일정</h2>
<ol>
	<li>입춘맞이 : 1/27(월) ~ 1/31(금)</li>
    <li>낭쉐코사 : 2/1(토)</li>
</ol>
<ul>
    <li>거리굿 : 2/2(일)</li>
    <li>열림굿 : 2/3(월)</li>
    <li>입춘굿 : 2/4(화)</li>
    
    <ol type="a" start="1">
    	<li>행사당일 주차 금지</li>
    </ol>
    <ol type="a" start="2">
    	<li>행사당일 한파 주의</li>
    	<ol type="i" start="1">
        	<li>역대 최고한파 예고</li>
        </ol>
        <ol type="i" start="2">
        	<li>따뜻한 옷차림 권장</li>
        </ol>
    </ol>
</ul>

 

 


3. 표 만들기

  • 표를 생성하는 <table><caption>태그
  • 행을 생성하는 <tr>태그
  • 제목셀을 생성하는 <th>태그, 셀을 생성하는 <td>태그
  • 표의 구조(제목, 본문, 요약)를 지정하는 <thead>, <tbody>, <tfoot>태그
  • 행을 합치는 <td rowspan="합칠 셀의 개수">셀의 내용</td>
  • 열을 합치는 <td colspan="합칠 셀의 개수">셀의 내용</td>
  • 열을 묶어주는 <colgroup><col>태그

<h2>상품구성</h2>
<table>
	<caption>선물용과 가정용 상품구성</caption>
    
    <colgroup>
    	<col style="background-color:#eee;">
        <col>
        <col span="2" style="width:150px;"> 
    </colgroup>
    
    <thread>
    	<tr>
        	<th>용도</th>
            <th>중량</th>
            <th>개수</th>
            <th>가격</th>
        </tr>
    </thread>
    <tbody>
    	<tr>
        	<td rowspan="2">선물용</td>
			<td>3kg</td>
            <td>11~16과</td>
            <td>35,000원</td>
        </tr>
        <tr>
        	<td>5kg</td>
            <td>18~26과</td>
            <td>52,000원</td>
        </tr>
        
        <tr>
        	<td rowspan="2">가정용</td>
			<td>3kg</td>
            <td>11~16과</td>
            <td>30,000원</td>
        </tr>
        <tr>
        	<td>5kg</td>
            <td>18~26과</td>
            <td>47,000원</td>
        </tr>
    </tbody>

 

 


4. 이미지 삽입하기

  • 이미지를 삽입하는 <img src="경로" alt="대체텍스트">태그
  • 이미지 크기 조절하는 방법 width, height
<img src="image/tangerines.jpg" alt="천혜향" width=224>
<img src="image/tangerines.jpg" alt="천혜향" width=50%>

 

 


5. 오디오 & 비디오 삽입하기

  • 멀티미디어 삽입을 위한 <object>, <embed>태그
<object width="900" height="800" data="arxiv.pdf"></object>
<embed src="TEPS/2023/07/01.mp3">

 

  • 오디오, 비디오를 삽입하는 <audio>, <video>태그
<audio src="TEPS/2023/07/01.mp3" controls></audio>
<video src="TEPS.mp4" controls width="512"></video>

 

 


6. 하이퍼링크 삽입하기

  • 링크를 삽입하는 <a>태그와 href 속성
  1. <a> </a> 사이에 링크로 만들 텍스트를 입력
  2. href 속성에 text를 클릭하면 연결할 문서의 경로, 파일명을 넣는다.

 

 

📌 텍스트 링크 만들기

<div>
	<p><a href="../TEPS/07/01.html">TEPS 답안지</a></p>
</div>

 

 

📌 이미지 링크 만들기

<a href="../TEPS/07/01.html"><img src="images/TEPS.jpg" alt="TEPS 마크"></a>

 

 

📌 링크를 새 탭에서 열어주는 target="_blank" 

<div>
	<p><a href="../TEPS/07/01.html" target="_blank">TEPS 답안지</a></p>
</div>

 

다양한 인터넷 정보를 웹 브라우저에 보여줄 때 사용하는 언어가 HTML로 간단히 말해, "웹 문서를 만드는 언어"라 할 수 있다.

HTML : Hyper Text Markup Language

hyper text: 문서를 서로 연결해주는 링크를 의미

markup: 웹 브라우저에 내용을 보여주는 이미지 등의 위치표시를 의미

즉, HTML의 기본기능은 웹브라우저에 보여줄 내용에 markup을 한 후 문서끼리 링크하는 것을 의미

 

HTML 태그는 이름만 봐도 의미를 알 수 있어서 "Semantic Tag"라고도 불린다.

 

 

 

HTML 태그의 구조

 

<!DOCTYPE html>
<html lang="ko">
	<head>
    	<meta charset="UTF-8">
        <title>HTML 기본문서</title>
    </head>
    <body>
    	<h1>frontend web개발</h1>
        <hr>
        <p>HTML</p>
        <p>CSS</p>
        <p>JS</p>
    </body>
</html>

 

 

웹 문서의 유형을 정하는 선언문, <!DOCTYPE html>태그

- 웹문서의 첫 부분은 문서유형(document type)을 지정한다.
- 위와 같이 선언하여 현재 문서가 HTML5문서임을 명시

 

웹 문서의 시작을 알리는  <html>태그

- <!DOCTYPE html> 선언 후 HTML파일의 시작과 끝을 표시
- <html>과 </html>사이 웹문서 소스를 작성

cf. <html lang="ko">의 의미?

 - lang 속성은 문서에서 사용할 언어를 지정할 수 있다.

 - 이는 '한국어로 된 문서'로 범위를 제한시, <html lang="ko">를 우선검색하게 해준다.

 

웹 브라우저에 문서 정보를 알려주는  <head>태그

- 웹 브라우저가 알아야 할 정보를 입력
- 문서에서 사용할 스타일 sheet file도 이곳에 연결해준다.
📌 <meta>
- data에 관한 데이터를 의미, 웹문서와 관련된 정보를 지정할 때 사용
- 가장 중요한 역할: 화면에 표시될 글자에 대해 어떤 인코딩 사용할 지 지정
ex) 웹서버는 영어가 default라 한국어 사용 시, UTF-8을 적어줘야한다.
<meta charset="UTF-8">

또한, 추가적으로 <meta>태그를 이용해 추가적인 정보를 지정할 수 있다.

<meta name="" content="">

ex)

// 웹 문서의 키워드 지정
<meta name="keywords" content="html의 구조">

// 웹 문서의 설명 지정
<meta name="description" content="html의 구조를 알아보자.">

// 웹 문서의 소유자나 제작자 지정
<meta name="author" content="Hyeongchan Im">
📌 <title>
- 웹 문서의 제목을 나타내는 태그

 

 

웹 브라우저에  내용을 표시하는 <body>태그

- 앞선 내용들(!DOCTYPE, html, head)은 문서유형 및 정보를 정의하고 입력한 것.
- <body>태그는 실제 웹 브라우저에 표시할 내용을 입력한다.
- 앞으로 후술할 HTML태그는 대부분 <body> 안에서 사용된다.
<!DOCTYPE html>
<html lang="ko">
	<head>
    	<meta charset="UTF-8">
        <title>HTML 기본문서</title>
    </head>
    <body>
    	<h1>frontend web개발</h1>
        <hr>
        <p>HTML</p>
        <p>CSS</p>
        <p>JS</p>
    </body>
</html>


<p>: 텍스트 단락(paragraph)
<a>: anchor

 

 

 

웹 문서 구조를 만드는 Semantic 태그

...생략...

<div id="container">
	<header>
    	<div id="logo">
        	<a href="#"><h1>Dream Jeju</h1></a>
        </div>
        <nav>
        	<ul id="topMenu">
            	<li><a href="#">단체여행</a></li>
                <li><a href="#">맞춤 여행</a></li>
                <li><a href="#">갤러리</a></li>
                <li><a href="#">문의하기</a></li>
            </ul>
        </nav>
    </header>
    
    <main class="contents">
    	<section id="healing">
        	<h2>몸과 마음이 치유되는 섬</h2>
            ...
        </section>
        <section id="activity">
        	<h2>다양한 액티비티가 기다리는 섬</h2>
            ...
        </section>
    </main>
    
    <footer>
    	<section id="bottomMenu">
            <ul>
            	<li><a href="#">회사 소개</a></li>
                <li><a href="#">개인정보처리방침</a></li>
                <li><a href="#">여행약관</a></li>
                <li><a href="#">사이트맵</a></li>
            </ul>
        </section>
    </footer>
    
</div>

...생략...

 

header 영역을 나타내는 <header>태그

- 헤더영역을 의미하며 검색창이나 사이트 메뉴를 보통 삽입한다.

 

내비게이션 영역을 나타내는 <nav>태그

- 웹 문서안에서 다른 위치로 연결, 다른 웹문서로 연결하는 링크를 생성한다.
- 여러 nav 사용시, id속성 지정으로 다른 스타일을 적용할 수 있다.

 

핵심 컨텐츠를 담는 <main>태그

- 웹문서에서 핵심이 되는 내용을 넣는다.
- 보통 웹문서마다 다르게 보여줘야하는 내용들로 구성된다.
- <main>태그는 웹문서에서 단 한번만! 사용가능하다.
ex) 메뉴, 사이드바, 로고 등

 

독립적인 컨텐츠를 담는 <article>태그

- 웹에서 실제로 보여주고 싶은 내용을 넣는다.
ex) 블로그의 포스트, 기사 등 독립된 웹 컨텐츠 항목

 

컨텐츠 영역을 나타내는 <section>태그

- 웹 문서에서 컨텐츠 영역을 나타내서 article과 비슷해 보인다.
- section: 몇개의 컨텐츠를 묶는 용도로 사용
article: 블로그의 포스트처럼 "독립된 컨텐츠"로 사용

[웹 문서 뼈대를 만드는 HTML]

- 웹 브라우저 창에 웹 문서의 내용을 보여주는데 필요한 약속

- 제목, 본문 등의 웹 요소를 알려주는 역할

- HyperText Markup Language

 

 

 

[웹 문서를 꾸미는 CSS]

- HTML로 만든 내용을 사용자가 알아보기 쉽게 꾸미거나 배치

- CSS를 이용해 웹요소를 적절하게 배치, 강조 가능

- Cascading Style Sheet

 

 

[사용자 동작에 반응하는 JS]

- 사용자의 동작(스크롤, 클릭)에 반응(동적인 효과)

- React같은 JS Framework를 위해 사용.

- JavaScript

 

 

 

 

 

[Frontend 개발을 위한 tech]

Javascript의 framework

 

[Backend 개발을 위한 tech]

 

 

 

 

 

 

 

 

 

 

 

 

먼저 위의 사진에 있는 표식이 디버깅을 할 수 있도록 해주는 버튼

인데 이를 누르면 실행과정을 통해 잘 되고 있는지와 만약 오류가 발생한다면 어느부분에서 오류가 발생하여 작동을 하지 않는 지에 대해서도 잘 알 수 있다.

특히 위의 사진자료처럼 줄을 클릭한 이후 초록색 점을 찍어서 확인할 수 있다.

이를 break point라고 하는데 실행중 break point를 만나면 그 과정에서 있는일을 

위의 사진과 같이 변수가 잘 되는 지 등 확인할 수 있는 창이 있는데 이를 통해 나의 실행결과를 어떻게 고쳐나가야 할 지 알 수 있을 수 있다.

+ Recent posts