<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>코딩하는 호랑이.log</title>
        <link>https://velog.io/</link>
        <description>개발자를 꿈꾸며 오늘을 채워 내일을 그리고 있습니다 :)</description>
        <lastBuildDate>Mon, 04 Jan 2021 12:04:51 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>코딩하는 호랑이.log</title>
            <url>https://images.velog.io/images/lee-dongha/profile/ddccee96-3574-49fc-af6b-10073f697d9c/tiger.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. 코딩하는 호랑이.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/lee-dongha" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[TIL17_코드카타 5]]></title>
            <link>https://velog.io/@lee-dongha/TIL17-KC5</link>
            <guid>https://velog.io/@lee-dongha/TIL17-KC5</guid>
            <pubDate>Mon, 04 Jan 2021 12:04:51 GMT</pubDate>
            <description><![CDATA[<h1 id="week2_day1">Week2_Day1</h1>
<h2 id="문제">문제</h2>
<blockquote>
<p>1~3999 사이의 로마자 s를 인자로 주면 그에 해당하는 숫자를 반환해주세요.</p>
</blockquote>
<p><img src="https://images.velog.io/images/lee-dongha/post/19bc08ba-1f1b-4fa9-9cae-45a3514ee3d9/%E1%84%85%E1%85%A9%E1%84%86%E1%85%A1.png" alt=""></p>
<ul>
<li><p>로마자를 숫자로 읽는 방법은 로마자를 왼쪽부터 차례대로 더하면 됩니다.</p>
<ul>
<li>III = 3
XII = 12
XXVII = 27
입니다.</li>
</ul>
</li>
<li><p>그런데 4를 표현할 때는 IIII가 아니라 IV 입니다.
뒤의 숫자에서 앞의 숫자를 빼주면 됩니다.
9는 IX입니다.</p>
</li>
<li><p>I는 V와 X앞에 와서 4, 9
X는 L, C앞에 와서 40, 90
C는 D, M앞에 와서 400, 900</p>
</li>
</ul>
<h2 id="문제-접근-방식">문제 접근 방식</h2>
<ul>
<li>로마자를 객체로 만든다</li>
<li>숫자 4와 9, 40, 90, 400, 900이 만들어지는 과정을 식으로 풀어준다</li>
</ul>
<h2 id="해결-코드">해결 코드</h2>
<p><img src="https://images.velog.io/images/lee-dongha/post/26831db5-462f-465c-af57-1eca2bd503b8/%E1%84%8F%E1%85%A9%E1%84%83%E1%85%B3%E1%84%8F%E1%85%A1%E1%84%90%E1%85%A15.png" alt=""></p>
<h2 id="코드-해설">코드 해설</h2>
<ul>
<li>결과값을 담을 <code>result</code>를 생성해줬습니다.</li>
<li>인자값을 <code>split()</code> 함수를 사용해서 <code>&#39;&#39;</code>로 나눠줬습니다.</li>
<li>로마 숫자 표기법을 객체로 담아줬습니다.</li>
<li>배열이 된 인자값을 for문을 사용해서 반복해주고 그 안에 if문을 사용해서 로마자를 숫자로 변환하기 위한 조건문을 작성해줬습니다.</li>
<li>로마자 <code>IV</code>가 4가 되는 식은 앞에 있는 로마자 <code>I</code>가 뒤에 있는 라마자 <code>V</code>보다 작아서 뒤에 있는 로마자 <code>V</code>에서 앞에 있는 로마자 <code>I</code>자를 빼줬습니다. 9, 40, 90, 400, 900이 만들어지는 원리도 동일합니다.</li>
<li>이 식을 기본으로 for문과 if문을 사용해서 인자값에서 앞에 있는 로마자와 뒤에 있는 로마자를 비교하는 식을 만들어 줍니다. </li>
<li>식을 만드는 과정에서 인자 길이의 -1만큼 반복하는 이유는 두 로마자를 비교할 때 앞, 뒤의 로마자를 비교하는 것이기에 <code>i</code>    번째와 <code>i+1</code>    번째의  로마자를 비교하고 <code>i번째</code> 로마자가 나타내는 숫자를 <code>result</code>에서 빼하는 것인지 더하는 것인지 결정하게 되는 것인데 그렇다면 <code>s.length</code>만큼 돌면 마지막 로마자는 비교할 <code>i+1</code> 로마자가 게 됩니다. 그러므로 for문에서 <code>s.length</code>에서 -1을 해줘서 마지막 로마자는 for문과 if문에서 제외하고 마지막에 결과값을 반환할 때 더해줬습니다.</li>
</ul>
<h2 id="모델-솔루션">모델 솔루션</h2>
<p><img src="https://images.velog.io/images/lee-dongha/post/b03e8a5a-d7ce-4ba9-ae94-872eae717705/%E1%84%8F%E1%85%A9%E1%84%83%E1%85%B3%E1%84%8F%E1%85%A1%E1%84%90%E1%85%A1%E1%84%86%E1%85%A9%E1%84%89%E1%85%A9%E1%86%AF5.png" alt=""></p>
<h2 id="후기">후기</h2>
<ul>
<li>모델 솔루션에 나와있는 것처럼 <code>map()</code> 함수를 사용할 수 있습니다. 코드가 깔끔해졌습니다.</li>
<li>하지만 모델 솔루션보다 <code>map()</code> 함수를 사용하지 않은 해켤 코드가 더 재미있어 보입니다.</li>
<li><code>map()</code> 함수의 다양한 형태를 공부해야겠습니다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL16_코드카타 4]]></title>
            <link>https://velog.io/@lee-dongha/TIL16KC4</link>
            <guid>https://velog.io/@lee-dongha/TIL16KC4</guid>
            <pubDate>Sun, 03 Jan 2021 08:14:16 GMT</pubDate>
            <description><![CDATA[<h1 id="week1_day4">Week1_Day4</h1>
<h2 id="문제">문제</h2>
<blockquote>
<p>숫자인 num을 인자로 넘겨주면, 뒤집은 모양이 num과 똑같은지 여부를 반환해주세요.</p>
</blockquote>
<ul>
<li><p>num: 숫자</p>
</li>
<li><p>return: true or false (뒤집은 모양이 num와 똑같은지 여부)</p>
<ul>
<li><p>예를 들어,
num = 123
return false
=&gt; 뒤집은 모양이 321 이기 때문</p>
<p>num = 1221
return true
=&gt; 뒤집은 모양이 1221 이기 때문</p>
<p>num = -121
return false
=&gt; 뒤집은 모양이 121- 이기 때문</p>
<p>num = 10
return false
=&gt; 뒤집은 모양이 01 이기 때문</p>
</li>
</ul>
</li>
</ul>
<h2 id="문제-접근-방식">문제 접근 방식</h2>
<ul>
<li>숫자를 뒤집고(-&gt;문자-&gt;배열) 다시 모아서 숫자로 만들어준다</li>
<li><code>-</code>부호까지 다 뒤집는다</li>
<li>원래 숫자와 뒤집은 숫자를 참/거짓으로 비교한다 </li>
</ul>
<h2 id="해결-코드">해결 코드</h2>
<p><img src="https://images.velog.io/images/lee-dongha/post/f71de492-f3dc-45f1-b454-eb4565f04eea/4.png" alt=""></p>
<h2 id="코드-해설">코드 해설</h2>
<ul>
<li>숫자 <code>num</code>을 <code>toString()</code> <code>split()</code> <code>reverse()</code> <code>join</code>을 한 번에 해줘서 <code>reNum</code>에 담아줬습니다.</li>
<li>숫자 -&gt; 문자 -&gt; 배열을 거쳐서 <code>join()</code>을 해줬기 때문에 <code>reNum</code>의 type은 문자입니다. 따라서 <code>Number()</code>을 사용해서 숫자로 바꿔줬습니다.</li>
<li>if문을 사용해서 <code>num</code>과 <code>reNum</code>을 비교해서 참/거짓을 반환해줬습니다.</li>
</ul>
<h2 id="모델-솔루션">모델 솔루션</h2>
<p><img src="https://images.velog.io/images/lee-dongha/post/146dfdc3-93ef-4d65-9958-286ab5acc406/m4.png" alt=""></p>
<h2 id="후기">후기</h2>
<ul>
<li>숫자를 뒤집을 때 type을 바꿨는데 다시 숫자형으로 바꾸지 않고 <code>num</code>과 <code>reNum</code>을 비교해서 오류가 났는데 같은 팀인 인태님이 type을 비교해보라고 하셔서 <code>typeof()</code>를 사용해서 두 변수의 타입이 다르다는 것을 알았는데 이런 쉽게 놓칠 수 있는 부분을 조심해야겠습니다.</li>
<li>week1의 day2 문제처럼 <code>reverse()</code> 함수를 혹은 특정 함수를 풀어서 코드를 구현할 수 있는 연습을 해야겠습니다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL15_코드카타 3]]></title>
            <link>https://velog.io/@lee-dongha/TIL15KC3</link>
            <guid>https://velog.io/@lee-dongha/TIL15KC3</guid>
            <pubDate>Sun, 03 Jan 2021 07:24:34 GMT</pubDate>
            <description><![CDATA[<h1 id="week1_day3">Week1_Day3</h1>
<blockquote>
<p>String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.</p>
</blockquote>
<ul>
<li><p>str: 텍스트</p>
</li>
<li><p>return: 중복되지 않은 알파벳 길이 (숫자 반환)</p>
<ul>
<li><p>예를 들어,
str = &quot;abcabcabc&quot;
return은 3
=&gt; &#39;abc&#39; 가 제일 길기 때문</p>
<p>str = &quot;aaaaa&quot;
return은 1
=&gt; &#39;a&#39; 가 제일 길기 때문</p>
<p>str = &quot;sttrg&quot;
return은 3
=&gt; &#39;trg&#39; 가 제일 길기 때문</p>
</li>
</ul>
</li>
</ul>
<h2 id="준비중">준비중</h2>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL15_코드카타 2]]></title>
            <link>https://velog.io/@lee-dongha/TIL15KC2</link>
            <guid>https://velog.io/@lee-dongha/TIL15KC2</guid>
            <pubDate>Sun, 03 Jan 2021 07:19:37 GMT</pubDate>
            <description><![CDATA[<h1 id="week1_day2">Week1_Day2</h1>
<h2 id="문제">문제</h2>
<blockquote>
<p>reverse 함수에 정수인 숫자를 인자로 받습니다.
그 숫자를 뒤집어서 return해주세요.</p>
</blockquote>
<ul>
<li><p>x: 숫자</p>
</li>
<li><p>return: 뒤집어진 숫자를 반환!</p>
<ul>
<li><p>예들 들어,
x: 1234
return: 4321</p>
<p>x: -1234
return: -4321</p>
</li>
</ul>
<p>x: 1230
return: 321</p>
</li>
</ul>
<h2 id="문제-접근-방식">문제 접근 방식</h2>
<ul>
<li>정수를 뒤집어야 한다</li>
<li>정수를 뒤집을 때 <code>-</code>부호는 앞에 그대로 있는다</li>
<li>뒤집었을 때 <code>0</code>이 앞에 오면 없애고 그 다음 숫자부터 나타낸다</li>
</ul>
<h2 id="해결-코드">해결 코드</h2>
<p><img src="https://images.velog.io/images/lee-dongha/post/a6d499f9-f21c-4e2a-ab10-66ae15e75d30/%E1%84%8F%E1%85%A9%E1%84%90%E1%85%B3%E1%84%8F%E1%85%A1%E1%84%90%E1%85%A12.png" alt=""></p>
<h2 id="코드-설명">코드 설명</h2>
<ul>
<li><p>정수는 뒤집힐 수 없기 때문에 문자로 type을 바꾸고/<code>toString()</code> 배열로 쪼개고/<code>splite()</code> 뒤집어야/<code>reverse()</code> 합니다.</p>
</li>
<li><p>뒤집은 <code>x</code>를 <code>a</code>에 담고 if문을 사용해서 정수 <code>x</code>    앞에 <code>-</code>가 붙었을 때,  <code>a</code>의 첫 번째 요소가 <code>0</code>일 때, 그 외의 경우일 때 총 3개의 경우의 수로 나눠줬습니다.</p>
</li>
<li><p>현재 <code>a</code>는 배열이기 때문에 <code>join()</code>를 사용해서 문자로 바꾸고 <code>Number()</code>를 사용해서 숫자로 바꿘 값을 반환해줬습니다.</p>
</li>
</ul>
<h2 id="인태님의-풀이">인태님의 풀이</h2>
<p><img src="https://images.velog.io/images/lee-dongha/post/ee7acea4-c9ad-405e-bad6-c2b219fe9aee/%E1%84%8F%E1%85%A9%E1%84%83%E1%85%B3%E1%84%8F%E1%85%A1%E1%84%90%E1%85%A1_2_1.png" alt=""></p>
<h2 id="모델-솔루션">모델 솔루션</h2>
<p><img src="https://images.velog.io/images/lee-dongha/post/ad0a16ba-caf9-43a8-ae1e-e92dc4d15d50/2.png" alt=""></p>
<h2 id="후기">후기</h2>
<ul>
<li>문제가 의도한 것은 <strong><code>revese()</code> 함수를 사용하지 않고 해결하는 것</strong>이었습니다.</li>
<li>인태님의 코드와 모델 솔루션에는 <code>reverse()</code> 함수가 어떻게 동작하는지 나와있습니다. 
이렇게 <strong>어떤 특정한 함수의 동작을 풀어서 설명할 줄 아는 능력</strong>을 키워야겠습니다.</li>
<li><strong>데이터 Type</strong>에 대해 자세히 공부해야겠습니다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL14_코드카타 1]]></title>
            <link>https://velog.io/@lee-dongha/TIL14CK1</link>
            <guid>https://velog.io/@lee-dongha/TIL14CK1</guid>
            <pubDate>Sun, 03 Jan 2021 06:48:05 GMT</pubDate>
            <description><![CDATA[<h1 id="week1_day1">Week1_Day1</h1>
<h2 id="문제">문제</h2>
<blockquote>
<p><code>twoSum함수</code>에 숫자배열과 &#39;특정 수&#39;를 인자로 넘기면,
더해서 &#39;특정 수&#39;가 나오는 index를 배열에 담아 return해 주세요.</p>
</blockquote>
<ul>
<li><p>nums: 숫자 배열</p>
</li>
<li><p>target: 두 수를 더해서 나올 수 있는 합계</p>
</li>
<li><p>return: 두 수의 index를 가진 숫자 배열</p>
<ul>
<li>예를 들어,
<code>nums</code>은 [4, 9, 11, 14]
<code>target</code>은 13
<code>nums[0]</code> + <code>nums[1]</code> = 4 + 9 = 13 이죠?
그러면 <code>[0, 1]</code>이 return 되어야 합니다.
가정
target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정하겠습니다.</li>
</ul>
</li>
</ul>
<h2 id="문제-접근-방식">문제 접근 방식</h2>
<ul>
<li>이중 for문을 사용해서 배열에서 두 개의 요소를 선택</li>
<li>target과 두 요소의 합을 if문을 사용해서 비교 </li>
<li>그 결과 값을 배열로 반환</li>
</ul>
<h2 id="해결-코드">해결 코드</h2>
<p><img src="https://images.velog.io/images/lee-dongha/post/83d7a051-3fd4-43b5-8557-d20cbfc6fa90/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-01-03%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.30.13.png" alt=""></p>
<h2 id="코드-설명">코드 설명</h2>
<ul>
<li>결과를 담을 빈 배열 <code>result</code>를 설정해줬습니다.</li>
<li>for문을 두 번 사용하면서 두 개의 요소를 찾았습니다.</li>
<li>찾은 요소를 더한 결과를 <code>total</code>에 담아줬습니다.</li>
<li>조건문을 사용해서 <code>total</code>과 <code>target</code>이 같으면 배열의 인덱스 값인 <code>i</code>와 <code>j</code>를     빈 배열 <code>result</code>에 넣어주고 결과를 반한했습니다.</li>
</ul>
<h2 id="인태님의-풀이">인태님의 풀이</h2>
<p><img src="https://images.velog.io/images/lee-dongha/post/5d98116b-1f6d-4221-8a65-48c39322686d/%E1%84%8F%E1%85%A9%E1%84%83%E1%85%B3%E1%84%8F%E1%85%A1%E1%84%90%E1%85%A1_1.png" alt=""></p>
<h2 id="모델-솔루션">모델 솔루션</h2>
<p><img src="https://images.velog.io/images/lee-dongha/post/13ae8192-a96c-4006-9b22-cb9bdea3cf5a/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-01-03%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.42.26.png" alt=""></p>
<h2 id="후기">후기</h2>
<ul>
<li><strong>이중 for문</strong>을 자세히 공부해야겠습니다.</li>
<li>인태님의 코드와 모델 솔루션처럼 빈 배열을 선언하거나 두 요소의 합을 선언하는 코드를 없애서 코드의 길이를 줄이는 것이 좋을 것 같습니다. 없어도 상관없는 <strong>코드를 줄이는 마인드와 연습</strong>이 필요합니다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL13_React에 대해서]]></title>
            <link>https://velog.io/@lee-dongha/TIL13React-1</link>
            <guid>https://velog.io/@lee-dongha/TIL13React-1</guid>
            <pubDate>Sun, 03 Jan 2021 06:04:16 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/lee-dongha/post/9794a820-cd89-4144-8fad-ba8c4bc9eab4/react-logo.png" alt=""></p>
