본문 바로가기
HTML CSS

HTML5

by 개발자공부 2024. 4. 13.

목차

W3C HTML 설명란

HTML 정의

HTML 태그

시멘틱 마크업


 

W3C HTML 설명란

https://www.w3schools.com/html/

공식 사이트에서 제공하는 공식 문서를 확인하는 습관을 들이면 좋다.

어떤 코딩 언어든 그 언어가 왜 만들어졌는지 공부한다면 기본기를 다지기에 용이하고, 오류를 범할 가능성을 낮출 수 있다.


HTML 정의

‘Hyper Text Markup Language’ 를 줄여서 HTML 이라고 부른다. 웹 페이지를 만들 때 사용하는 기본언어이다. 집에 비유하자면 뼈대 혹은 구조에 해당한다. 시작하는 꺽새괄호 <> 와 끝나는 꺽새괄호 </> 를 태그라고 부른다. 이러한 태그를 이용하여 웹 페이지에 문자, 이미지, 링크 등을 출력할 수 있다.


HTML 태그

주석문

<!-- -->

<!-- 주석문 단축키 : 'ctrl  + /' 웹 브라우저에 출력되지 않는 부분이다.-->

 

block 요소

요소 자체가 한 줄 전체를 차지.

inline 요소

할당된 공간만 차지

 

■ 상대경로

로컬 파일 내에 있는 이미지

■ 절대경로

웹에 업로드 된 이미지


html선언

문서 타입을 먼저 선언해줘야 한다. 

<!--!DOCTYPE html : html 버전 선언.-->
<!-- 해당 페이지가 어떤 HTML 버전으로 작성됐는지 나타냅니다 -->
<!DOCTYPE html>

<!--lang="" : 문서 내 기본 언어 명시.-->
<html lang="en">

 


<head> ~ </head>

html 페이지 정보가 들어간다.

<!-- <head>~</head> : html 페이지 정보 -->
<head> </head>

 

☞ UTF-8

    <!-- UTF-8 : 문자 코드 -->
    <meta charset="UTF-8">

 

☞ viewport

    <!-- content="width=device-width : 반응형이면 그대로, 적응형이면 px값을 써준다. -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

 

☞ title

    <!-- <title>~</title> : 페이지 제목.-->
    <title>html 기초</title>

 

☞ favicon

    <!-- favicon(페이지 제목 옆에 이미지)-->
    <link rel="icon" type="image/png" sizes="32x32" href="images/header&footer/favicon.png">

 

☞ CSS 

    <!-- CSS -->
    <!-- <style>~</style> : 내부 스타일 (@import도 가능)-->
    <!-- <link rel="stylesheet" href="링크 경로"> 외부 스타일 -->

 

☞ font

    <!-- font -->
    <!-- Embed code in the <head> of your html -->
    <!-- 글꼴 불러오는 방법 1 : link 삽입-->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" rel="stylesheet">

 

☞ JS, jQuery

    <!-- Javascript,jQuery 소스 : jQuery버전과 aos.js-->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>

 

<body> ~ </body>

페이지 내용이 들어간다.

<body> </body>

html태그는 보통 종료태그가 있으나 몇몇개는 종료태그가 없다.

