jongviet

April 1~28, 2021 - Front-end(HTML) 본문

react & react native

April 1~28, 2021 - Front-end(HTML)

jongviet 2021. 4. 28. 22:56

#Front-end(HTML)

 

*4월1일~28일

 

-4월 초부터 학습해온 Front-end 과정이 거의 끝나간다. 간략하게 학습한 내용을 정리해보고자 한다.

-오늘은 HTML!!

 

1)HTML 기본

-<> : 다이아몬드 내부에 태그 삽입하는 형태로 구성됨;

-일반적으로 tag는 쌍으로 구성됨 <> </> 

-paring이 포함관계, 순서 안에서 녹아있음

-single형식; meta와 같은게 있음

-head안 meta들도 각자의 위치값이 존재함 -> 추후 자바 배열처럼 순서대로 가져와서 쓸 예정임(DOM).. 각각 인덱스값이있음..

-디자인은 추후 스킨의 도움을 받으면됨~(basic CSS skills + bootstrap template)

-웹은 주석까지 다 노출됨.. 조심해야함. 실제 일부 사이트 찾아보면 개발자 주석 남아 있음.

-index.html은 default page.

 

*기본형태

<!DOCTYPE html>

<html lang="en"> //속성(attributes), '=' 뒤가 속성에 해당하는 값. 값이 변함.

<head> //tag = elements

    <meta charset="UTF-8"> //페이지 해석 인코딩 기준

    <meta http-equiv="X-UA-Compatible" content="IE=edge"> //익스플로러 설정을 edge 수준으로 올리겠다는 것.

    <meta name="viewport" content="width=device-width, initial-scale=1.0"> //디스플레이 크기 감지 및 화면 조정

    <title>Document</title>

</head>

<body>

    body tag test   //일반적인 텍스트임. contents, text node라고 부름

</body>

</html>

 

2)HTML 기본 태그

-headings / p / br/ pre 등등..

-H1,3,5 조합 데스크톱

-H2,4,6 조합은 테블릿 or 모바일

-block level tag.. 즉 자기 영역을 가지기에 개행을 함.

-inline level.. 라인 안에 존재 할 수 있는 것.. inline-block level도 있음(수직 정렬 시 유용함)

-heading이라는 태그들은 모두 bold 처리되어 있음.. 일반 사이즈와 같은 크기는 H4임.

-각각의 태그가 경계선임.

-<p> 문단 태그이며, 이도 당연히 분리되어있음. 문장만 담는 역할도 하지만, 어느정도의 라인 공백을 만드는 역할도 함. block-level

-<br>로 줄바꿈할때 모바일도 고려해야하기에 사용에 신중해야함. 최후의 수단임,, 잘 안쓰는게 좋음;

-<pre>시와 같이 비쥬얼스튜디오 내 찍은 그대로 보이게 하는 태그; preformatted tag

-<hr> block-level tag,, 수평선 줄그어버림... 이제는 구시대적인 방법으로 치부됨.

-공백용

 

    <p>

        &nbsp;

    </p>

 

*inline level tag

-<b> 볼드 처리, <i> 기울임꼴 이텔릭

-<strong> 볼드와 비슷, <em> 기울임꼴 비슷

-<sup> 위로 정렬, <sub> 아래로 정렬; superscript, subscript

 

*특수문자처리(escape)

-일반적 웹문서에 <body> 표시하기 위해서는 하기와 같이 입력

-잡다한 기호들은 거의다 CSS에서 일괄적으로 처리함.. 그게 더 효율적임

 

    &lt;body&gt;

 

-그 외 공백, &, ", copyright 등

 

*리스트(모두 block-level)

<ul>

<ol>

<li>

 

<dl>

        <dt>에스프레소</dt>

        <dd>커피의 기본 원액</dd>

        <dt>아메리카노</dt>

        <dd>에스프레소에 물 희석</dd>

        <dt>카페라떼</dt>

        <dd>에스프레소에 우유 희석</dd>

</dl>

 

 