<h1 id="react의-등장-배경-🖼">React의 등장 배경 🖼</h1>
<ul>
<li><p>초기 웹은 HTML/CSS, 순수한 JS, DOM, Event를 이용해 페이지를 만들었습니다.
&#39;초기&#39;라는 단어가 붙은만큼 이후 시간이 지날 수록 웹이 점점 많은 동적인 기능 복잡해지고 DOM에 직접적으로 접근하는것이 번거로워지면서 이를 간략하게 해주는 jQuery가 등장했습니다.</p>
</li>
<li><p>jQuery는 HTML에서 클라이언트 사이드 조작을 단순하게 해주는 JS Library입니다.
하지만 이 jQuery를 요즘은 잘사용하지 않습니다.
속도가 순수 JS보다 빠르지 않고 코드가 단순해서 사용이 쉬웠지만 지속적으로 사용하다 보니 유지보수가 어려워졌다.</p>
</li>
<li><p>이러한 이유로 점점 DOM에 접근하는 다양한 라이브러리나 프레임워크가 등장했습니다.
그 중 하나가 <code>React</code>입니다.</p>
<ul>
<li>클라이언트 사이드 : 사용자 측에서 수행하는 것들</li>
</ul>
</li>
</ul>
<h1 id="react란️">React란⁉️</h1>
<ul>
<li>React도 Frontend Framework(Library) 중 하나입니다.</li>
<li>2013년 Facebook에서 “지속적으로 데이터가 변화하는 대규모 애플리케이션 구축하는 것”을 목표로 개발한 Library입니다.</li>
<li>사이트에 들어가면 보여지는 것(UI) 과 할 수 있는 것(UX)가 있습니다. 그 중에서 React는 View만 담당합니다. 즉 보이는 것 User Interface을 만들기위한 JS Library입니다.</li>
</ul>
<h2 id="react의-특징-🌟">React의 특징 🌟</h2>
<blockquote>
<p>컴포넌트를 사용하여 재사용성이 뛰어납니다.
가상돔(Virtual DOM)기반으로 하기 때문에 가볍습니다.</p>
</blockquote>
<ul>
<li>Component : 재활용 가능한 UI 구성 단위</li>
<li>Virtual Dom : 이전 UI 상태를 메모리에 유지해서, 변경될 UI의 최소 집합을 계산하는 기술 =&gt; 불필요한 UI 감소 및 성능 향상<ul>
<li>React와 관련해 자세한 Component, JSX는 뒤에서 다루겠습니다.</li>
</ul>
</li>
</ul>
<h1 id="nodejs-🌿">Node.js 🌿</h1>
<blockquote>
<p>Chrome의 V8엔진을 이용하여 브라우저에서 JavaScript를 해석하듯이 서버에서 JavaScript를 동작할 수 있도록 하는 플랫폼</p>
</blockquote>
<ul>
<li>Node.js 는 자바스크립트가 브라우저 밖에서도 동작하게 하는 환경 
=&gt; 자바스크립트의 &quot;탈웹&quot;</li>
<li>프로젝트 개발 환경을 구축하는 주요 도구들이 Node.js 기반입니다.</li>
</ul>
<h1 id="npm-🛠-node-package-manager">npm 🛠 (node package manager)</h1>
<blockquote>
<p>Node 기반의 패키지를 사용하기 위한 패키지 도구</p>
</blockquote>
<ul>
<li>npm 을 통해 다양한 패키지를 설치하고 버전을 관리할 수 있습니다.</li>
</ul>
<h1 id="cra-🛠-create-react-app">CRA 🛠 (Create-React-App)</h1>
<blockquote>
<p>리액트 프로젝트를 시작하는데 필요한 개발 환경을 세팅 해주는 도구</p>
</blockquote>
<ul>
<li><p>React는 UI 기능만을 제공하기에 개발자가 직접 구축해야하는 것들이 많습니다. 전반적인 스스템을 직접 구축할 수 있으니 원하는 환경에 맞게 최적화할 수 있지만, 반대로 신경쓸 것이 많기 때문에 처음 시작하는 단계에서는 직접 개발 환경을 구축하기 어려울 수 있다습니다. 이러한 문제를 해결하기 위해서 CRA가 만들어졌습니다.</p>
</li>
<li><p>CRA는 React로 웹 애플리케이션을 만들기 위한 환경을 제공합니다. CRA를 이용하면 하나의 명령어로 React 개발환경을 구축할 수 있습니다.</p>
</li>
<li><p>CRA에는 바벨과 웹팩과 같이 React 애플리케이션 실행에 필요한 다양한 패키지가 포함되어 있으며, 테스트 시스템, ES6+ 문법, CSS 후처리 등 거의 필수라고 할 수 있는 개발 환경도 구축해 줍니다.</p>
</li>
<li><p>이러한 개발 환경을 직접 구축할 경우 시간이 오래 걸릴 뿐 아니라 유지 보수도 해야 합니다. CRA를 이용하면 개발 환경 세팅을 해주기 때문에 기존 기능을 개선하거나 새로운 기능을 추가했을 때 패키지 버전만 올리면 됩니다.</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL12-HTML&CSS_7_flex]]></title>
            <link>https://velog.io/@lee-dongha/TIL12-HTMLCSS7flex</link>
            <guid>https://velog.io/@lee-dongha/TIL12-HTMLCSS7flex</guid>
            <pubDate>Wed, 23 Dec 2020 12:12:46 GMT</pubDate>
            <description><![CDATA[<h1 id="💵-flex-💵">💵 Flex 💵</h1>
<blockquote>
<p>레이아웃 배치 전용 기능으로 고안된 엘리먼트들의 크기나 위치를 쉽게 잡아주는 도구</p>
</blockquote>
<p>📍 flex를 이용하면 레이아웃을 매우 효과적으로 표현할 수 있습니다.</p>
<hr>
<h1 id="flex-레이아웃을-만들기-위한-기본적인-html-구조">Flex 레이아웃을 만들기 위한 기본적인 HTML 구조</h1>
<pre><code>&lt;div class=&quot;container&quot;&gt;
    &lt;div class=&quot;item&quot;&gt;helloflex&lt;/div&gt;
    &lt;div class=&quot;item&quot;&gt;abc&lt;/div&gt;
    &lt;div class=&quot;item&quot;&gt;helloflex&lt;/div&gt;
&lt;/div&gt;</code></pre><ul>
<li>부모 요소인 <code>div.container</code> :  Flex Container(플렉스 컨테이너)</li>
<li>자식 요소인 <code>div.item</code> : Flex Item(플렉스 아이템)<blockquote>
<p>컨테이너가 Flex의 영향을 받는 <strong>전체 공간</strong>이고, 설정된 속성에 따라 각각의 아이템들이 <strong>어떤 형태로 배치</strong>되는 것</p>
</blockquote>
</li>
</ul>
<p><img src="https://images.velog.io/images/lee-dongha/post/a426bf5b-78a9-4aad-ba71-26e11f4fa12d/flex-base%20(1).jpg" alt=""></p>
<hr>
<h1 id="flex-속성">Flex 속성</h1>
<ol>
  <li> 컨테이너에 적용하는 속성</li>
  <li> 아이템에 적용하는 속성</li>
</0l>

<h2 id="컨테이너에-적용하는-속성">컨테이너에 적용하는 속성</h2>
<h2 id="1-display">1. display</h2>
<p><code>dispaly : flex</code>를 사용하면 아이템들이 수평을 메인축으로 가로로 배치됩니다.</p>
<p><img src="https://images.velog.io/images/lee-dongha/post/06d472ea-0005-40d6-9576-fec65841b2d0/helloworld-201811-flex_01.png" alt=""></p>
<ul>
<li>아이템들이 배치된 방향을 메인축, 메인축(main axis)과 반대인 축을 교차축(cross axis)이라고 합니다.</li>
</ul>
<p><code>display : inline-flex</code>도 있습니다.
<code>flex</code>와 <code>inline-flex</code>의 차이는 컨테이너와 아이템 관계가 아니라 컨테이너와 주변 요소들과의 관계에 관련이 있습니다.
<code>flex</code>는 <code>block</code> 속성처럼, <code>inline-felx</code>는 <code>inline-flex</code> 속성처럼 동작합니다.
<img src="https://images.velog.io/images/lee-dongha/post/7e396da8-beb5-449a-8f2d-18943ae6165f/flex%E1%84%8B%E1%85%AA%20inline.png" alt=""></p>
<h2 id="2-flex-direction--배치-방향">2. flex-direction : 배치 방향</h2>
<blockquote>
<p>아이템들이 배치되는 축의 방향을 결정하는 속성</p>
</blockquote>
<p>메인축의 방향을 가로로 할 것인지 세로로 할 것인지를 정해줍니다.  </p>
<p><code>flex-direction: row;</code> 
: 기본값입니다. 아이템들이 가로 방향으로 배치됩니다. 👉</p>
<p><code>flex-direction: row-reverse;</code>
: 아이템들이 역순 가로 방향으로 배치됩니다. 👈</p>
<p><code>flex-direction: column;</code> 
: 아이템들이 세로 방향으로 배치됩니다. 👇</p>
<p><code>flex-direction: column-reverse;</code>
: 아이템들이 여순 세로 방향으로 배치됩니다. 👆</p>
<p><img src="https://images.velog.io/images/lee-dongha/post/1a35e92f-f0de-4ec7-897b-7bad87a01210/flex-direction.png" alt=""></p>
<h2 id="3-flex-wrap--줄넘김">3. flex-wrap : 줄넘김</h2>
<blockquote>
<p>컨테이너가 더 이상 아이템들을 한 줄에 담을 여유 공간이 없을 때
아이템 줄바꿈을 어떻게 할지 결정하는 속성</p>
</blockquote>
<p><code>flex-wrap : nowrap;</code> 
: 아이템들이 줄바꿈을 하지 않고 한 줄에 입력됩니다.</p>
<p><code>flex-wrap: wrap;</code>
: 아이템들이 자동적으로 줄바꿈을 합니다.</p>
<p><code>flex-wrap: wrap-reverse;</code>
: 아이템들이 역순으로 줄바꿈을 합니다.
<img src="https://images.velog.io/images/lee-dongha/post/442ae19d-8434-4b03-ade5-9430ab228187/flex-wrap.png" alt=""></p>
<h2 id="4-flex-flow">4. flex-flow</h2>
<blockquote>
<p><code>flex-direction</code>과 <code>flex-wrap</code>을 한꺼번에 지정할 수 있는 단축 속성</p>
</blockquote>
<p><code>flex-direction</code>, <code>flex-wrap</code>의 순으로 한 칸 떼고 써주시면 됩니다.</p>
<h2 id="5-justify-content--메인축-방향-정렬">5. justify-content : 메인축 방향 정렬</h2>
<blockquote>
<p>메인축 방향으로 아이템을들 정렬하는 속성</p>
</blockquote>
<p><code>justify-content: flex-start;</code> 
: 아이템들을 시작점으로 정렬합니다.</p>
<p><code>justify-content: flex-end;</code> 
: 아이템들을 끝점으로 정렬합니다.</p>
<p><code>justify-content: center;</code> 
: 아이템들을 가운데로 정렬합니다.</p>
<p><code>justify-content: space-between;</code>
: 아이템들의 사이에 동일한 간격을 만들어 줍니다.</p>
<p><code>justify-content: space-around;</code>
: 이템들의 둘레에 동일한 간격을 만들어 줍니다.</p>
<p><code>justify-content: space-evenly;</code>
: 아이템들의 사이와 양 끝에 동일한 간격을 만들어 줍니다. </p>
<p> <img src="https://images.velog.io/images/lee-dongha/post/dce8591a-462c-4261-bdab-7926fbe72bbb/justify-content2.png" alt=""></p>
<p> ❗️<code>space-around</code>와 <code>space-evenly</code>의 차이점 
 : <code>space-around</code>는 아이템에 둘레를 만들고 그 둘레에 동일한 간격을 만들어주는 것이기 때문에 중앙의 간격은 A아이템의 오른쪽 간격과 B아이템의 왼쪽 간격이 겹쳐 나오지만 끝에 있는 아이템의 끝부분은 겹치는 부분이 없어 상대적으로 간격이 좁게 보입니다. 하지만 <code>space-evenly</code>는 전체적으로 동일한 간격을 주기 때문에 모든 간격이 동일하게 나옵니다.</p>
<h2 id="6-align-items--수직축-방향-정렬">6. align-items : 수직축 방향 정렬</h2>
<blockquote>
<p> 수직축 방향으로 아이템을들 정렬하는 속성</p>
</blockquote>
<p><code>align-items: stretch;</code>
: 아이템들이 수직축 방향으로 끝까지 늘어납니다.</p>
<p><code>align-items: flex-start;</code>
: 아이템들을 시작점으로 정렬합니다.</p>
<p><code>align-items: flex-end;</code>
: 아이템들을 끝으로 정렬합니다.</p>
<p><code>align-items: center;</code>
: 아이템들을 가운데로 정렬합니다.</p>
<p><code>align-items: baseline;</code>
: 아이템들을 텍스트 베이스라인 기준으로 정렬합니다.</p>
<p><img src="https://images.velog.io/images/lee-dongha/post/10722a6d-2fc2-4ec1-b731-17b43c7c396c/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-12-23%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.11.31.png" alt=""></p>
<h2 id="7-align-content--여러-행-정렬">7. align-content : 여러 행 정렬</h2>
<blockquote>
<p><code>flex-wrap: wrap;</code>이 설정된 상태에서, 아이템들의 행이 2줄 이상 되었을 때의 수직축 방향 정렬을 결정하는 속성</p>
</blockquote>
<p><code>align-content: stretch;</code>
: 두 줄의 아이템들이 수직축 방향으로 끝까지 늘어납니다.</p>
<p><code>align-content: flex-start;</code>
: 두 줄의 아이템들을 시작점으로 정렬합니다.</p>
<p><code>align-content: flex-end;</code>
: 두 줄의 아이템들을 끝으로 정렬합니다.</p>
<p><code>align-content: center;</code>
: 두 줄의 아이템들을 가운데로 정렬합니다.</p>
<p><code>align-content: space-between;</code>
: 두 줄의 아이템들에 동일한 간격을 만들어 줍니다.</p>
<p><code>align-content: space-around;</code>
: 두 줄의 아이템들의 둘레에 동일한 간격을 만들어 줍니다.</p>
<p><code>align-content: space-evenly;</code>
: 두 줄의 아이템들의 사이와 양 끝에 동일한 간격을 만들어 줍니다.</p>
<p><img src="https://images.velog.io/images/lee-dongha/post/84ce853d-50ef-4c4c-82a6-d8e5a589e0f5/aling%20content.png" alt=""></p>
<hr>
<p>✔️ 다음 시간에는 Flex 아이템에 적용하는 속성들에 대해 알아보겠습니다 !</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL11-JS_basic 5_증가]]></title>
            <link>https://velog.io/@lee-dongha/TIL11-JSbasic-math</link>
            <guid>https://velog.io/@lee-dongha/TIL11-JSbasic-math</guid>
            <pubDate>Tue, 22 Dec 2020 00:18:20 GMT</pubDate>
            <description><![CDATA[<h1 id="증가">증가</h1>
<h2 id="num">num++</h2>
<pre><code>let a = 1;
let b = a++;
console.log(a);
console.log(b);</code></pre><p><code>a</code>의 값은 2가 나오고 <code>b</code>의 값은 1이 나옵니다.
<code>a++;</code>는 증가하기 전의 값을 반환하기 때문에 <code>b</code>의 값이 1이 나온 것입니다.
이후 <code>a++;</code>는 <code>a = a + 1</code>과 같은 의미로 <code>a</code>의 값에 <code>+1</code>을 한 것입니다.</p>
<p>위의 식은 아래와 같습니다.</p>
<pre><code>let a = 1;
let b = a;
a++;</code></pre><h2 id="num-1">++num</h2>
<p><code>++num;</code>    도 있습니다.</p>
<pre><code>let a = 1;
let b = ++a
console.log(a)
console.log(b)</code></pre><p><code>a</code>와 <code>b</code>의 값 모두 2가 나옵니다.
<code>b</code>의 값에 <code>+1</code>을 하기 전의 <code>a</code>의 값이 아니라 <code>+1</code>이 된 <code>a</code>의 값을 반환하는 것입니다.</p>
<p>위의 식은 아래와 같습니다.</p>
<pre><code>let a = 1;
a++;
let b = a;</code></pre><hr>
<p>📍 <code>--</code>도 동일한 방식으로 사용됩니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL10-JS_basic 4_함수]]></title>
            <link>https://velog.io/@lee-dongha/TIL10-JSbasic-function</link>
            <guid>https://velog.io/@lee-dongha/TIL10-JSbasic-function</guid>
            <pubDate>Mon, 21 Dec 2020 12:13:25 GMT</pubDate>
            <description><![CDATA[<h1 id="함수function">함수(Function)</h1>
<blockquote>
<p>하나의 특정한 작업을 수행하도록 설계된 독립적인 블록입니다.</p>
</blockquote>
<h2 id="함수의-형태">함수의 형태</h2>
<p><img src="https://images.velog.io/images/lee-dongha/post/f8d04993-b0c6-48e7-9cec-de8afbaaceb7/%E1%84%92%E1%85%A1%E1%86%B7%E1%84%89%E1%85%AE%E1%84%8B%E1%85%B4%20%E1%84%92%E1%85%A7%E1%86%BC%E1%84%90%E1%85%A2.png" alt=""></p>
<ul>
<li><strong><code>function</code></strong> 키워드로 시작하여</li>
<li><strong>함수 이름</strong>을 지어주고</li>
<li>함수를 알리는 <strong>소괄호</strong>(<code>()</code> : parentheses)를 열고 닫고</li>
<li>함수의 시작을 알리는 <strong>중괄호</strong>(<code>{</code> : curly bracket)을 열어줍니다.</li>
<li>실행할 코드를 중괄호와 중괄호 사이에 작성합니다. 함수의 <code>body</code> 라고 부르기도 합니다. 이 부분에 들여쓰기가 되어있습니다. 함수 내부에 있는 코드라는 것을 알기 좋게 하려고 들여쓰기 하였습니다.</li>
<li>return(반환) 할 것이 있다면 <code>return</code>문을 작성합니다.</li>
<li>중괄호(<code>}</code>: curly bracket)로 닫아줍니다. 함수의 작성이 끝났음을 알립니다.</li>
</ul>
<h2 id="함수의-호출과-반환">함수의 호출과 반환</h2>
<blockquote>
<p>함수를 불러 실행시키는 것을 &#39;함수 호출&#39;이라고 합니다.</p>
</blockquote>
<ul>
<li><p>함수 이름을 부르면, 함수 내에 있는 코드가 실행됩니다. </p>
<pre><code>unction checkCorrect() {
let hi = &quot;안녕하세요&quot;;

return hi;
}
</code></pre></li>
</ul>
<p>checkCorrect();</p>
<pre><code>
함수의 이름이 `checkCorrect`이고 `hi`를 반환하는 함수를 만들고 이름을 불러 실행시켰습니다.

-------

✔️`return`의 생략

- 모든 함수가 return을 포함해야 하는 것은 아니고 함수 내부에 return 키워드를 생략할 수도 있습니다. 

하지만 이 경우에도 undefined 라는 값을 반환합니다. 


</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[TIL9-JS_basic 3_변수]]></title>
            <link>https://velog.io/@lee-dongha/TIL9-JSbasic-variables</link>
            <guid>https://velog.io/@lee-dongha/TIL9-JSbasic-variables</guid>
            <pubDate>Mon, 21 Dec 2020 09:53:01 GMT</pubDate>
            <description><![CDATA[<h1 id="변수variables">변수(Variables)</h1>
<blockquote>
<p>물건을 보관했다가 필요할 때 다시 꺼내 사용하는 일종의 창고입니다.</p>
</blockquote>
<ul>
<li>데이터를 저장하는 장소 or 데이터를 읽고 쓰게 할 수 있는 장소입니다.<h2 id="변수의-생성과-값-할당">변수의 생성과 값 할당</h2>
<img src="https://images.velog.io/images/lee-dongha/post/1ea5cf1d-858f-4e93-a530-0fa332fc9920/%E1%84%87%E1%85%A7%E1%86%AB%E1%84%89%E1%85%AE%E1%84%8B%E1%85%B4%20%E1%84%89%E1%85%A2%E1%86%BC%E1%84%89%E1%85%A5%E1%86%BC_%E1%84%80%E1%85%A1%E1%86%B9%20%E1%84%92%E1%85%A1%E1%86%AF%E1%84%83%E1%85%A1%E1%86%BC.png" alt=""></li>
</ul>
<pre><code>var name = &quot;리오넬 메시&quot;;</code></pre><ul>
<li><p>var : variable의 약어로써, 변수 선언을 의미하는 키워드입니다.</p>
<ul>
<li>키워드(keyword) : 이미 특정한 목적으로 만들어져 있는 자바스크립트 요소입니다.</li>
<li><code>var</code> 외에 <code>let</code>, <code>const</code>가 있습니다.</li>
</ul>
</li>
<li><p>리오넬 메시는 name이라는 변수에 할당된 값입니다.</p>
</li>
</ul>
<h2 id="변수-이름">변수 이름</h2>
<ul>
<li>변수 이름은 원하는대로 정할 수 있지만 몇 가지 주의할 점이 있습니다.<blockquote>
<ul>
<li>한 파일에서 같은 변수 이름을 중복해서 사용할 수 없습니다.</li>
<li>대소문자 구문 - 변수이름, 함수이름, 연산자 모두 대소문자를 구분합니다. 따라서 myName과 MyName은 다른 변수입니다.</li>
<li>변수 이름을 정할 때, 첫 번째 문자는 반드시 글자나 밑줄(_), 달러기호($)중 하나 입니다.</li>
<li>두 번째 문자 부터는 글자, 밑줄, 달러, 숫자 중에서 자유롭게 쓸 수 있습니다.</li>
<li>변수이름, 함수이름 등 camelCase(카멜케이스) 방식으로 사용합니다.</li>
</ul>
</blockquote>
</li>
</ul>
<h3 id="camelcase">camelCase</h3>
<ul>
<li>변수(이름)의 생김새가 낙타 등처럼 울퉁불퉁하게 생겼습니다. 🐪</li>
<li>단어가 새로 시작할 때부터 대문자로 쓰면 됩니다.
📍 example<ul>
<li>firstSecond</li>
<li>myProfileImg</li>
<li>toDoListArray</li>
</ul>
</li>
</ul>
<h3 id="snake_case">snake_case</h3>
<ul>
<li>카멜 케이스와 달리 변수의 생김해가 뱀처럼 생겼습니다. 🐍</li>
<li>변수이름에 <code>-</code> 는 사용할 수 없으므로, <code>_</code> 를 사용한 것입니다. 하지만 잘 사용하지는 않습니다!
📍 example<ul>
<li>first_second</li>
<li>my_profile_img</li>
<li>to_do_list_array</li>
</ul>
</li>
</ul>
<hr>
<p>✔️ 변수명 짓기의 중요성</p>
<ul>
<li>다른 개발자, 혹은 먼 훗날의 자기 자신이 이 코드를 더욱 쉽게 이해할 수 있습니다. (코드의 가독성)</li>
<li>커뮤니케이션에 들어갈 리소스를 줄일 수 있어 개발의 효율이 높아지게 됩니다.</li>
</ul>
<p>그러므로 변수명을 지을 때는 모호하지 않고, 변수명 만으로도 의미가 추측 가능할 수 있도록 노력해야 합니다. <a href="https://www.curioustore.com/#!/">@변수명 사이트</a></p>
<hr>
<h2 id="var-let-const">var, let, const</h2>
<ul>
<li><p>JavaScript 의 변수 선언은 var 키워드를 통해서만 가능했는데, 버전이 올라가면서(ES5 to ES6) let과 const라는 키워드가 새롭게 생겼습니다.</p>
<pre><code>let name = &quot;wecode&quot;;
const birthday = 19910223;</code></pre></li>
<li><p><code>let</code> : 키워드를 사용하면 변수 값을 수정할 수 있습니다.</p>
</li>
<li><p><code>const</code> 키워드를 사용한 변수 값은 수정할 수가 없습니다.</p>
</li>
</ul>
<h2 id="변수-값-수정">변수 값 수정</h2>
<blockquote>
<p>let 키워드를 사용한 변수의 값을 수정</p>
</blockquote>
<ul>
<li>값을 수정할 때는 변수 앞에 let 키워드를 사용하지 않습니다.</li>
</ul>
<pre><code>(이미 선언해둔) 변수명 = 새로운 값;</code></pre><pre><code>let name = &quot;리오넬 메시&quot;;
name = &quot;요한 크루이프&quot;;</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[TIL8-JS_basic 2_주석]]></title>
            <link>https://velog.io/@lee-dongha/TIL8-JSbasic-b2-comment</link>
            <guid>https://velog.io/@lee-dongha/TIL8-JSbasic-b2-comment</guid>
            <pubDate>Mon, 21 Dec 2020 04:04:05 GMT</pubDate>
            <description><![CDATA[<h1 id="🖋주석commenting">🖋주석(Commenting)</h1>
<blockquote>
<p> &#39;코드를 작성하긴 했지만 브라우저에서 해당 코드를 실행시키지 말고 무시하라&#39;는 뜻으로 쓰입니다.</p>
</blockquote>
<ul>
<li>JavaScript 코드를 설명하고 더 읽기 쉽게 만드는 데 사용할 수 있습니다.</li>
<li>한 줄 주석과 여러 줄 주석이 있습니다.</li>
</ul>
<pre><code>console.log(&quot;이건 주석 처리가 안돼요 !&quot;)
-----------------------------------
// console.log(&quot;이건 한 줄 주석 !&quot;)
-----------------------------------
/* 을 사용하면  
여러 줄을
주석 처리 할 수 있어요 !
 */</code></pre><ul>
<li>한 줄 주석을 사용하는 것이 가장 일반적입니다.
여러 줄 주석(블럭 주석)은 종종 공식 문서에 사용됩니다.</li>
</ul>
<h2 id="주석을-사용하는-이유">주석을 사용하는 이유</h2>
<ul>
<li><strong>🤝협업을 할 때 의사소통을 위해서</strong> JavaScript 코드를 설명하고 더 읽기 쉽게 만드는 데 사용할 수 있습니다.</li>
<li><strong>대체 코드를 📲테스트 할 때</strong> JavaScript 주석을 사용하여 실행을 방지할 수 있습니다.</li>
<li><strong>코드의 🚧유지보수</strong>를 위해서 사용할 수 있습니다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL7-JS_basic 1_JS와 alert(), console.log()]]></title>
            <link>https://velog.io/@lee-dongha/TIL7-JS1</link>
            <guid>https://velog.io/@lee-dongha/TIL7-JS1</guid>
            <pubDate>Mon, 21 Dec 2020 03:00:58 GMT</pubDate>
            <description><![CDATA[<h1 id="javascript-소개">JavaScript 소개</h1>
<blockquote>
<p>웹 페이지와 상호작용하도록 만들어진 언어</p>
</blockquote>
<ul>
<li><p>브라우저에서 사용자의 행동을 처리하고, 데이터도 저장하고, 네트워크 응답과 요청을 처리하는 역할을 합니다.</p>
</li>
<li><p>프론트앤드 개발자의 가장 큰 역할은 JavaScript 를 사용하여 웹페이지를 dynamic 하고 interactive 하게 만드는 일입니다.</p>
</li>
<li><p>JavaScript를 실행시키려면</p>
<blockquote>
<p>브라우저가 존재해야하고,
HTML파일이 있어야하고,
HTML파일에서 JavaScript 파일을 연결시켜줘야 합니다.</p>
</blockquote>
</li>
</ul>
<h1 id="alert-">alert( )</h1>
<p><img src="https://images.velog.io/images/lee-dongha/post/41184f3b-9618-4861-a9f3-acb885603f6f/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-12-17%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2011.26.42.png" alt=""></p>
<ul>
<li><code>alert()</code> 함수는 이름 그대로 <strong>사용자에게 중요한 내용이나 경고창을 띄워줄 때 주로 사용</strong>하는 함수입니다.</li>
<li>HTML, CSS 코드 없이 JavaScript 코드로 알림창을 띄울 수 있습니다.<pre><code>alert(&quot;사용자에게 알릴 내용&quot;);
</code></pre></li>
</ul>
<pre><code>
# console.log()
- `alert()` 함수가 사용자에게 내용을 보여줬다면 `console.log( )`  함수는 **개발자가 확인하고 싶은 내용을 출력**하는 함수입니다.</code></pre><p>console.log(obj1 [, obj2, ..., objN]);
console.log(msg [, subst1, ..., substN]);</p>
<pre><code>------
# 📍약속어(Reserved Words)
&gt; 자바스크립트에서 이미 정의된, 약속된 단어입니다.

- 위에서 살펴본 `alert()` 함수, `console.log()` 함수가 약속어 입니다.
- 두 함수 외에도 다양한 약속어들이 있습니다.
- 말그대로 자바스크립트에서 **&#39;지정된&#39;** 단어이기 때문에 **다른 함수의 이름으로 사용할 수 없습니다.**



</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[TIL7- 개발자도구_1_개발자도구&Elements panel]]></title>
            <link>https://velog.io/@lee-dongha/TIL7-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%8F%84%EA%B5%AC</link>
            <guid>https://velog.io/@lee-dongha/TIL7-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%8F%84%EA%B5%AC</guid>
            <pubDate>Fri, 18 Dec 2020 14:49:32 GMT</pubDate>
            <description><![CDATA[<h1 id="개발자도구">개발자도구</h1>
<blockquote>
<p>개발을 도와주는 다양한 도구
브라우저에서 제공해주는 웹 저작 및 디버깅 도구</p>
</blockquote>
<ul>
<li><p>개발자 도구를 이용하면 HTML, CSS, JavaScript의 생산성을 극대화 할 수 있다.</p>
</li>
<li><p>디버깅? 
: 개발 단계 중에 발생하는 시스템의 논리적인 오류나 비정상적 연산(버그)을 찾아내고 그 원인을 밝히고 수정하는 작업 과정</p>
<ul>
<li>각 브라우저마다 개발자도구를 가지고 있다. </li>
<li>chrome 개발자도구가 대표적이다.</li>
</ul>
<hr>
</li>
</ul>
<h1 id="크롬-개발자도구">크롬 개발자도구</h1>
<blockquote>
<p>크롬 브라우저에 내장된 개발 관련 도구</p>
</blockquote>
<h2 id="개발자도구-창-띄우는-방법">개발자도구 창 띄우는 방법</h2>
<ul>
<li><p>웹 페이지에서 마우스 우클릭 후 <strong>&#39;검사&#39;</strong> 클릭
<img src="https://images.velog.io/images/lee-dongha/post/93a04e0a-0224-4a7c-b9c2-219beba5ba40/1.png" alt=""></p>
</li>
<li><p>웹 페이지 우측 상단의 <strong>Chrome 메뉴</strong>에서 <strong>&#39;도구 더보기&#39;</strong> 클릭 후 <strong>&#39;개발자 도구&#39;</strong>  클릭.
<img src="https://images.velog.io/images/lee-dongha/post/918c4a75-d0c4-4c45-a96f-e0006e5dacba/2.png" alt=""></p>
</li>
<li><p>키보드 단축키 사용 </p>
<blockquote>
<p>Windows : Ctrl+Shift+I 
Mac : Cmd+Opt+I</p>
</blockquote>
</li>
<li><p>개발자도구 화면
<img src="https://images.velog.io/images/lee-dongha/post/254229ac-a1ff-4c5d-be5f-abc7f894f7bb/3.png" alt=""></p>
</li>
</ul>
<h2 id="개발자도구-중-html-개발에-도움이-되는-기능">개발자도구 중 HTML 개발에 도움이 되는 기능</h2>
<blockquote>
<p>Elements : HTML 코드를 분석하고, 실시간으로 수정할 수 있는 도구
Sources :  현재 로딩된 웹페이지에서 사용된 리소스(이미지, 스크립트, 데이터)를 열람 할 수 있는 도구
Network : 서버와의 통신 내역을 보여주는 도구로, 존재하지 않는 리소스를 찾는데 도움이 됩니다. 
Audits : 웹 에플리케이션의 성능을 향상시킬 수 있는 방법들을 컨설팅해주는 도구</p>
</blockquote>
<h2 id="elements-panel">Elements panel</h2>
<p><img src="https://images.velog.io/images/lee-dongha/post/ed945f7d-6b5c-456d-9f74-2430109d7320/%E1%84%8B%E1%85%A6%E1%86%AF%E1%84%85%E1%85%B5%E1%84%86%E1%85%A5%E1%86%AB%E1%84%8E%E1%85%B3%E1%84%91%E1%85%A2%E1%84%90%E1%85%A5%E1%86%AF.png" alt=""></p>
<h3 id="elements-panel의-기능">Elements panel의 기능</h3>
<blockquote>
<p>HTML 코드를 분석하고 실시간으로 수정할 수 있는 도구 패널
DOM과 CSS를 자유롭게 조작하여 사이트의 레이아웃과 디자인을 테스트
변경된 사항들에 대해서는 실시간으로 웹 브라우저를 통해 확인</p>
</blockquote>
<ul>
<li><p><a href="https://developer.mozilla.org/ko/docs/Web/API/Document_Object_Model/%EC%86%8C%EA%B0%9C">DOM</a>이란?
: 문서 객체 모델(The Document Object Model, 이하 DOM)은 HTML, XML 문서의 프로그래밍 interface 이다. </p>
</li>
<li><p><code>NAVER</code>의 Elements panel에서 HTML, CSS코드를 일부 수정한 화면
<img src="https://images.velog.io/images/lee-dongha/post/2edb021f-e0be-4a5f-ab2c-c0bd29f51a8c/%E1%84%8B%E1%85%A6%E1%86%AF%E1%84%85%E1%85%B5%E1%84%86%E1%85%A5%E1%86%AB%E1%84%90%E1%85%B3.png" alt=""></p>
<h3 id="styles-부분-순서의-의미">Styles 부분 순서의 의미</h3>
<blockquote>
<p>개발자가 입력한 CSS 순서와 무관하게 상단부터 CSS 선택자의 우선순위에 따른 순서</p>
</blockquote>
</li>
<li><p>선택자 우선순위 순서 
: !important &gt; HTML에서 style을 직접 지정한 속성 &gt; id &gt; class &gt; tag &gt; 상속된 속성</p>
</li>
</ul>
<h3 id="user-agent-stylesheet">user agent stylesheet</h3>
<blockquote>
<p>각 브라우저마다 기본적 가지고 있는 default stylesheet(브라우저가 기본적으로 주는 css값)</p>
</blockquote>
<ul>
<li>브라우저 마다 기본적으로 설정되어 있는 속성 값이 다르기 때문에 개발 시작 단계에서 <code>reset.css</code> 혹은 <code>normalize.css</code> 파일에서 기본 스타일 값을 모두 초기화 시키고 작업을 시작하면 브라우저의 종류에 상관 없이 동일한 화면 출력 가능 하다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL6-HTML&CSS_6_컴포넌트]]></title>
            <link>https://velog.io/@lee-dongha/TIL-6Component</link>
            <guid>https://velog.io/@lee-dongha/TIL-6Component</guid>
            <pubDate>Thu, 17 Dec 2020 00:57:28 GMT</pubDate>
            <description><![CDATA[<h1 id="문제--color-hunt-컴포넌트를-만들자-">문제 : Color Hunt 컴포넌트를 만들자 !</h1>
<p><img src="https://images.velog.io/images/lee-dongha/post/08b89037-c50a-4e0f-8485-17b86ba64416/%E1%84%8F%E1%85%A5%E1%86%B7%E1%84%91%E1%85%A9%E1%84%82%E1%85%A5%E1%86%AB%E1%84%90%E1%85%B3%20%E1%84%86%E1%85%AE%E1%86%AB%E1%84%8C%E1%85%A6.png" alt=""></p>
<h2 id="조건">조건</h2>
<ul>
<li>font Awesome을 이용</li>
<li>색상박스는 class 속성값이 &#39;colorBox&#39;인 div로 구현</li>
<li>&#39;#709fb0&#39; 컬러값이 적힌 작은 박스는 span 태그로 하되, 마우스가 색상박스에 올려졌을 때만 보여질 수 있도록 해주기 위해 hover 선택자와 opacity CSS 속성을 이용</li>
<li>heart 버튼과 업로드 날짜 텍스트는 하단에 div 태그를 만들어 flex 속성을 이용해 간격을 유지</li>
<li>heart 버튼은 <code>button</code> 태그를 이용</li>
</ul>
<hr>
<h1 id="문제풀이">문제풀이</h1>
<h2 id="접근">접근</h2>
<ul>
<li>하나의 큰 div에 element를 구성</li>
<li>position 속성에서 relative와 absolute를 활용</li>
<li><code>opacity</code>  속성 활용 <ul>
<li>색상박스에 커서가 갔을 때 컬러값이 보일 수 있도록 <code>hover</code> 속성에 알맞은 selector 지정</li>
</ul>
</li>
<li><code>flex</code> 속성을 가진 두 개의 element의 간격을 제어하기 위해 <code>justify-content</code> 활용</li>
</ul>
<h2 id="html">HTML</h2>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html&gt;

&lt;head&gt;
    &lt;meta charset=&quot;utf-8&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot;&gt;
    &lt;title&gt;repl.it&lt;/title&gt;
    &lt;link href=&quot;style.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;/&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.8.2/css/all.min.css&quot;/&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;div class=&quot;out-box&quot;&gt;
        &lt;div class=&quot;colorBox&quot;&gt;
            &lt;span class=&quot;color&quot;&gt;#709fb6&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&quot;emo&quot;&gt;
            &lt;button&gt;&lt;i class=&quot;fas fa-heart&quot;&gt;&lt;/i&gt; 451&lt;/button&gt;
            &lt;div&gt;3days&lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/body&gt;


&lt;/html&gt;</code></pre><h2 id="css">CSS</h2>
<pre><code>* {
    box-sizing: border-box;
}

.out-box {
    width: 400px;
    height: 500px;
    border-radius: 10px;
    background-color: #EBEFF3;
    position: relative;
}

.colorBox {
    width: 350px;
    height: 350px;
    border-radius: 10px;
    background-color: #719FB0;
    position: relative;
    top: 30px;
    left: 25px;
}

span {
    position: relative;
    top: 310px;
    left: 0px;
    background-color: #578291;
    color: white;
    opacity: 0;
}

.colorBox:hover span{
    cursor: pointer;
    opacity: 1;
}

button {
    padding: 5px;
    font-size: 15px;
}

.emo {
    font-size: 20px;
    margin-top: 40px;
    width: 100%;
    display: flex;
    justify-content: space-around;
}</code></pre><h2 id="결과화면">결과화면</h2>
<p><img src="https://images.velog.io/images/lee-dongha/post/d46e1b88-a489-4c94-b4fc-976c83204004/%E1%84%8F%E1%85%A5%E1%86%B7%E1%84%91%E1%85%A9%E1%84%82%E1%85%A5%E1%86%AB%E1%84%90%E1%85%B3%20%E1%84%80%E1%85%A7%E1%86%AF%E1%84%80%E1%85%AA.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL5-HTML&CSS_5_검색바]]></title>
            <link>https://velog.io/@lee-dongha/TIL-search-bar</link>
            <guid>https://velog.io/@lee-dongha/TIL-search-bar</guid>
            <pubDate>Wed, 16 Dec 2020 23:50:30 GMT</pubDate>
            <description><![CDATA[<h1 id="문제--검색바를-만들자-">문제 : 검색바를 만들자 !</h1>
<p><img src="https://images.velog.io/images/lee-dongha/post/c3544e5a-60a7-4581-b13d-f99ba6de0f92/%E1%84%80%E1%85%A5%E1%86%B7%E1%84%89%E1%85%A2%E1%86%A8%E1%84%87%E1%85%A1%20%E1%84%86%E1%85%AE%E1%86%AB%E1%84%8C%E1%85%A6.png" alt=""></p>
<h2 id="조건">조건</h2>
<ul>
<li>CSS position 속성을 이용해서 아이콘들을 위치</li>
<li>두 회색박스에 같은 클래스이름을 사용해서 css를 한번에 이용</li>
<li>Enligh 는 <code>a</code> 태그를 이용해 구현</li>
<li><code>width</code>, <code>heigth</code>, <code>border-radius</code>, <code>font-size</code> 등은 주</li>
</ul>
<hr>
<h1 id="문제풀이">문제풀이</h1>
<h2 id="접근">접근</h2>
<ul>
<li>Weegle 이미지, 검색바와 회색박스, 제공 서비스로 3등분</li>
<li>CSS position 속성에서 relative와 absolute를 활용</li>
<li><code>a</code> 태그에서 underline 제거</li>
<li>&#39;구글 검색바&#39;와 유사하기 때문에 필요한 부분은 구글 페이지 &#39;검색&#39; 후 활용</li>
</ul>
<h2 id="html">HTML</h2>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;utf-8&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot;&gt;
    &lt;title&gt;repl.it&lt;/title&gt;
    &lt;link href=&quot;style.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;div class=&quot;wee&quot;&gt;
    &lt;img src=&quot;https://user-images.githubusercontent.com/61774575/95163201-34411c00-075c-11eb-9987-d6301acb4dab.png&quot; class=&quot;one&quot;&gt;
    &lt;/div&gt;

    &lt;div class=&quot;sec&quot;&gt;
      &lt;div class=&quot;relative ser&quot;&gt;
       &lt;input class=&quot;key&quot; type=&quot;text&quot; placeholder=&quot;&quot;&gt;
       &lt;img src=&quot;https://s3.ap-northeast-2.amazonaws.com/cdn.wecode.co.kr/icon/search.png&quot; class=&quot;absolute cir&quot;&gt;

       &lt;img src=&quot;https://img1.daumcdn.net/thumb/R720x0.q80/?scode=mtistory2&amp;fname=http%3A%2F%2Fcfile25.uf.tistory.com%2Fimage%2F995172345A54CB4B334526&quot; class=&quot;absolute kbd&quot;&gt;

       &lt;img src=&quot;https://www.searchpng.com/wp-content/uploads/2019/02/Voice-Search-Icon-PNG-715x715.png&quot; class=&quot;absolute mic&quot;&gt;
      &lt;/div&gt;

      &lt;center&gt;
       &lt;input type=&quot;submit&quot; value=&quot;Google 검색&quot;&gt;
       &lt;input type=&quot;submit&quot; value=&quot;I&#39;m feeling Lucky&quot;&gt;
      &lt;/center&gt;
    &lt;/div&gt;

    &lt;div class=&quot;three&quot;&gt;
      &lt;p&gt;Weegle 제공 서비스 &lt;a href=&quot;&quot; style=&quot;text-decoration:none&quot;&gt;: English&lt;/a&gt;&lt;/p&gt;
    &lt;/div&gt;
  &lt;/body&gt;
&lt;/html&gt;</code></pre><h2 id="css">CSS</h2>
<pre><code>* {
    box-sizing: border-box;
  }

  .wee {
    width: 300px;
    margin: 5px auto;
  }

  .one {
    margin: auto;
    width: 280px;
  }

  .relative {
    position: relative;
  }

  .absolute {
    position: absolute;
  }

  .key {
    width: 100%;
    border: solid 1px #bbb;
    border-radius: 8px;
    padding: 10px 12px 10px 12px;
    font-size: 14px;
  }

  img {
    margin: 0;
    width: 17px;
  }

  .sec {
    position: relative;
    margin: 0 auto;
    padding-top: 6px;
    width: auto;
    max-width: 484px;
  }

  .cir {
    top: 10px;
    left: 12px;
  }

  .kbd {
    top: 15px;
    right: 36px;
  }

  .mic {
    top: 10px;
    right: 12px;
  }

  center input {
    background-image: -webkit-linear-gradient(top,#f8f9fa,#f8f9fa);
      background-color: #f8f9fa;
      border: 1px solid #f8f9fa;
      border-radius: 4px;
      color: #3c4043;
      ont-family: &#39;Apple SD Gothic Neo&#39;,arial,sans-serif;
      font-size: 14px;
      margin: 11px 4px;
      padding: 0 16px;
      line-height: 27px;
      height: 36px;
      min-width: 54px;
      text-align: center;
      cursor: pointer;
      user-select: none;
  }

  .three {
    font-size: 10px;
    width: 150px;
    margin: auto;
  }</code></pre><h2 id="결과화면">결과화면</h2>
<p><img src="https://images.velog.io/images/lee-dongha/post/609ec6f2-0c4c-459a-845c-14f71a2e9339/%E1%84%80%E1%85%A5%E1%86%B7%E1%84%89%E1%85%A2%E1%86%A8%E1%84%87%E1%85%A1%20%E1%84%80%E1%85%A7%E1%86%AF%E1%84%80%E1%85%AA.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL4-HTML&CSS_4_에브리띵 인 더 layout]]></title>
            <link>https://velog.io/@lee-dongha/TIL-4-layout</link>
            <guid>https://velog.io/@lee-dongha/TIL-4-layout</guid>
            <pubDate>Wed, 16 Dec 2020 06:56:40 GMT</pubDate>
            <description><![CDATA[<h1 id="layout">Layout</h1>
<blockquote>
<p>웹페이지의 공간에 여러 구성 요소를 보기 좋게 효과적으로 배치하는 작업.</p>
</blockquote>
<h3 id="오늘-알아볼-레이아웃">오늘 알아볼 레이아웃</h3>
<ul>
<li>Position</li>
<li>Display</li>
<li>Float</li>
</ul>
<hr>
<h1 id="position">Position</h1>
<blockquote>
<p>태그를 어떻게 위치시킬지를 정의한다.</p>
</blockquote>
<h3 id="static">static</h3>
<blockquote>
<p>기본값, 다른 태그와의 관계에 의해 자동으로 배치되며 위치를 임의로 설정해 줄 수 없다.</p>
</blockquote>
<ul>
<li>모든 태그들은 처음에 position: static 상태이다. </li>
</ul>
<h3 id="relative">relative</h3>
<blockquote>
<p>원래 있던 위치를 기준으로 좌표를 지정한다.</p>
</blockquote>
<ul>
<li>태그의 위치를 약간 변경하고 싶을 때 사용한다.</li>
<li>top, right, bottom, left 프로퍼티를 사용해서 이동한다.</li>
</ul>
<h3 id="absolute">absolute</h3>
<blockquote>
<p>절대 좌표와 함께 위치를 지정해 줄 수 있다.</p>
</blockquote>
<ul>
<li>특정 부모에 대해 절대적으로 움직이는데 position: static을 가지고 있지 않은 가장 가까운 부모를 기준으로 움직인다.</li>
<li>부모 중에 position이 relative, fixed, absolute 하나라도 있으면 그 부모에 대해 절대적으로 움직인다.</li>
<li>일반적으로 absolute를 쓸 경우, 절대적으로 움직이고 싶은 부모에게 position: relative; 를 부여하면 된다.</li>
<li>부모 중에 포지션이 relative, absolute, fixed인 태그가 없다면 가장 위의 태그(body)가 기준이 된다.</li>
</ul>
<h3 id="fixed">fixed</h3>
<blockquote>
<p>스크롤과 상관없이 화면에 요소를 고정시킨다.</p>
</blockquote>
<ul>
<li>화면이 바뀌더라도, 스크롤을 내리더라도 고정된 위치를 설정할 수 있다.</li>
<li>브라우저 화면 크기만큼, 화면 내에서만 움직인다.</li>
</ul>
<h4 id="absolute와-fixed">absolute와 fixed</h4>
<p>포지션 고정이라는 공통점이 있지만 <code>absolute</code>는 position 속성을 지닌 부모를 기준으로 하고 <code>fixed</code>는 브라우저 화면을 기준으로 한다.</p>
<p><img src="https://images.velog.io/images/lee-dongha/post/250439c4-fef6-405b-b242-c2a60224eb09/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-12-16%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.53.47.png" alt=""></p>
<hr>
<h1 id="display">Display</h1>
<blockquote>
<p>요소를 어떻게 보여줄지를 결정한다.</p>
</blockquote>
<h2 id="inline">inline</h2>
<ul>
<li>텍스트(컨텐츠)의 길이만큼 존재한다.</li>
<li>줄 바꿈이 되지 않고, <code>width</code>와 <code>height</code>를 지정 할 수 없다.</li>
<li>inline 요소 뒤에 나오는 태그 또한 줄바꿈 되지 않고 바로 오른쪽에 표시된다.</li>
<li><code>span</code> 태그, <code>b</code> 태그, <code>a</code> 태그 등이 있다.</li>
</ul>
<h2 id="block">block</h2>
<ul>
<li>가로 영역을 모두 채우며, <code>block</code> 요소 다음에 등장하는 태그는 줄바꿈이 된 것처럼 보인다.</li>
<li><code>width</code>, <code>height</code> 속성을 지정 할 수 있다.</li>
<li><code>div</code> 태그, <code>p</code> 태그, <code>h</code> 태그, <code>li</code> 태그 등이 이에 해당됩니다.</li>
</ul>
<h2 id="inline-block">inline-block</h2>
<ul>
<li><code>block</code>과 <code>inline</code>의 중간 형태라고 볼 수 있는데, 줄 바꿈이 되지 않지만 크기를 지정 할 수 있다.</li>
<li><code>inline</code>처럼 줄 바꿈을 하지 않고 다른 요소와 함께 한 행에 위치할 수 있다.</li>
<li><code>block</code>처럼 <code>width</code>, <code>height</code> 등 프로퍼티를 적용할 수 있다.</li>
<li>반응형 웹페이지에 작동되지 않는 큰 단점이 있다.</li>
</ul>
<p><img src="https://images.velog.io/images/lee-dongha/post/db5b6c8c-bc8c-45a6-8af6-ef7f06716fd9/block_inline.png" alt="">
<img src="https://images.velog.io/images/lee-dongha/post/5843c32a-4c20-4edc-81d7-b275a5a6763c/line-block.png" alt=""></p>
<hr>
<h1 id="float">Float</h1>
<blockquote>
<p>정렬하기 위해서 사용하는 속성이다.</p>
</blockquote>
<ul>
<li><p>요소가 기본적인 문서 배치의 흐름에서 벗어나 요소의 모서리가 페이지의 왼쪽이나 오른쪽으로 이동하는 것을 말한다.</p>
</li>
<li><p>문서의 흐름과 관계없이 화면 배치를 유연하게 할 수 있다.</p>
</li>
<li><p><code>float</code> 속성 값에는 <code>left</code>, <code>right</code>, <code>none</code>이 있다.</p>
</li>
<li><p><code>float</code>을 사용한 요소는 문서의 흐름상에서 벗어난 상태이기 때문에 레이아웃을 무너뜨리게 되는 현상을 겪을 수 있다. <code>float</code>를 해제하면 이런 문제를 해결할 수 있다.</p>
<h2 id="float-해제">float 해제</h2>
<h3 id="clear">clear</h3>
</li>
<li><p><code>clear</code> 속성 값에는 <code>left</code>, <code>right</code>, <code>both</code>, <code>none</code>이 있다</p>
<blockquote>
<p>left : 왼쪽에 floating 된 요소를 지정 해제
right : 오른쪽에 floating 된 요소를 지정 해제
both : 왼쪽 오른쪽 모두 floating 된 요소를 지정 해제
none : 기본값(default), floating 을 해제하지 않음</p>
</blockquote>
</li>
<li><p><code>clear</code>를 사용하면 다음 요소는 <code>float</code>의 영향을 받지 않는다.</p>
<h3 id="overflow">overflow</h3>
<blockquote>
<p>내용이 요소의 크기를 벗어났을 때 어떻게 처리할지를 정하는 속성이다.</p>
</blockquote>
</li>
<li><p>종류</p>
<blockquote>
<p>visible : 박스를 넘어가도 보여준다
hidden : 박스를 넘어간 부분은 보이지 않는다.
scroll : 박스를 넘어가든 넘어가지 않든 스크롤바가 나온다다.
auto : 박스를 넘어가지 않으면 스크롤바가 나오지 않고, 박스를 넘어갈 때에는 스크롤바가 나온다.
initial : 기본값으로 설정한다.
inherit : 부모 요소의 속성값을 상속받는다.</p>
</blockquote>
</li>
<li><p>여기서 <code>overflow : hidden</code>을 <code>float</code> 태그의 부모 태그에 적용한다.</p>
</li>
</ul>
<p><img src="https://images.velog.io/images/lee-dongha/post/aa470c66-9086-4d9a-84e6-e04aca7ae9f7/float.png" alt=""></p>
<p><img src="https://images.velog.io/images/lee-dongha/post/cb1bb3ba-15a7-4c33-9bcc-d89b6f69c16c/clerarfloat.png" alt=""></p>
<p><img src="https://images.velog.io/images/lee-dongha/post/b8ef595f-1b2e-4857-a6c2-90796874577f/overflow.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL3-HTML&CSS_3_New things I learned]]></title>
            <link>https://velog.io/@lee-dongha/TIL-3-newthings</link>
            <guid>https://velog.io/@lee-dongha/TIL-3-newthings</guid>
            <pubDate>Tue, 15 Dec 2020 12:54:38 GMT</pubDate>
            <description><![CDATA[<h1 id="html-tags">HTML tags</h1>
<h2 id="doctype">&lt;!DOCTYPE&gt;</h2>
<ul>
<li>HTML태그가 아니라 html파일이 무슨 버전의 html을 사용했는지 브라우저에 알려주는 역할을 한다.</li>
</ul>
<h2 id="meta">&lt; meta &gt;</h2>
<pre><code>&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot;&gt;</code></pre><ul>
<li>디바이스의 가로 크기가 곧 웹 페이지의 가로와 같다는 의미이다.</li>
<li>모바일에서 웹사이트가 예쁘게 잘 보이려면 추가해야 하는 정보이다.</li>
<li>해당 정보를 추가하지 않으면 데스크탑 버전의 웹페이지가 축소되어 보이는 현상이 나타난다.</li>
</ul>
<h1 id="text-style">Text Style</h1>
<h2 id="텍스트-정렬">텍스트 정렬</h2>
<pre><code>#index.html 
&lt;span class=&quot;right&quot;&gt;span의 오른쪽 정렬&lt;/span&gt;
#style.css 
.right {
  text-align: right;
}
</code></pre><ul>
<li><p>결과
<img src="https://images.velog.io/images/lee-dongha/post/7e057b82-dc84-4c66-ab2c-5aa068ffa9c2/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-12-15%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.33.55.png" alt=""></p>
</li>
<li><p><code>span</code>에는 오른쪽 정렬이 되도록 클래스를 부여하였는데도 오른쪽 정렬이 되지 않았다.</p>
</li>
<li><p><code>span</code>은 inline-element이기 때문에, <code>span</code>이 차지하는 영역은 &quot;span의 오른쪽 정렬&quot; 만큼의 길이밖에 안 되기 때문입니다.</p>
</li>
<li><p>inline-element와 반대는 개념은 block-element이다. <a href="https://www.beautifulcss.com/archives/1179">참고 사이트</a></p>
</li>
</ul>
<h2 id="indent">&lt; indent &gt;</h2>
<pre><code>#index.html 
&lt;blockquote class=&quot;js-description&quot;&gt; 자바스크립트(영어: JavaScript)는 객체 기반의 스크립트 프로그래밍 언어이다. 이 언어는 웹 브라우저 내에서 주로 사용하며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능을 가지고 있다. 또한 Node.js와 같은 런타임 환경과 같이 서버 사이드 네트워크 프로그래밍에도 사용되고 있다. &lt;/blockquote&gt;
#style.css
.js-description {
  text-indent: 50px;
}</code></pre><ul>
<li>결과
<img src="https://images.velog.io/images/lee-dongha/post/4a107356-ef1a-4a6d-8f37-7dce7ce16d0f/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-12-15%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.53.38.png" alt=""></li>
<li>50px만큼 들여쓰기(공백)가 된다.</li>
<li><code>blockquote</code> 이란 태그는 인용구문을 넣을 때 쓰는 태그이다.</li>
<li>브라우저에서 <code>blockquote</code>태그에 양쪽 여백을 넣는 기본 스타일을 자동으로 적용했다.</li>
</ul>
<pre><code>&lt;p&gt;스페이스 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;넣는 예제&lt;/p&gt;</code></pre><ul>
<li>결과
<img src="https://images.velog.io/images/lee-dongha/post/747d7c0f-dc6b-4cc7-98e2-e9109eeb4edc/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-12-15%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.58.22.png" alt=""></li>
<li>&quot;자바스크립트(영어: JavaScript)는&quot; 다음에 스페이스를 10개 추가하여도 하나의 스페이스밖에 적용되지 않는다.</li>
<li>이럴 때는 스페이스를 의미하는 코드를 넣어주어야 한다.</li>
<li><code>&amp;nbsp;</code> 가 스페이스를 의미하는 코드이다.</li>
</ul>
<h1 id="box-sizing">box-sizing</h1>
<h2 id="box-sizing-1">box-sizing</h2>
<ul>
<li><code>content-box</code> : 콘텐트 영역을 기준으로 크기를 정한다.</li>
<li><code>border-box</code> : 테두리를 기준으로 크기를 정합니다.</li>
<li><a href="https://www.codingfactory.net/10630">참고 사이트</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL2-HTML&CSS_2_<img> vs <div>에 background-image]]></title>
            <link>https://velog.io/@lee-dongha/TIL-1-2img-vs-div-background-image</link>
            <guid>https://velog.io/@lee-dongha/TIL-1-2img-vs-div-background-image</guid>
            <pubDate>Tue, 15 Dec 2020 12:37:48 GMT</pubDate>
            <description><![CDATA[<h1 id="질문">질문</h1>
<blockquote>
<p>&quot;사이트에 이미지를 넣는 방법은 두 가지가 있습니다. <code>img</code> 태그를 사용하는 것과 <code>img</code> 태그에 background-image 속성을 추가하는 것. 두 가지 방법의 차이점과 각각 어떠한 경우에 사용하면 좋은지 설명해보세요.&quot;</p>
</blockquote>
<h1 id="답변">답변</h1>
<ul>
<li>HTML에서 <code>img</code> 태그를 사용하는 방법</li>
<li>CSS에서 background-image를 사용하는 방법</li>
</ul>
<p>두 방법의 차이점은 <strong>alt 속성의 유무</strong>이다.</p>
<p>아래 코드는 일반적인 <code>img</code> 태그 사용 방법이다.</p>
<pre><code>&lt;img src = &quot;이미지 경로&quot; alt=&quot;이미지에 대한 설명 (코멘트)&quot;&gt;</code></pre><p><code>img</code> 태그는 alt 속성 즉, 이미지에 대한 설명을 기본적으로 가지고 있다.
이 alt 속성은 <code>img</code> 태그에서 사용되는 이미지 로드가 실패할 경우 broken image와 함께 alt 텍스트를 작성했다면 텍스트의 내용이 함께 보인다. 그러므로 에러난 이미지가 무엇을 나타내려고 했는지 알 수 있다.
<img src="https://images.velog.io/images/lee-dongha/post/5d31525a-f08c-43e7-959c-31805b38e4f0/Chrome-Broken-Image-Icon.png" alt=""></p>
<p>하지만 background-image에 넣은 이미지가 에러가 나면 아무것도 나타낼 수 없다. background-image은 alt 속성이 없기 때문에 설명이 불가능하다. broken image도 나타나지 않아 결과적으로 이미지를 넣지 않은 것처럼 된다. </p>
<p>덧붙여 <code>img</code> 태그를 사용한다면 semantic element로서 &#39;이미지&#39;라는 의미를 가진 코드가 되지만 background-image의 경우 non-semantic element인 <code>div</code> 태그를 사용했기 때문에 아무런 의미를 가지고 있지 않다.</p>
<blockquote>
<p>사용자의 컨텐츠 이해를 더 쉽게 해주고 싶다면 <code>img</code> 태그를 사용해 의미를 명확하게 해주고 alt 속성을 이용해 설명을 해주면 된다. 그렇지 않다면 background-image를 사용하면 된다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL1-HTML&CSS_1_Semantic Web 그리고 Semantic Tag]]></title>
            <link>https://velog.io/@lee-dongha/TIL-1-Semantic-WebSemantic-Tag</link>
            <guid>https://velog.io/@lee-dongha/TIL-1-Semantic-WebSemantic-Tag</guid>
            <pubDate>Tue, 15 Dec 2020 08:42:43 GMT</pubDate>
            <description><![CDATA[<h1 id="단어">단어</h1>
<ul>
<li>Semantic Web과 Semantic Tag에 대해 알아보기 전에 Semantic이라는 단어를 먼저 알아봤다.</li>
</ul>
<blockquote>
<p>형용사로서 의미의, 의미론적인</p>
</blockquote>
<ul>
<li>먼저 단순하게 단어로만 해석을 해본다면 Semantic Web은 의미있는 웹이고 Semanticc Tag는 의미있는 태그라고 생각해 볼 수 있다.</li>
</ul>
<h1 id="semantic-web">Semantic Web</h1>
<ul>
<li>by 위키백과</li>
</ul>
<blockquote>
<p>시맨틱 웹(Semantic Web)은 &#39;의미론적인 웹&#39;이라는 뜻으로,현재의 인터넷과 같은 분산환경에서 리소스(웹 문서, 각종 화일, 서비스 등)에 대한 정보와 자원 사이의 관계-의미 정보(Semanteme)를 기계(컴퓨터)가 처리할 수 있는 온톨로지 형태로 표현하고, 이를 자동화된 기계(컴퓨터)가 처리하도록 하는 프레임워크이자 기술이다. 웹의 창시자인 팀 버너스리가 1998년 제안했고 현재 W3C에 의해 표준화 작업이 진행 중이다.</p>
</blockquote>
<ul>
<li><strong>의미론적인 웹</strong>이란 무엇일까?</li>
</ul>
<p>기존의 HTML로 작성된 문서는 컴퓨터의 해석보다는 사람의 시각적인 정보수용에 초점을 두었는데 시맨틱 웹은 컴퓨터의 해석 즉, <strong>의미에 초점</strong>을 두었다.</p>
<pre><code>#1 &lt;font size=&quot;6&quot;&gt;&lt;b&gt;Hello&lt;/b&gt;&lt;/font&gt;
#2 &lt;h1&gt;Hello&lt;/h1&gt;</code></pre><p>두 개의 코드를 실행하면 화면에 보이는 결과는 동일하게 &#39;Hello&#39;가 출력되지만 큰 차이가 있다. <strong>의미의 유무</strong>이다.</p>
<blockquote>
<p>#1의 코드는 아무런 의미를 가지고 있지 않다. 그냥 Hello라는 단어일뿐이다. 
#2의 코드는 <strong>제목을 의미</strong>한다. Hello라는 <strong>제목</strong>을 나타내는 것이다.</p>
</blockquote>
<p>사람이 볼 때는 동일한 값처럼 보여도 컴퓨터에게는 그렇지 않은 것이다.
#1의 코드는 단순히 시각 정보에 대한 데이터만 제공하고 있다. 시각적인 것은 컴퓨터에게는 아무런 의미가 없다.
하지만 #2의 코드는 컴퓨터가 의미정보를 해석할 수 있는 메타데이터이다. 컴퓨터가 <strong>&#39;제목&#39;이라는 의미</strong>를 알 수 있게 해준다.</p>
<ul>
<li>컴퓨터가 의미를 이해할 수 있다는 것은 <strong>큰 차이</strong>를 가져온다.</li>
</ul>
<p>우리가 &#39;Hello&#39;를 검색을 했을 때 아무런 의미가 없는 #1의 코드를 가지고 있는 웹페이지는 컴퓨터가 중요하지 않다고 생각하고 &#39;제목&#39;이라는 의미를 가진 #2의 코드가 있는 웹페이지를 상단에 노출시켜준다.</p>
<ul>
<li>Semantic Web</li>
</ul>
<blockquote>
<p>시맨틱 웹은 컴퓨터(기계)가 정보(의미)를 이해할 수 있는 웹이다. 컴퓨터가 정보를 이해할 수 있기 때문에 분석하여 의미론적인 자료를 만들어 거대한 데이터 베이스를 구축할 수 있다.</p>
</blockquote>
<p> _본인은 <strong>진화된 웹</strong>이라고도 생각한다.
단순 정보전달의 역할을 하던 컴퓨터가 사람을 대신해서 분석하고 자료를 제공해주는 역할을 하기 시작한 것이라고 생각한다.
_</p>
<p>#2의 코드에서 사용된 <code>h1</code>을 Semantic Tag라고 한다.
그렇다면 Semantic Tag는 무엇을까?</p>
<h1 id="semantic-tag">Semantic Tag</h1>
<ul>
<li>시맨틱 태그는 HTML5부터 도입되었다.</li>
</ul>
<p>HTML5 이전에는 아무런 의미가 없는 <code>div</code>와 <code>span</code> 태그에 <code>id</code>, <code>class</code> 속성을 붙여서 임의로 구역 혹은 역할을 부여했지만 HTML5에서는 시맨틱 태그를 사용해서 코드의 의미를 부여해서 가독성을 높인다.</p>
<ul>
<li>이해를 돕기 위한 이미지
<img src="https://images.velog.io/images/lee-dongha/post/fa2e243c-0a0c-41cc-af24-2d238dd3aa8b/html4&html5.png" alt=""></li>
</ul>
<p>HTML4에서는 <code>div</code> 태그에 <code>id=&quot;header&quot;</code> 속성을 부여했다면 HTML5에서는 미리 정의된 <code>header</code> 태그를 사용한다. <code>div</code> 태그를 사용했을 때보다 코드의 길이 줄었기 때문에 가독성이 좋고 정의된 태그를 사용하기 때문에 누구나 파악할 수 있다. 그리고 코드의 의미를 사람뿐만 아는 것이 아니라 <strong>컴퓨터도 의미를 이해</strong>할 수 있게 된다. 그렇기 때문에 <code>div</code>를 의미없는 태그, <code>header</code>는 의미있는 태그가 된다.</p>
<ul>
<li>의미있는 태그와 의미가 없는 태그는 무엇일까?<blockquote>
<p>non-semantic elements : <code>div</code>, <code>span</code>
semantic elements : <code>header</code>, <code>article</code>, <code>secetion</code>, <code>footer</code>...</p>
</blockquote>
</li>
</ul>
<p>두 요소의 차이점은 <strong>&#39;의미의 여부&#39;</strong>이다.
앞서 본 것처럼 <code>div</code> 태그는 아무런 의미를 가지고 있지 않지만 <code>header</code> 태그는 우리들이 봤을 때 바로 <strong>&#39;머리글&#39;이라는 의미</strong>를 가지고 있다는 것을 알 수 있다. 그렇기 때문에 header 태그와 같은 카테고리에 있는 태그들은 <strong>시맨틱 요소 즉, 의미있는 요소</strong>를 가지고 있고 있다.</p>
<p><em>&#39;시맨틱 요소 = 시맨틱 태그&#39; &lt;- 이렇게 생각해도 좋을 것 같다.</em></p>
<p>중요한 부분은 시맨틱 요소는 사람뿐만 아니라 <strong>브라우저도 이해</strong>할 수 있다. 그러기에 시맨틱 요소를 사용한다면 브라우저와 개발자 모두가 이해할 수 있게 된다. 의미가 정확해진만큼 검색엔진을 활용할 때 시맨틱 태그가 활용된 웹사이트일 수록 효과적으로 크롤링이 될 수 있다.</p>
<ul>
<li>Semantic Tag</li>
</ul>
<blockquote>
<p>시맨틱 태그는 브라우저, 검색엔진, 개발자 모두에게 콘텐츠의 의미를 명확히 설명하는 역할을 해서 웹페이지의 구조를 쉽게 이해할 수 있도록 정의된 태그이다.</p>
</blockquote>
<h1 id="용어정리">용어정리</h1>
<ul>
<li><p><a href="https://terms.naver.com/entry.nhn?docId=1224192&amp;cid=40942&amp;categoryId=32840">메타데이터</a> </p>
<blockquote>
<p>데이터에 관한 구조화된 데이터로, 다른 데이터를 설명해 주는 데이터.
또는 다른 데이터를 설명해주는 데이터.</p>
</blockquote>
</li>
<li><p>크롤링</p>
<blockquote>
<p>스크레이핑이라고도 하며 웹 페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 행위.</p>
</blockquote>
</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>