태그 설명
<hn> ~ </hn> 제목 태그 (block요소), n = 1 ~ 6
<p> ~ </p> 단락(Paragraph) 태그 (block 요소) 
<br> 줄 바꿈 태그 (종료태그가 없다)
<strong> ~ </strong> 진하게 강조 (inline 요소)
<b> ~ </b> 진하게 강조 (inline요소)
<em> ~ </em> 기울기 (inline요소) 
<i> ~ </i> 이탤릭체 (inline요소)
<small> ~ </small> 글자 작게 (inline요소)
<mark> ~ </mark> 형광펜 (inline요소)
<hr>  수평선 태그
<abbr title=""></abbr> 마우스 over시 title 설명이 노출된다.
<blockquote> ~ </blockquote> 들여쓰는 인용문
<q> ~ </q> 따옴표 있는 인용문
<cite> ~ </cite> 인용된 작품의 제목 또는 출처를 나타낼 때 쓴다.
<code> ~ </code> 짧은 코드를 나타낼 때 사용
<kbd></kbd>  
<pre> ~ </pre> 코드 형태로 출력
<ruby> <rt></rt> </ruby> rt태그로 위에 글 표시
<sub> ~ </sub> 아랫첨자
<sup> ~ </sup> 윗첨자
<s> ~ </s> 삭제줄
<u> ~ </u> 밑줄
<ul>
<li></li>
<ul>
비순서형 목록태그, 불릿이 기본 설정
<ol type="A" start="5" >
<li></li>
<ol>
순서형 목록태그, type과 start 설정 가능
<dl>
<dt></dt>
<dd></dd>
<dl>
dt : 정의형 목록 제목, dd : 정의형 목록 내용
<img src="" alt=""> 이미지, 종료태그X, inline요소
src : 경로속성, alt = 대체 텍스트 속성
title, width, height 등 직접 설정 가능

동일폴더 → 파일명+확장자
하위폴더 → 폴더명/파일명+확장자
상위폴더 → ../파일명+확장자