*Link tag

-<a> 앵커 태그

 

-일반 링크 / 새창 링크

 

    <p><a href="https://naver.com">네이~버</a></p>

    <p><a href="https://naver.com" target="_blank">네이~버 새창</a></p>

 

-파일 내부 링크 / 상위 폴더 링크 / 하위 폴더 링크

 

    <p><a href="escape.html">특수문자 페이지</a></p>

    <p><a href="../index.html">특수문자 페이지</a></p>

    <li><a href="text/escape.html">escape</a></p></li>

 

-문서 내부 이동; 이동된 부분이 최상단에 찍히게됨; id 지정 후 #으로 콜!!!

 

    <li id="here">here</li>

    <li><a href="#here">here로 이동</a></li>

 

 

3)image, audio, video 등

 

*image

-검색 로봇들이 title, alt(alternative)값 보고도 찾아옴.. 조회수 중요하면 alt 값 빼먹지 말자.

 

    <img src="res/DD.jfif" alt="drone delivery는 멀었는가...">

    <img src="res/NEE.jfif" alt="NEE 재진입하자..">

    <img src="res/ube22r.png" alt="UBER 재진입하자..">

 

-width="50%" 는 전체 기준 50% -> 즉 커짐

-width="50"은 실제 50으로... 매우 작아짐

-이미지 자체 비율이 있기에, width, height 임의 조정 시 이미지 깨질 수 있음.

-이미지 전부 0과 1로 구성됨.. 즉 용량이 클수록 점이 장난없음.. 이런 방식을 비트맵 이미지(좌표코드) -> 보완하게 벡터이미지

-jpg:손실압축, 웹용

-png:무손실압축/투명도 만들어 낼 수 있음.

-gif: 그림이 움직이네..?

-이미지맵: 이미지 특정 부위 클릭시 이동하는 링크.. 요즘은 잘 안씀. 너무 복잡

-공백처리된 부분에 한해서 줄바꿈해서 편하게 쓰면됨~~

 

-figure로 감싸서, caption block-level로 추가함; figure는 정리하기위해 담는 바구니라고 생각하면 됨

 

    <figure>

        <img src="res/DD.jfif" alt="">

        <img src="res/NEE.jfif" alt="">

        <figcaption>이미지 2개에 대한 캡션</figcaption>

    </figure>

 

    <figure>

        <figcaption>이미지 1개에 대한 캡션</figcaption>

        <img src="res/DD.jfif" alt="">

    </figure>

 

*audio

-ODD파일 웹용 고음질 파일

 

    <h1>과거의 방식보다 편리하게 이용</h1>

    <audio src="res/sample.mp3" autoplay controls>

        지금 사용중인 브라우저에서는 재생이 불가합니다.

    </audio>

    <hr>

    <audio autoplay controls>

        <!-- 특정한 파일이 없으면 그 다음 파일을 찾아서 재생~ 그래도없으면 문구 -->

        <source src="res/sample.mp3" type="audio/mp3">

        <source src="res/sample.mp3" type="audio/mp3">

        지금 사용중인 브라우저는 이 오디오 형식을 지원하지 않습니다.

    </audio>

    <hr>

    <audio src="res/sample.mp3" controls loop preload="auto">

        지금 사용중인 브라우저에서는 재생이 불가합니다.

    </audio>

 

*video

-OTT : 동영상을 어떻게 용량을 줄여서 서비스할 것이냐.. 그리고 각기 다른 인터넷 환경에서 어떻게.. 구현 할 것이냐가 중요함.

-깊이있게는 하기 힘듬.. 단순히 당겨 쓰는 수준

-웹은 협업이 굉장히 중요함..... 커뮤니케이션 중요.. 왜냐하면 범위가 너무 넓음<-> 안드로이드는 갠플 가능..

 

    <h1>영상 스트리밍</h1>

    <video src="res/sample.mp4" width="640" height="480" controls autoplay>

        사용 중인 브라우저는 현재 파일 재생을 지원하지 않습니다.

    </video>

    <hr>

    <video width="640" height="480" controls autoplay>

        <source src="res/sample.mp4" type="video/mp4">

        <source src="res/sample.mp4" type="video/mpeg">

        <source src="res/sample.mp4" type="video/ogg">

        사용 중인 브라우저는 현재 파일 재생을 지원하지 않습니다.

    </video>

 