웹 속도를 위해 이미지 크기를 반드시 확인해야 한다.
<a> ~ </a> 하이퍼링크 태그. inline요소.
target = "_blank" : 새 창으로 열기
target ="_top" : 부모 창 전체를 이용해서 열기
title : 마우스 호버시 뜨는 제목
<cite> ~ </cite> 인용된 작품의 제목 또는 출처를 나타낼 때 쓴다.
   
   

 

            <div class="a">
                <!-- <a>~</a> : 하이퍼링크 태그. inline요소 -->
                <a href="https://www.w3schools.com/html/" title="W3C_html_tutorial" target="_blank">Go to W3C html
                    tutorial
                    (새 창이 열립니다.)</a>
                <a href="https://www.w3schools.com/charsets/ref_html_entities_4.asp" title="html_특수문자">W3C html 특수문자
                    보러가기
                    (기존 창에서 열립니다.)</a>
                <!-- href="링크 경로"(필수!)
                 title="대체 텍스트"
                 target="설정없음=(기존 창에서 열기), _blank(새 창으로 열기), _top(부모 창 전체를 이용해 열기)" -->
            </div>

            <div class="a & img">
                <!-- 이미지에 링크 거는 방법 -->
                <a href="https://www.lottecinema.co.kr/NLCHS/Movie/MovieDetailView?movie=20898" target="_blank">
                    <img src="https://cf.lottecinema.co.kr//Media/MovieFile/MovieImg/202403/20898_103_1.jpg"
                        width="300px" alt="악은 존재하지 않는다">
                </a>
            </div>

            <div class="map">
                <!-- usemap="#name"과 map name="name"이 같아야 한다.-->
                <img src="https://cf.lottecinema.co.kr//Media/MovieFile/MovieImg/202404/20703_103_1.jpg" usemap="#movie"
                    width="300px" alt="쿵푸팬더4_포스터">
                <map name="movie">
                    <area shape="rect" coords="70,120,250,300"
                        href="https://www.lottecinema.co.kr/NLCHS/Movie/MovieDetailView?movie=20703" alt="쿵푸팬더4">
                    <!-- area : 이미지 영역을 정함 
                     shape="모양" -> circle은 3개 지정, rect(사각형)는 4개 지정.
                     coords="x,y좌표"-->
                </map>
            </div>

            <div class="iframe">
                <!-- iframe태그 : 외부 문서 불러오기 (유튜브, 지도 등 가능) -->
                <iframe width="560" height="315" src="https://www.youtube.com/embed/FtT9ECmwmWk?si=5sg8pVj1Bm-K1VTv"
                    title="YouTube video player" frameborder="0"
                    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
                    referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
            </div>

            <div class="video">
                <!-- 이미 가지고 있는 비디오 삽입 -->
                <video src=""></video>
                <!-- preload="미리 로드하기"
                 autoplay="자동재생"
                 muted="무음"
                 loop="무한반복"-->
            </div>
        </section>

        <section class="table">

            <table border="1" cellspacing="1" cellpadding="4">
                <caption>caption태그 : 표 제목 (위만 가능)</caption>
                <tr>
                    <th>태그 종류</th>
                    <th>tr태그</th>
                    <th>th태그</th>
                    <th>td태그</th>
                    <td colspan="2">colspan</td>
                </tr>
                <tr>
                    <th>태그 설명</th>
                    <td>행 태그</td>
                    <td>제목 태그</td>
                    <td>셀 태그</td>
                    <td rowspan="2">rowspan</td>
                </tr>
                <tr>
                    <th>태그 설명</th>
                    <td>행 태그</td>
                    <td>제목 태그</td>
                    <td>셀 태그</td>
                </tr>
            </table>

            <table border="1">
                <colgroup>
                    <col>
                    <col span="2" style="background-color: aquamarine;">
                    <col style="background-color: blueviolet;">
                </colgroup>
                <tr>
                    <td rowspan="2">colgroup & col 태그를 이용해서</td>
                    <td colspan="2">셀 배경 색상 설정</td>
                    <td style="color: #fff">rowspan과 colspan으로</td>
                </tr>
                <tr>
                    <td>colspan은 가로</td>
                    <td>rowspan은 세로</td>
                    <td style="color: #fff">셀을 합칠 수 있습니다.</td>
                </tr>
            </table>
            <figure>
                <figcaption> figure&figcaption태그 : 표 제목 (위,아래 가능)</figcaption>
            </figure>

        </section>

        <section class="form" style="padding-top: 30px;">
            <!--form : 게시판-->
            <form action="buy.jsp" method="post">
                <!--action="해당 문서로 이동" 
                method="통신 방식"-->
                <!--ERR_FILE_NOT_FOUND : buy.jsp로 이동 못해서 오류 발생-->
                <fieldset>
                    <!--fieldset : 테두리 박스-->
                    <!-- legend : fieldset에 제목을 나타냄-->
                    <legend>주문서</legend>
                    <p>
                        <!-- input : 특정 UI(user interface(디자인)) 항목을 만들때 사용-->
                        <!-- label for=""와 id="" 이름을 맞추어야 커서가 위치됨.-->
                        <label for="name">이름<i>*</i></label>
                        <input type="name" name="" id="name" placeholder="이름" autofocus required><br>

                        <label for="phone">전화번호<i>*</i></label>
                        <input type="tel" id="phone" placeholder="전화번호" maxlength="13" required><br>

                        <label for="id_text">아이디<i>*</i></label>
                        <input type="text" id="id_text" required size="10">

                        <label for="password">비밀번호<i>*</i></label>
                        <input type="password" id="password" required size="25"><br>

                        <!-- input type 값
                    text : 입력
                    name : 이름
                    tel : 전화번호
                    password : 비밀번호 (불릿으로 표시됨)
                    search : 검색
                    email : 이메일
                    file : 파일
                    number : 숫자
                    range : 범위
                    color : 색깔 색상선택(기본 검정색)
                      RGB 3원색을 가지고 색상 조합,
            value 16진수가 2개씩 쌍으로 6개 (RGB) -> 00~ff,
            10진수:0~9, 16진수:A(10)~F(15)
                    date : 날짜
                    month : 월
                    week : 주
                    time : 시간
                    datetime-local : 년도,월,일,시간 모두 표시
                    img : 이미지
                    submit : 제출 (기본값=제출로 표기됨, value로 변경 가능. 서버로 전송되는 버튼!)
                    reset : form 안에 있는 값 초기화 -->

                        <!-- input 속성
                    value : 초기값 설정 가능 (number 같은 경우)
                    required : 필수값
                    placeholder : 설명,힌트. 주로 전화번호에 많이 사용(ex.하이픈 없이 입력)
                    size : number 박스 길이 설정, select 콤보박스에 표시되는 행수
                    multiple : 여러개 선택 가능
                    min : 최솟값
                    max : 최댓값
                    step : x배수로 증가.증가 단위
                    maxlength : 최대 입력 개수
                    autofocus : 자동으로 포커스
                    selected : 초기값 설정
                    checked : 체크 박스에 기본 체크
                    name : 이름 설정
                    title : 제목 설정
                    readonly : 값 변경 불가. 주로 회원 아이디에 많이 사용.-->

                    </p>
                    <div>
                        <p>주문하는 찻잎 종류 (1개만 선택 가능)</p>
                        <!-- 라디오버튼은 name의 속성값이 같아야 하나만 선택됨-->
                        <label>
                            <input type="radio" name="tea">녹차
                        </label>
                        <label>
                            <input type="radio" name="tea">홍차
                        </label>
                        <label>
                            <input type="radio" name="tea">호지차
                        </label>
                        <label>
                            <input type="radio" name="tea">밀크티
                        </label>
                        <label>
                            <input type="radio" name="tea">망고사고
                        </label>

                        <div>
                            <label for="count">구매수량</label>
                            <input type="number" id="count" value="0" min="0" max="100" step="5"> <small
                                style="color: gray;">(5개 단위로 구매 가능, 최대 100개)</small>
                        </div>
                    </div>

                    <div>
                        <p>배송 건의사항</p>
                        <select name="" id="">
                            <option value="none">선택안함</option>
                            <option value="self">직접입력하기</option>
                            <option value="front" selected>문 앞에 놓아주세요</option>
                            <option value="call">부재시 연락 부탁드려요</option>
                            <option value="call2">배송 전 미리 연락해 주세요</option>
                        </select>

                        <p>기타 건의사항</p>
                        <div>
                            <textarea name="textarea" id="" cols="55" rows="5"
                                placeholder="기타 건의사항이 있다면 작성해주세요"></textarea>
                            <textarea name="textarea" id="" cols="55" rows="5"
                                placeholder="css로 resize: none; 값을 주면 상자 크기를 고정시킬 수 있습니다."
                                style="resize: none;"></textarea>
                        </div>
                    </div>

                    <div>
                        <!-- name="서버로 전송되는 값(화면에 표시는 안됨)"-->
                        <input type="checkbox" name="required" checked required>(필수)이용약관에 동의합니다.
                        <input type="checkbox" name="choice1">(선택)마케팅 문자 수신을 받겠습니다.
                        <input type="checkbox" name="choice1">(선택)마케팅 이메일 수신을 받겠습니다.
                    </div>
                    <p>
                        <input type="text" style="width: 400px; height: 50px;" readonly
                            placeholder="오늘도 좋은 하루 되세요 (해당란은 임의로 수정할 수 없습니다.)">
                    </p>
                    <div>
                        <input type="submit" value="주문하기">
                        <input type="reset" value="다시쓰기">
                    </div>
                    <div>
                        <button>버튼은 정보가 서버로 넘어가지 않습니다.</button>
                        <button type="submit">type="submit" 값을 줄 수 있다.</button>
                        <button type="reset">type="reset" 값을 줄 수 있다.</button>
                    </div>
                </fieldset>

                <fieldset>
                    <legend>음료 사전 주문</legend>
                    당도 설정(0%, 30%, 50%(기본), 80%, 100%)<input type="range" value="2" min="0" max="4">
                    <br>예약일<input type="date"> 픽업 희망 시간대 <input type="time">
                    <br>오픈시간<input type="time" value="10:00"> 마감시간<input type="time" value="17:00">
                    <!--select 박스, 드롭다운리스트, 콤보박스(실무에서 많이 사용)-->
                    <br><select name="" id="">
                        <!--value 속성 값은 서버로 들고 간다.-->
                        <option value="ice">얼음 적게</option>
                        <option value="ice" selected>얼음 보통</option>
                        <option value="ice">얼음 많이</option>
                    </select>
                    <br><select name="" id="">
                        <optgroup label="NEW 시즌 메뉴">
                            <option value="mini_mango">미니펄 망고 밀크</option>
                            <option value="mini_mango_crush">미니펄 망고 크러쉬</option>
                            <option value="taro_smoothie">타로 스무디</option>
                            <option value="lemon_smoothie">레몬 요구르트 스무디</option>
                        </optgroup>
                        <optgroup label="베스트 콤비네이션">
                            <option value="best_blackmilktea">블랙 밀크티</option>
                            <option value="best_gyual">청귤 스파클링티</option>
                            <option value="best_taromilktea">타로 밀크티</option>
                            <option value="best_grapefruit">자몽 그린티</option>
                            <option value="best_mango">망고 요구르트</option>
                        </optgroup>
                        <optgroup label="스파클링티">
                            <option value="jasmin">자스민 그린 스파클링 티</option>
                            <option value="tropical">트로피칼 스파클링 티</option>
                        </optgroup>
                    </select>

                    <input type="text" list="choices">
                    <!-- list, id 추가해야 콤보가 출력되고, 선택하면 value 값이 출력됨 -->
                    <datalist id="choices">
                        <option value="straw" label="빨대"></option>
                        <option value="paper" label="냅킨"></option>
                        <option value="spoon" label="숟가락"></option>
                        <option value="fork" label="포크"></option>
                    </datalist>

                    <br>주문하기 버튼은 음료 사진입니다.<input type="image"
                        src="https://www.gong-cha.co.kr/uploads/product/20231115/nHBQkPO83yAS12qr_20231115.png"
                        width="50px" alt="공차_청귤에이드">
                </fieldset>
            </form>

            <div class="form_etc">
                <ul>
                    <li>
                        10초 남음
                        <!-- 전체 60초 중 50초 진행 -->
                        <progress max="60" value="50"></progress>
                    </li>
                    <li>
                        진행률 30%
                        <!-- 전체 100중 30만큼 진행 -->
                        <progress max="100" value="30"></progress>
                    </li>
                </ul>

                <ul>
                    <li>
                        점유율 0.8
                        <!-- 전체 크기 1을 기준으로 0.8만큼 차지합니다 -->
                        <meter value="0.8"></meter>
                    </li>
                    <li>
                        사용량 64%
                        <meter min="0" max="100" value="64"></meter>
                    </li>
                    <li>
                        트래픽 초과
                        <!-- 전체 크기는 1024~10240까지인데 높다고 설정한 8192보다 현재 값 9000이 더 큽니다 -->
                        <meter min="1024" max="10240" low="2048" high="8192" value="2000"></meter>
                    </li>
                </ul>
            </div>
        </section>
    </main>