-videojs.com이 비디오 frame 꾸며주는 사이트임,, 소스만 받아서 쓰면됨.

 

<!DOCTYPE html>

<html lang="en">

 

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <link href="https://vjs.zencdn.net/7.11.4/video-js.css" rel="stylesheet" />

</head>

 

<body>

    <video id="my-video" class="video-js" controls preload="auto" width="640" height="264" poster="MY_VIDEO_POSTER.jpg"

        data-setup="{}">

        <source src="res/sample.mp4" type="video/mp4" />

        <source src="MY_VIDEO.webm" type="video/webm" />

        <p class="vjs-no-js">

            To view this video please enable JavaScript, and consider upgrading to a

            web browser that

            <a href="https://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>

        </p>

    </video>

 

    <script src="https://vjs.zencdn.net/7.11.4/video.min.js"></script>

</body>

</html>

 

*iframe

-inner frame 느낌, 브라우저 안의 브라우저

-유튜브 소스코드 복사로 그대로 가져올 수 있음. iframe 내에

-안드로이드 웹뷰 개념

-너무 많이 사용하면 로딩이 너무 오래 걸림.. 

 

 

4)기타 태그 관련 추가

 

*tag 중요도

-div(영역), li, a, table, form(매우 중요!!, 디자인쪽으로 갈 것 아니면 이거만 하면됨)

 

*table

-테이블로 전체 페이지를 만들면 속도가 엄청 떨어짐.. 절대 레이아웃 말것!!

-tr 세로줄 / td 가로줄 / th: table heading; 가운데정렬 & 볼드처리

-tr하나에 row 하나, 그안에 있는 td or th가 column값 하나임

테이블 예시

 

    <table border="1">

        <tr>

            <th>영화제목</th>

            <th>연도</th>

            <th>감독</th>

            <th>평가</th>

        </tr>

        <tr>

            <td>라이프 오브 파이</td>

            <td>2013</td>

            <td>이안</td>

            <td>8.68</td>

 

        </tr>

        <tr>

            <td>레미제라블</td>

            <td>2012</td>

            <td>톰후퍼</td>

            <td>8.28</td>

 

        </tr>

        <tr>

            <td>장고: 분노의 추적자</td>

            <td>2012</td>

            <td>타란티노</td>

            <td>8.29</td>

        </tr>

    </table>

 

 

*table-merge

-<td colspan="2"></td>

-<td rowspan="2"></td>

-<caption>테이블 셀 병합</caption> // 아래에 있으나 위에 있으나 항상 테이블 상단에 노출됨 테이블속성에 맞춰서 가운데 정렬 기본. 하단에 하고싶으면 figure로 싸서 figurecaption 적용해야함.

-html로는 뼈대만 만들고 나머지는 CSS로함.. 정렬이든 색이든 모두 넘김

 

*div tag(block-level)

-마치 탑쌓기와 같이 영역을 가지는 것

-box model에서 좀 더 심화된 내용을 다룰 예정.. margin, padding 등 고려해야하기에 어려움

-span은 inline level, 주로 글자를 담음... 

 

    <h1>block-level tag div</h1>

    <div style="border:3px solid red">

        <h2>퇴근이란...</h2>

 

        <p>

            퇴근은 아름다운 것이며

 

            삶의 질을 향상시키는 것이다...

        </p>

    </div>

    <div style="border:3px solid red">

        <h2>퇴근이란...</h2>

 

        <p>

            퇴근은 아름다운 것이며

 

            삶의 질을 향상시키는 것이다...

        </p>

    </div>

 

-가장 바깥쪽 div가 바닥을 이루고, 그안에 있는게 그 바로 위, 또 그 안에 있는게 그 바로 위

 

    <div style="height: 100px; width : 500px; background-color: red;">

        <div style="height: 70px;width : 300px; background-color: green;">

            <div style="height: 50px;width : 100px; background-color: blue;">

 

            </div>

        </div>

    </div>

 

*form tag

-가장 중요함.. 100% 이해해야함.. back-end와 연관 / 한국장학재단 패널조사 설문지 form 떠올리기;

-회원가입란 양식 / 설문조사 등등... 디자인 제외 전부라고 볼 수 있는 부분임.

-form tag 안쪽에 세트로 움직이도록 함..

-dothome PHP서버 사용함 / PHP는 이해도만 있으면 1달안에 할 수 있음~~ 크게 신경 안써도 됨

-사용자와 소통하는 창구임.

-block-level

-label for와 input의 name이 연동이됨~ 보조적인 역할 정도? 디자인 느낌임.

-action이 생략되면 새로고침 효과가 있음, 자기 자신 호출

-submit은 form tag 내 action을 찾아서 실행 함. 만약 action이 없으면 자기 자신을 호출

-reset은 form tag 내 모든 양식을 지움.

-method는 get방식이 디폴트, 생략 시에도 get 적용

-name(key) & value(입력한 값),, Json 생각하면됨 / id는 스타일 목적으로 하는 것임...CSS용

-placeholder : 안드로이드 힌트 개념;

-readonly는 입력되어있는 값이 전송됨. 보여주고 내가 다시 받아와야하는 값 disabled는 입력된 값 아예 전송 조차 안됨.

-maxlength 최대 길이값 / minlength 최소 길이 값

-정규식: 입력될 값을 한정 짓는 것  patter="a-zA-Z"

-value가 가지고 있는 값임;

 

    <form action="">

        <input type="text" name="ids" id="ids"

        placeholder="아이디를 입력하세요">

        <input type="password" name="pwd" id="pwd"

        placeholder="패스워드를 입력하세요">

        <input type="text" name="ids2" readonly value="B">

        <input type="text" name="ids3" disabled value="C">

        <input type="text" minlength="3" maxlength="10">

        <input type="submit" value="전송">

        <input type="text" pattern="a-zA-Z">

    </form>

 

-input type number

-min, max 지정, step으로 짝수 , 홀수 입력 한정 가능

 

    <form action="">

        <input type="number" name="num" id="num">

        <input type="number" placeholder="숫자만 입력!">

        <input type="number" value="5">

        <input type="number" readonly>

        <input type="number" disabled>

        <input type="number" max="100" min="0" step="2">

        <input type="submit" value="전송">

    </form>

 

-tel은 거의 안씀; date는 많이 씀!

-datetime 한꺼번에 노출하면 모바일에서 잘 안보임.

-file 타입은 value 절대 안됨.. 보안적인 이유 / enctype 또 multipart/form-data 방식으로만 보내야함 (나머지는 application~)

-버튼은 하기 중 어느방식으로 써도 똑같음

 

        <input type="submit" value="전송">

        <button>버튼 태그</button>

        <button type="submit">전송버튼</button>

        <button type="reset">리셋버튼</button>

 

*input-select

-checkbox는 받는쪽에서 여러개를 한꺼번에 받아야 하기에 for문 + array로 받음

-radiobutton은 name값을 따라서 2개중 1개, 2개중 1개 식으로 선택 가능

-checked로 기 선택 가능