</body>

시멘틱 마크업

 <header> ~ </header> : 머리 부분임을 알리는 시멘틱 태그이다. 주로 로고, 메뉴 등을 넣는다.

<!-- header : 머리부분. 주로 로고, 메뉴 등이 들어감. -->
    <header>
    
        <!-- 로고는 보통 h1태그로 감싼다. -->
        <h1 class="logo">
            <!-- 이미지는 inline요소라서 block요소 태그로 한 번 감싸주는 게 좋다. -->
            <div>
                <img src="" alt="logo">
            </div>
        </h1>
        
        <!-- nav : 네비게이션. 주로 메뉴 -->
        <nav>
            <!-- gnb: 글로벌 네비게이션. 상위 메뉴. -->
            <div class="gnb"></div>
            <!-- lnb: 로컬 네비게이션.하위 메뉴. -->
            <div class="lnb"></div>
        </nav>
        
    </header>

 

 <main> ~ </main> :본문 내용을 넣는 시맨틱 태그이다.

<!-- 본문 내용 -->
<main> </main>

        

☞ <section> ~ </section> : 한 덩어리

 

☞ <aside> ~ </aside> : 가측 정보

 

☞ <article> ~ </article> : 기사

 

 <footer> ~ </footer> : 주소 등 정보를 넣는다.

<!-- 주소 등 정보를 기입. -->
<footer>
<address> </address>
</footer>

'HTML CSS' 카테고리의 다른 글

HTML 파일명 규칙  (0) 2024.07.01
Flexbox  (0) 2024.07.01