-required는 반드시 입력되어야 할 값; 회원가입시 아이디, 비번, 이름 등

 

    <form action="">

        취미

        <input type="checkbox" name="hobby" value="독서" checked>독서

        <input type="checkbox" name="hobby" value="음악감상">음악감상

        <input type="checkbox" name="hobby" value="수영">수영

        <input type="checkbox" name="hobby" value="게임">게임

        <button type="submit">전송</button>

    </form>

    <hr>

    <form action="">

        가장 잘 하는 것

        <input type="radio" name="best" value="자바">자바

        <input type="radio" name="best" value="Python">Python

        <input type="radio" name="best2" value="JS">JS

        <input type="radio" name="best2" value="SQL">SQL

        <input type="submit" value="전송">

    </form>

 

    <form action="">

        <select name="bloodtype" id="bloodtype">

            <option value="">혈액형</option>

            <option value="A">A</option>

            <option value="A">B</option>

            <option value="A">O</option>

            <option value="A">AB</option>

        </select>

        <input type="submit" value="submit">

    </form>

    <hr>

    <form action="">

        <select name="telecom" id="">

            <option value="">통신사</option>

            <option value="SKT" selected>SKT</option>

            <option value="KT">KT</option>

            <option value="LGT">LGT</option>

            <option value="알뜰폰">알뜰폰</option>

        </select>

        <input type="submit" value="submit">

    </form>

    <hr>

    <form action="">

        <select name="telecom" id="">

            <option value="">통신사</option>

            <option value="SKT" selected>SKT</option>

            <option value="KT">KT</option>

            <option value="LGT">LGT</option>

            <optgroup label="알뜰폰">

                <option value="알뜰SK">알뜰SK</option>

                <option value="알뜰KT">알뜰KT</option>

                <option value="알뜰LG">알뜰LG</option>

            </optgroup>

        </select>

        <input type="submit" value="submit">

    </form>

    <hr>

    <form action="">

        <select name="telecom" id="">

            <optgroup label="알뜰폰">

                <option value="알뜰SK">알뜰SK</option>

                <option value="알뜰KT">알뜰KT</option>

                <option value="알뜰LG">알뜰LG</option>

            </optgroup>

            <optgroup label="알뜰폰">`

                <option value="알뜰SK">알뜰SK</option>

                <option value="알뜰KT">알뜰KT</option>

                <option value="알뜰LG">알뜰LG</option>

            </optgroup>

        </select>

        <input type="submit" value="submit">

    </form>

    <hr>

    <form action="">

        이름: <input type="text">

 

        이메일: <input type="email">

 

        간단한 자기소개 :

 

        <textarea rows="5" cols="50" name="" required></textarea>

    </form>

 

-특정한 기획안을 받았을 때 form으로 구현할 수 있어야함 / name값 효율적 사용 / 각각 자료에 대한 type 등

 

*Semantic

-tag의 이름에 기능이 녹아 있는 것

-체크한 것은 div랑 거의 같음. 이름만 다를뿐~

-태그에 이름붙여서 어느 위치구나 짐작하는 정도, 기능은 div와 모두 같음

-nav navigator 느낌, 메뉴바

-CSS가 있어야지 배치가 의미 있음..

-figure도 div느낌, figurecaption 통해서 좀 더 유익하게 구현 가능

 

 

*기타 팁

-DTD document type definition  = doctype

-열었으면 닫기

-소문자 사용

-쌍따옴표, 온따옴표 JS에서 읽을 때 차이가 있음...  HTML에서는 일반적으로 쌍따옴표 계속 쓰면 됨~

-띄어쓰기, 공백, 점 등 조심하기

-이미지 alt값은 항상 넣기~

-complie언어는 미리미리 검사 / interpreter언어인 HTML, PHP, PYTHON 등은 나중에 검사하기에 오타 용납x

-HTML은 데이터의 크기가 클수록 시간, 전력소모가 크기에.....  코드 상 띄어쓰기 등 없이 최대한 간결하게!!

-never skip <title>

-charset은 always UTF-8

 

Source : https://www.w3schools.com

-이메일 : smtp / 내부 네트워크 : udp / 파일 FTP

-XML은 HTML 기반에서 좀 더 동적으로 변한것이라 생각하면됨; 현재는 거의 쓰지 않음(JS 때문)

-SVG는 프론트 분야 기술; 적은 용량으로 이미지 표현 가능

-트래픽 자체가 돈이기에... 적은 용량이 무조건 이득임..

 

 

Comments