<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>rim_chaeeop.log</title>
        <link>https://velog.io/</link>
        <description>반갑습니다. 잘부탁드립니다.</description>
        <lastBuildDate>Wed, 08 Sep 2021 06:44:05 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>rim_chaeeop.log</title>
            <url>https://images.velog.io/images/rim_chaeeop/profile/6aa450d3-4037-44f6-b96e-7ec2244169f5/social.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. rim_chaeeop.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/rim_chaeeop" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[대구AI스쿨] JavaScript 개발일지 -4-]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-JavaScript-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80-4-</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-JavaScript-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80-4-</guid>
            <pubDate>Wed, 08 Sep 2021 06:44:05 GMT</pubDate>
            <description><![CDATA[<h1 id="□-자바스크립트---2강-33">□ 자바스크립트 - 2강 3/3</h1>
<h2 id="1-웹사이트의-주요-기능-만들기">1. 웹사이트의 주요 기능 만들기</h2>
<h3 id="1-버튼을-클릭했을-때-배경을-바꾸는-기능-개선하기">1) 버튼을 클릭했을 때, 배경을 바꾸는 기능 개선하기</h3>
<ul>
<li>버튼을 클릭했을 때, 임의의 헥사코드값으로 배경색에 변하면서 화면에 배경색의 헥사코드값이 출력되도록 함</li>
</ul>
<p>※ <strong>HEX Code</strong>(헥사코드) - <code>#000fff</code>와 같이 #과 0 ~ 9의 숫자와 a ~ f 사이의 알파벳의 6자리 조합으로 이루어져 있음</p>
<p>코드)</p>
<pre><code>[main.js]

var hex = document.getElementById(&#39;hex&#39;);
var btn = document.getElementById(&#39;btn&#39;);


// hex 태그와 btn태그가 정상적으로 따라왔는지 확인하기
// console.log(hex);
// console.log(btn);

btn.addEventListener(&#39;click&#39;, function() {
    // console.log(&quot;클릭&quot;);

    var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, &quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;, &quot;e&quot;, &quot;f&quot;];
    var color = &quot;#&quot;;

    for(var i = 0; i &lt; 6; i++) {

        var random = Math.floor(Math.random() * arr.length);
        color += arr[random];

    }

    document.body.style.backgroundColor = color;
    hex.textContent = color;

});</code></pre><p>◆ <strong>for문 작동 스크린샷</strong>
<img src="https://images.velog.io/images/rim_chaeeop/post/a899f26f-6ca4-4f6c-a6be-a8468a3fb318/btn_click_color_random.JPG" alt="btn_click_color_random"></p>
<p>◆ <strong>결과 스크린샷</strong>
<img src="https://images.velog.io/images/rim_chaeeop/post/d8c8a209-ba26-4480-9cb9-98935908e7c7/btn_click_color_random_result.JPG" alt="btn_click_color_random_result"></p>
<p>● <code>addEventListener( , )</code>의 2번째로 인수로 전달한 함수 자체를 변형하기</p>
<ul>
<li>위의 코드에서 2번째 인수로 넣은 함수를 별도의 함수명(<code>createColor</code>)을 지정하여 전역변수로 만든 후, 2번째 인수로 함수명을 넣어줌(콜백함수)</li>
</ul>
<p>코드)</p>
<pre><code>btn.addEventListener(&#39;click&#39;, createColor);

function createColor () {
    // console.log(&quot;클릭&quot;);

    var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, &quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;, &quot;e&quot;, &quot;f&quot;];
    var color = &quot;#&quot;;

    for(var i = 0; i &lt; 6; i++) {

        var random = Math.floor(Math.random() * arr.length);
        color += arr[random];

    }

    document.body.style.backgroundColor = color;
    hex.textContent = color;
};</code></pre><h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_08_javaScript2">Git 링크.2021_08_javaScript2</a></p>
<h2 id="2-javascript-활용-실습">2. javaScript 활용 실습</h2>
<h3 id="1-배열의-개체-안에-인용문구가-들어가-있고-이를-랜덤하게-출력하는-기능-구현하기">1) 배열의 개체 안에 인용문구가 들어가 있고, 이를 랜덤하게 출력하는 기능 구현하기</h3>
<pre><code>[html]

&lt;body&gt;

    &lt;button type=&quot;button&quot; id=&quot;btn&quot;&gt;클릭&lt;/button&gt;

    &lt;h1 id=&quot;quote&quot;&gt;인용문구가 들어갈 자리&lt;/h1&gt;
    &lt;span id=&quot;author&quot;&gt;작가가 들어갈 자리&lt;/span&gt;



    &lt;script src=&quot;js/main.js&quot;&gt;&lt;/script&gt;

&lt;/body&gt;</code></pre><pre><code>[main.js]

var arr = [
    {
        quote: &quot;아이들은 누구나 예술가이다&quot;,
        author: &quot;피카소&quot;
    },
    {
        quote: &quot;내면의 목소리는 들리지 않게 된다.&quot;,
        author: &quot;반 고흐&quot;
    },
    {
        quote: &quot;완벽을 두려워하지 말라&quot;,
        author: &quot;달리&quot;
    },
    {
        quote: &quot;영감이 오는 것을 기다리고 있을 수는 없다.&quot;,
        author: &quot;런던&quot;
    },
    {
        quote: &quot;의욕만 있으면 이런 노력만으로도 얼마든지 많은 생각을 찾을 수 있다.&quot;,
        author: &quot;수스&quot;
    },
];

// console.log(arr[0].quote);
// console.log(arr[0].author);


var quote = document.getElementById(&quot;quote&quot;);
var author = document.getElementById(&quot;author&quot;);
var btn = document.getElementById(&#39;btn&#39;);

btn.addEventListener(&#39;click&#39;, function() {

    var random = Math.floor(Math.random() * arr.length);

    quote.textContent = arr[random].quote;
    author.textContent = arr[random].author;

});</code></pre><p>◆ <strong>결과 스크린샷</strong>
<img src="https://images.velog.io/images/rim_chaeeop/post/3eec60fa-f554-490d-b8b4-a0a6bc7ead4e/click_random_quote_author_result.JPG" alt="click_random_quote_author_result"></p>
<p>◆ <strong>결과 스크린샷 2</strong>
<img src="https://images.velog.io/images/rim_chaeeop/post/477709cc-fa89-4f7e-b19c-4f9f8061a85e/click_random_quote_author_result_2.JPG" alt="click_random_quote_author_result_2"></p>
<h3 id="★-작성코드-1">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_09_javaScript2">Git 링크.2021_09_javaScript2</a></p>
<h3 id="2-input-태그를-사용하여-입력한-글자를-화면에-출력하기">2) input 태그를 사용하여, 입력한 글자를 화면에 출력하기</h3>
<ul>
<li>입력한 글자가 있을 경우 글자를 출력하고, 글자가 없을 경우 ‘input을 입력하라’는 에러문구 출력하기</li>
</ul>
<p>● <code>form</code> 태그에는 버튼을 눌러서 글자를 <code>submit</code>하게 되면, 작업을 수행 후 바로 창을 새로고침하게 됨
→ 새로고침을 막기위해 <code>main.js</code>의 <code>function( )</code>에서 <code>.preventDefault( );</code> 메서드를 작성함</p>
<p>● <code>preventDefault( );</code>는 태그의 본연의 기능을 정지시킬 수 있음</p>
<p>코드)</p>
<pre><code>[main.js]

form.addEventListener(&#39;submit&#39;, function(e) {

    e.preventDefault();
    console.log(e);

    console.log(&quot;제출&quot;);
});</code></pre><p>◆ <strong><code>preventDefault( );</code> 사용 결과 스크린샷</strong>
<img src="https://images.velog.io/images/rim_chaeeop/post/8532de28-59db-4935-9e67-9f7dde3b6c76/fuction_preventDefault_result.JPG" alt="fuction_preventDefault_result"></p>
<p>● <code>.reset( );</code> 메서드 – 내용을 초기화 할 때 사용. 여기서는 <code>input</code>의 입력 내용을 초기화할 때 사용함.</p>
<pre><code>form.reset();</code></pre><p>● <code>if</code>문에서 <code>else</code>의 경우 새로운 클래스 명을 추가하기</p>
<ul>
<li><p><code>.classList.add( );</code>를 사용하여 적용시킴</p>
<pre><code>else {

      feedback.classList.add(&#39;show&#39;);

  }</code></pre></li>
</ul>
<p>● 일정 시간이 지난 후, <code>show</code> 클래스가 사라지도록 하는 기능 적용</p>
<ul>
<li><code>setTimeout( , );</code> 메서드를 사용함 → 2가지 인수를 받음, 첫 번째는 콜백함수, 두 번째는 시간을 받음</li>
</ul>
<p>예시)</p>
<pre><code>[main.js]

setTimeout(function() {
            feedback.classList.remove(&#39;show&#39;);
}, 2000);</code></pre><h3 id="★-작성코드-2">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_09_javaScript2_1">Git 링크.2021_09_javaScript2_1</a></p>
<h3 id="3-이미지의-좌-우측을-클릭-시-다른-이미지로-바뀌도록-하는-기능-만들기">3) 이미지의 좌, 우측을 클릭 시, 다른 이미지로 바뀌도록 하는 기능 만들기</h3>
<p>● <code>document.querySelectorAll( );</code>을 사용하여 <code>html</code> 영역 가져오기</p>
<ul>
<li>가져온 <code>html</code> 영역은 배열 형태로 저장됨</li>
</ul>
<p>예시)</p>
<pre><code>document.querySelectorAll(&#39;.btn&#39;);</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/a50c7115-e0a9-4e44-9a16-02fd593490c1/querySelectorAll_btn.JPG" alt="querySelectorAll_btn"></p>
<p>※ <code>‘.btn’</code> 클래스 영역을 가져옴</p>
<p>● <code>prev</code>나 <code>next</code> 버튼 클릭 시, 화면 시점이 페이지 상단으로 올라가는 기능 멈추기</p>
<ul>
<li><code>html</code>의 <code>a</code> 태그의 고유 기능으로 이를 멈춰야 함</li>
<li><code>.preventDefault( );</code>를 사용함</li>
</ul>
<p>예시)</p>
<pre><code>[main.js]

document.querySelectorAll(&#39;.btn&#39;).forEach(function (element, index) {

    element.addEventListener(&#39;click&#39;, function(e) {

        e.preventDefault();           

    });

});</code></pre><p>● 클릭한 버튼이 어떤 버튼인지 확인하는 방법</p>
<ul>
<li><code>.target</code>을 사용하여 어떤 버튼을 사용했는지 확인함</li>
</ul>
<p>예시)</p>
<pre><code>if(e.target.classList.contains(&#39;prevBtn&#39;)) {
            console.log(&quot;Prev&quot;);
}

if(e.target.classList.contains(&#39;nextBtn&#39;)) {
            console.log(&quot;Next&quot;);
}</code></pre><p>◆ <strong>결과 스크린샷</strong>
<img src="https://images.velog.io/images/rim_chaeeop/post/9f6667cf-a96f-471e-b18c-be7f5747c672/image_move_ready.JPG" alt="image_move_ready"></p>
<p>◆ <strong>결과 스크린샷(prev)</strong>
<img src="https://images.velog.io/images/rim_chaeeop/post/33e2b56a-e4c1-4e15-b406-ad6c72d2dc84/image_move_prev.JPG" alt="image_move_prev"></p>
<p>◆ <strong>결과 스크린샷(next)</strong>
<img src="https://images.velog.io/images/rim_chaeeop/post/95553b6c-034c-4934-9fe7-5de9872a530d/image_move_next.JPG" alt="image_move_next"></p>
<h3 id="★-작성코드-3">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_09_javaScript2_2">Git 링크.2021_09_javaScript2_2</a></p>
<h3 id="-조건문과-반복문의-작동-순서를-알고자-할-때-도움이-되는-사이트--httpspythontutorcom">※ 조건문과 반복문의 작동 순서를 알고자 할 때, 도움이 되는 사이트 – <a href="https://pythontutor.com/">https://pythontutor.com/</a></h3>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] JavaScript 개발일지 -3-]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-JavaScript-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80-3-</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-JavaScript-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80-3-</guid>
            <pubDate>Fri, 03 Sep 2021 02:47:21 GMT</pubDate>
            <description><![CDATA[<h1 id="□-자바스크립트---2강-23">□ 자바스크립트 - 2강 2/3</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_08_javaScript2">Git 링크.자바스크립트2</a></p>
<h2 id="1-반복문">1. 반복문</h2>
<ul>
<li>조건을 만족하면 명령을 반복해서 실행함</li>
<li>무한반복(루프)에 빠지지 않도록 ‘조건’이 어느 시점에서 마무리 될 수 있도록 설정해야 함</li>
</ul>
<p>※ 예시 → 구구단 2단의 경우</p>
<ul>
<li>고정값 : <code>console.log(2 * );</code></li>
<li>일정한 규칙을 갖고 있는 가변값  : 1, 2, 3, 4, 5, 6, 7, 8, 9</li>
</ul>
<h3 id="○-반복문의-종류">○ 반복문의 종류</h3>
<p>● <strong>while</strong></p>
<pre><code>var num = 1;

while (num &lt; 10) {
    console.log(2 * num);
    num++;
}
console.log(&quot;반복문 종료&quot;);</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/a0f7d72f-12da-4520-8bc1-9378ccd4ed5e/while_2x.JPG" alt="while_2x"></p>
<ul>
<li><code>num = 1;</code> → 반복문의 시작점</li>
<li><code>while(num &lt; 10)</code> → n이 10보다 작으면 { } 내용을 실행함</li>
<li><code>num++;</code> → num의 값을 1을 더함</li>
</ul>
<p>● <strong>do ~ while</strong></p>
<ul>
<li>명령을 먼저 실행한 후, 반복문을 수행함</li>
</ul>
<p>예시)</p>
<pre><code>var i = 12;

do {
    console.log(i);
    i++;    
} while (i &lt; 10);</code></pre><ul>
<li><code>do { }</code> 의 명령을 실행한 후 <code>while</code>이 실행되는데, 조건이 거짓이기에 ‘<code>12</code>’만 console에 출력되고 반복문이 끝남</li>
</ul>
<p>● <strong>for</strong></p>
<ul>
<li>가장 많이 사용되는 반복문</li>
<li><code>for( )</code> 안에 고정값과 일정한 규칙을 갖고 있는 가변값을 넣어주어야 함</li>
<li><code>for ( )</code> 안에서 작성하는 규칙은 반드시 지켜야 함( <code>( 변수, 조건, 가변값)</code> )</li>
</ul>
<p>예시)</p>
<pre><code>for (var i = 1; i &lt; 10; i++) {
    console.log(3 * i);
}</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/71647e5c-2748-4988-a8a5-0b095e86906d/for_3x.JPG" alt="for_3x"></p>
<p>● <strong>중첩 반복문</strong></p>
<ul>
<li><code>for</code> 반복문 안에 <code>for</code> 반복문을 추가로 사용하여 반복문을 만듬</li>
<li>반복문의 실행 순서에 대해서 이해가 필요함</li>
</ul>
<p>예시) 구구단 2단 ~ 9단 출력</p>
<pre><code>for (i = 2; i &lt; 10; i++) {
    for(j = 1; j &lt; 10; j++) {
        console.log( i * j);
    }
}</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/05bd4172-070d-4408-b5ac-8a1b5a89fce5/for_for_2_9x.JPG" alt="for_for_2_9x"></p>
<ul>
<li>첫 번째 <code>for</code>문에서 <code>i=2</code> 가 참인 상태에서 <code>j=1</code>에서 <code>j=9</code>까지 반복된 후, <code>i=3</code>으로 바뀌고 다시 <code>j=1</code>에서 <code>j=9</code>까지 반복함</li>
<li>이를 <code>i=9</code>까지 반복하고 <code>i=10</code>이 되면서 반복문의 조건이 거짓이 돼서 반복을 종료함</li>
</ul>
<p>● <strong>break</strong></p>
<ul>
<li>반복문을 원하는 시점에서 바로 종료하고 싶을 때 사용함</li>
</ul>
<p>예시) 구구단 2단에서 <code>i=5</code>가 되면 바로 종료하고자 할 경우</p>
<pre><code>for (var i = 1; i &lt; 10; i++) {

    if(i === 5) {
        break;
    }

    console.log(2 * i);
}</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/bb0c214a-4162-4653-ac51-c410dd2cdb10/break_2x.JPG" alt="break_2x"></p>
<p>● <strong>continue</strong></p>
<ul>
<li>반복문에서 원하는 시점의 반복을 넘기고자 할 경우 사용함</li>
</ul>
<p>예시) 구구단 3단에서 <code>i=5</code>가 되면 이를 넘기고, <code>i=6</code>부터 반복을 계속하게 할 경우</p>
<pre><code>for (var i = 1; i &lt; 10; i++) {

    if(i === 5) {
        continue;
    }

    console.log(3 * i);
}</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/9b672bb1-93b9-4e3d-a128-4073d8326ef0/continue_3x.JPG" alt="continue_3x"></p>
<p>● <strong>배열의 내용을 반복문을 사용해서 출력하기</strong></p>
<p>예시)</p>
<pre><code>var arr = [&#39;바나나&#39;, &#39;사과&#39;, &#39;수박&#39;];

for (var i = 0; i &lt; 3; i++) {
    console.log(arr[i])
}</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/f879320f-0b90-443d-bb34-db9d7c983957/for_array_fruit.JPG" alt="for_array_fruit"></p>
<p>※ 배열의 데이터의 개수를 모르지만, 끝까지 반복하고자 할 경우 – 조건에서 <code>array</code>의 <code>length</code>를 사용함</p>
<p>예시)</p>
<pre><code>var arr = [&#39;바나나&#39;, &#39;사과&#39;, &#39;수박&#39;, &#39;포도&#39;, &#39;배&#39;];
console.log(arr);
console.log(arr.length);

for (var i = 0; i &lt; arr.length; i++) {
    console.log(arr[i])
}</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/b59b21ef-1775-4260-b3b2-24d13e8cb966/for_array_length.JPG" alt="for_array_length"></p>
<p>● <strong>for ~ in</strong></p>
<ul>
<li>범위지정을 할 필요 없이 <code>in</code> 이 범위가 되어 반복하도록 함</li>
</ul>
<p>예시)</p>
<pre><code>var arr = [&#39;바나나&#39;, &#39;사과&#39;, &#39;수박&#39;, &#39;포도&#39;, &#39;배&#39;];

for (var i in arr) {
    console.log(i);
    console.log(arr[i]);
}</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/f3cdb82a-7238-460e-b890-7d565ab833e5/for_in_arr.JPG" alt="for_in_arr"></p>
<p>● <strong>arr.forEach()</strong></p>
<ul>
<li>배열에서 사용가능한 메서드, <code>for ~ in</code>가 유사함</li>
<li>익명함수, 콜백함수를 사용함</li>
<li><code>return</code> 활용불가능</li>
</ul>
<p>예시)</p>
<pre><code>var arr = [&#39;야구&#39;, &#39;축구&#39;, &#39;농구&#39;, &#39;배구&#39;];

arr.forEach(function(element, index) {
    console.log(element);
    console.log(index);
})</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/59a5b47a-0d53-49e5-9899-ff100c7dd384/forEach_ele_index.JPG" alt="forEach_ele_index"></p>
<ul>
<li><code>element</code>는 배열의 데이터를 의미하고, <code>index</code>는 배열의 좌표를 의미함</li>
<li><code>function( )</code>의 순서는 바뀌면 안됨, ( ① element, ② index ) 순서여야 함</li>
</ul>
<p>● <strong>arr.map()</strong></p>
<ul>
<li><code>arr.forEach()</code>와 유사하지만 <code>return</code>을 사용 가능한 메서드</li>
</ul>
<p>예시) </p>
<pre><code>var arr = [&#39;기타&#39;, &#39;드럼&#39;, &#39;베이스&#39;, &#39;보컬&#39;];

arr.map(function(element, index) {
    console.log(element);
    console.log(index);
})</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/d3e3f922-746b-4a3b-8a5f-c4d652ca96c6/arr_map_ele_index.JPG" alt="arr_map_ele_index"></p>
<pre><code>var result = arr.map(function(element, index) {
    return element + &quot; &quot; + &quot;10&quot;;    
})

console.log(result);</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/f8359659-1b06-4397-a255-a404b577e5cf/arr_map_return.JPG" alt="arr_map_return"></p>
<h3 id="○-객체에서-활용할-수-있는-반복문---for--in을-사용해-객체-안의-데이터을-확인하기">○ 객체에서 활용할 수 있는 반복문 - for ~ in을 사용해 객체 안의 데이터을 확인하기</h3>
<p>예시)</p>
<pre><code>var student = {
    name: &quot;Kim&quot;,
    age: 20,
    skills: [&quot;자바스크립트&quot;, &quot;HTML&quot;, &quot;CSS&quot;],

    sum: function(num1, num2) {
        console.log(num1 + num2);
    }
}

// for ~ in

for (var prop in student) {

    console.log(prop + &quot; = &quot; + student[prop]);
}</code></pre><p>※  <code>for ~ in</code> 사용시, 객체 안의 데이터에 접근하는 방법 중 한가지를 사용
① <code>student.name</code>
② <code>student[&#39;name&#39;]</code> → 이 방법을 사용함</p>
<p><img src="https://images.velog.io/images/rim_chaeeop/post/de13a419-e671-41ee-99eb-acae6ae83b77/for_in_student.JPG" alt="for_in_student"></p>
<h2 id="2-string문자열이-가지고-있는-주요-기능-property-메서드">2. String(문자열)이 가지고 있는 주요 기능 (property, 메서드)</h2>
<p>● <strong>length</strong> – 문자열의 길이를 가져오는 property, 공백(스페이스)의 길이도 포함해서 길이를 가져옴
예시)</p>
<pre><code>var txtLength = &quot; Hello world ! &quot;;

console.log(txtLength.length);</code></pre><p>→ <code>console</code>에서 ‘<code>15</code>’가 출력됨(문자 10 + 특수문자 1 + 공백 4 ) </p>
<p>● <strong>trim( )</strong> - 문자열의 앞뒤 공백들을 제외하고 출력함
예시)</p>
<pre><code>var txtLength = &quot; Hello world ! &quot;;

console.log(txtLength);
console.log(txtLength.length);
console.log(txtLength.trim());
console.log(txtLength.trim().length);</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/622609c3-288b-41a0-a358-b5f5e4c1a9af/string_length_trim.JPG" alt="string_length_trim"></p>
<p>● <strong>charAt( )</strong> - 문자를 추출할 때 사용하는 메서드
예시)</p>
<pre><code>var str = &quot;Nice to meet you&quot;;

console.log(str.charAt(0));</code></pre><p>→ <code>console</code>에서 ‘<code>N</code>’이 출력됨</p>
<p>※ 문자열의 길이를 모르는 상황에서, 마지막 문자를 출력하고 싶을 경우
예시)</p>
<pre><code>var str = &quot;Nice to meet you&quot;;

console.log(str.length);
console.log(str.charAt(str.length – 1));</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/d8f18b39-2004-4b35-8611-da3fb39fdfa6/charAt_length.JPG" alt="charAt_length"></p>
<p>● <strong>slice( )</strong> - 문자를 추출할 때 사용하는 메서트, 출력되는 범위를 정할 수 있음
예시)</p>
<pre><code>var str = &quot;Nice to meet you&quot;;

console.log(str.slice(0, 6));
console.log(str.slice(2, 6));
console.log(str.slice(2));</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/6e76e572-8885-4efc-8d30-8a68cfd9674e/slice_ex.JPG" alt="slice_ex"></p>
<p>※ <code>str.slice(2, 6)</code>의 경우, 좌표값 2와 6 사이의 교집합이 되는 부분을 출력함
※ <code>str.slice(2)</code>와 같이 시작 좌표만 설정하면 시작좌표에서부터 끝까지의 문자를 출력함</p>
<p>●** split( )** - 일정한 규칙으로 문자를 잘라낼 때, 잘라낸 문자를 배열 안에 담을 때 사용하는 메서드
예시)</p>
<pre><code>var str = &quot;Nice to meet you&quot;;

console.log(str.split(&#39; &#39;));</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/c566cc48-d2e8-4f61-bf51-d012168e4532/split_ex.JPG" alt="split_ex"></p>
<p>예시2)</p>
<pre><code>var str1 = &quot;apple/pear/grape&quot;

console.log(str1.split(&#39;/&#39;));</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/85bf754c-8ba9-4d75-b5f8-9015e50d0ef9/split_ex2.JPG" alt="split_ex2"></p>
<p>※ <code>split( )</code>을 사용하게 되면, 데이터 타입이 배열로 바뀌게 됨</p>
<p>● <strong>replace( )</strong> - 원하는 문자를 지정한 후, 이를 교체하고자 할 때 사용하는 메서드
예시)</p>
<pre><code>var str = &quot;This place is good&quot;;

console.log(str);
console.log(str.replace(&#39;place&#39;, &#39;apple&#39;));</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/740b71e6-c102-4391-bec2-1f1526dac21f/replace_ex.JPG" alt="replace_ex"></p>
<p>● <strong>indexOf( )</strong> – 문자열에서 단어를 검색한 후, 단어가 시작하는 위치의 좌표를 알려주는 메서드
예시)</p>
<pre><code>var str = &quot;This place is good&quot;;

console.log(str.indexOf(&#39;place&#39;));</code></pre><p>→ ‘<code>place</code>’가 시작하는 좌표값 ‘<code>5</code>’가 <code>console</code>에 출력됨</p>
<p>※ 단어가 존재하지 않을 경우 → ‘<code>-1</code>’을 반환시킴
※ 단어 검색시, 대소문자를 구분함
※ 여러 개의 같은 단어가 문자열에 존재할 경우, 최초로 먼저 나오는 값을 반환시킴</p>
<p>● 모든 문자를 대문자 혹은 소문자로 변환하는 메서드</p>
<p>① <strong>toUpperCase()</strong> - 대문자로 변환
② <strong>toLowerCase()</strong> - 소문자로 변환</p>
<p>예시)</p>
<pre><code>var str = &quot;This place is good&quot;;

console.log(str.toUpperCase());
console.log(str.toLowerCase());</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/b0ef2852-9151-4393-9577-6b84c4dcc1ad/toUpperCase_toLowerCase.JPG" alt="toUpperCase_toLowerCase"></p>
<p>실무 사용 예시)</p>
<pre><code>var search = prompt(&quot;검색어를 입력해 주세요&quot;);

if(search.toLocaleLowerCase() === &quot;apple&quot;) {

    console.log(&quot;사과 데이터를 출력한다.&quot;);

} else {
    console.log(&quot;False&quot;);
}</code></pre><p>→ 대문자 ‘<code>APPLE</code>’를 입력하더라도 <code>true</code>값이 출력됨</p>
<h2 id="3-array배열에서-가지고-있는-주요-기능-property-메서드">3. Array(배열)에서 가지고 있는 주요 기능 (property, 메서드)</h2>
<p>● <strong>push( )</strong> - 배열에 새로은 데이터를 추가할 때 사용하는 메서드(배열 뒤쪽에 삽입됨)
예시)</p>
<pre><code>var arr = [&quot;사과&quot;, &quot;배&quot;, &quot;수박&quot;];
arr.push(&quot;포도&quot;);
console.log(arr);

arr.push(&quot;체리&quot;, &quot;참외&quot;);
console.log(arr);</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/fc26ac89-89e7-4690-8544-398c4ef11bc9/array_push_ex.JPG" alt="array_push_ex"></p>
<p>※ 배열 앞쪽에 삽입하고자 할 때는 <strong>unshift( )</strong>를 사용함</p>
<p>● 배열 안의 데이터를 삭제하고자 할 때 사용하는 메서드 </p>
<p>① <strong>pop( )</strong> - 배열의 뒤쪽에 있는 데이터를 삭제
② <strong>shift( )</strong> - 배열의 앞쪽에 있는 데이터를 삭제</p>
<p>예시)</p>
<pre><code>var arr = [&quot;사과&quot;, &quot;배&quot;, &quot;수박&quot;];

arr.pop();
console.log(arr);

arr.shift();
console.log(arr);</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/44590363-a0f2-400c-afbb-c40526fd5f0d/pop_shift_ex.JPG" alt="pop_shift_ex"></p>
<p>● <strong>join( )</strong> - 배열 안의 데이터를 규칙을 지정하여 문자열로 나타내는 메서드</p>
<p>예시)</p>
<pre><code>var arr1 = [&quot;야구&quot;, &quot;축구&quot;, &quot;농구&quot;];
var str1 = arr1.join(&#39;, &#39;);

console.log(str1);</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/9c3567dd-4db3-435f-b839-8a02a6849ab4/join_ex.JPG" alt="join_ex"></p>
<p>● <strong>concat( )</strong> - 배열들을 합치고자 할 때 사용하는 메서드</p>
<p>예시)</p>
<pre><code>var arr1 = [&quot;농구&quot;, &quot;축구&quot;];
var arr2 = [&quot;사과&quot;, &quot;배&quot;];

var merge = arr1.concat(arr2);

console.log(merge);</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/fce36ca7-7dd5-44c4-be72-1c080c41cae0/concat_ex.JPG" alt="concat_ex"></p>
<p>※ 예시에서는 <code>arr1</code>이 기준이 되고, 그 배열 뒤쪽에 <code>arr2</code>의 데이터가 들어가게 됨</p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> 자바스크립트라는 내용 자체가 처음이라서 내용을 이해하기가 많이 어려웠습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 강의 내용 중 이해가 되지 않으면 그 부분을 반복해서 보고, 인터넷에서 추가적으로 검색하여 해결하고자 하였습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> 자바스크립트가 C언어와 유사한 점이 많아서 이해가 조금은 되지만, 아직 배워야할 것들이 많다고 느꼈습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] JavaScript 개발일지 -2-]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-JavaScript-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80-2-</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-JavaScript-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80-2-</guid>
            <pubDate>Tue, 31 Aug 2021 05:00:49 GMT</pubDate>
            <description><![CDATA[<h1 id="□-자바스크립트---2강-13">□ 자바스크립트 - 2강 1/3</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_08_javaScript2">Git 링크.자바스크립트2</a></p>
<h2 id="1-if-조건문">1. IF 조건문</h2>
<p>● 만약 ( ) 조건이 참(true)이면, { }의 동작을 수행함</p>
<p>예시)
① 조건이 참(true)일 경우 </p>
<pre><code>var a = 20;
var b = 40;

if(a &lt; b) {
    console.log(&quot;a는 b보다 작다.&quot;);
}</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/ed73eb8d-dfa2-46ca-a97f-19760fc39d1b/if_true.JPG" alt="if_true"></p>
<p>② 조건이 거짓(false)일 경우</p>
<pre><code>var a = 20;
var b = 40;

if(a &gt; b) {
    console.log(&quot;a는 b보다 작다.&quot;);
}</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/0ff8c2f3-7208-4599-acb5-59d84ae54cc5/if_false.JPG" alt="if_false"></p>
<p>● <code>else</code> – if 조건문에서 참(true)이 아닐 경우, 동작을 수행함</p>
<p>예시)</p>
<pre><code>var a = 20;
var b = 40; 

if (a &gt; b) {
    console.log(&quot;a는 b보다 크다.&quot;);
}
else {
    console.log(&quot;a는 b보다 작다.&quot;)
}</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/0d0ddace-2dc2-4fe2-ba99-d1ceeabd58d9/if_else_false.JPG" alt="if_else_false"></p>
<p>● <code>else if</code> – 여러개의 조건을 사용하고자 할 때 사용함</p>
<p>예시)</p>
<pre><code>var a = 20;
var b = 40;
var c = 60;

if(a &gt; b) {
    console.log(&quot;a는 b보다 크다.&quot;);
} else if(b &gt; c ) {
    console.log(&quot;b는 c보다 크다.&quot;);
} else if(a &lt; c) {
    console.log(&quot;a는 c보다 작다.&quot;);
} else if(b &lt; c) {
    console.log(&quot;b는 c보다 작다.&quot;);
} else {
    console.log(&quot;모든 조건을 만족하지 않는다.&quot;);
}</code></pre><p>※ 조건들 중에서 여러 가지 참(true)가 존재할 경우, 가장 먼저 나오는 참(true)만 실행함</p>
<p>● 중첩 IF문
– 버그나 오류를 발생시키지 않게 하기 위해, 좀더 논리구조를 탄탄하게 하기 위해 사용함</p>
<p>예시)</p>
<pre><code>if(a !== b) {

    if(a &gt; b) {
        console.log(&quot;a는 b보다 크다.&quot;);
    } else {
        console.log(&quot;a는 b보다 작다.&quot;);
    }

} else {
    console.log(&quot;a와 b는 같다.&quot;);
}</code></pre><p>● 거짓이 되는 상황</p>
<ul>
<li><code>false</code>, <code>‘ ’</code> &amp; <code>“ ”</code>, <code>0</code>, <code>null</code>, <code>undefined</code></li>
</ul>
<p>●. 삼항 연산자</p>
<p>예시)</p>
<pre><code>var age = 15;

if(age &gt;= 18) {
    console.log(&quot;성인&quot;);    
} else {
    console.log(&quot;어린이&quot;);
}


var result = (age &gt;= 18) ? &quot;성인&quot; : &quot;어린이&quot;;
console.log(result);</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/d953eb17-459e-48dc-b91f-438a5e05b221/if_another.JPG" alt="삼항연산자"></p>
<p>● 조건문 응용
① <code>prompt</code></p>
<ul>
<li>자바스크립트에서 미리 만들어진 메서드, 브라우저 환경에서만 동작함(브라우저마다 모양은 차이가 있음)</li>
<li>사용자한테 어떤 값을 전달받을 때 사용되는 팝업을 띄우는 기능<pre><code>var userID = prompt(&quot;아이디를 입력해 주세요.&quot;);
var userPW = prompt(&quot;비밀번호를 입력해 주세요.&quot;);
</code></pre></li>
</ul>
<p>console.log(userID);
console.log(userPW);</p>
<pre><code>![prompt_ex](https://images.velog.io/images/rim_chaeeop/post/92d38421-adc3-497e-8e82-79da61e30439/prompt_ex.JPG)

※ 예시로 userID와 userPW에 ‘Chaeeop’과 12345를 입력한 경우, 아래와 같이 출력함
![prompt_result](https://images.velog.io/images/rim_chaeeop/post/e706bc0d-a224-4683-8bc0-cd1f76d90b3d/prompt_result.JPG)

- 여기서 조건문과 alert를 통해서 입력값에 대한 결과창을 띄울 수 있음


if(userID === &quot;Chaeeop&quot; &amp;&amp; userPW === &quot;12345&quot;) {
    alert(&quot;로그인되었습니다.&quot;);
} else {
    alert(&quot;아이디 또는 비밀번호가 틀렸습니다.&quot;)
}

※ userPW가 “12345” (문자열)이 아닌 12345(숫자)라면 에러가 발생함
 → ```prompt```로 전달받는 값은 데이터 타입이 string(문자열)

※ ```parseInt``` -  메서드를 사용하면 문자열로 전달된 숫자를 정수 숫자 데이터 타입으로 변환시킴
예시)</code></pre><p>var userPW = prompt(&quot;비밀번호를 입력해 주세요.&quot;);</p>
<p>if(parseInt(userPW) === 12345) {
    alert(&quot;로그인되었습니다.&quot;);
} else {
    alert(&quot;비밀번호가 틀렸습니다.&quot;)
}</p>
<pre><code>
● 전역 변수와 지역 변수
※ 함수(```function```)을 기준으로 나누어짐
① 전역 변수 : 함수 바깥쪽에서 만들어진 변수, 함수 안쪽과 바깥쪽 모두 영향력을 행사할 수 있음
② 지역 변수 : 함수 안에서 만들어진 변수, 함수 안에서만 영향력을 발휘함

예시)</code></pre><p>var globalV = &quot;전역변수&quot;;</p>
<p>function func() {
    var localV = &quot;지역변수&quot;;</p>
<pre><code>console.log(globalV);
console.log(localV);</code></pre><p>}</p>
<p>func();</p>
<p>console.log(globalV);
console.log(localV);</p>
<pre><code>![global_local_V](https://images.velog.io/images/rim_chaeeop/post/a326557e-e0c1-4158-8496-31eb4ec1c84b/global_local_V.JPG)

※ 최신 JavaScript에서의 변수 작성 → let, const도 사용함

※ 변수 만들 시 주의점

예시)</code></pre><p>var gv = &quot;전역변수&quot;;</p>
<p>function func() {
    var gv = &quot;지역변수&quot;;
    console.log(gv);
}</p>
<p>func();</p>
<p>console.log(gv);</p>
<pre><code>![gv_caution](https://images.velog.io/images/rim_chaeeop/post/8427af98-59b4-4c73-b56c-3ab5727b4a25/gv_caution.JPG)

※ 전역변수를 조금 더 간편하게 확인하는 방법 → 브라우저의 검사 기능을 이용하여 console를 이용
→ console창에서 ```window```를 입력하고 실행

● 스코프 – 변수가 영향력을 발휘할 수 있는 범위
① 전역 스코프 – 모든 영역에 영향력을 발휘 할 수 있는 스코프
예시)</code></pre><p>var gv = &quot;전역변수&quot;;</p>
<p>function func() {
    console.log(gv);
}</p>
<p>func();</p>
<p>console.log(gv);</p>
<pre><code>② 지역 스코프 – 함수 안에서만 영향력을 발휘 할 수 있는 스코프

예시)
</code></pre><p>function func() {
    var lv = &quot;지역변수&quot;;
    console.log(lv);
}</p>
<p>func();</p>
<p>console.log(lv);</p>
<pre><code>![local_scope](https://images.velog.io/images/rim_chaeeop/post/c0553d86-86db-4d38-8c87-fe6d8621ce82/local_scope.JPG)


★ 함수(지역 스코프)는 서로의 스코프에 접근할 수 없다!!

예시)</code></pre><p>function a() {
    var apple = &quot;사과&quot;;
}</p>
<p>function b() {
    a();
    console.log(apple);<br>}</p>
<p>b();</p>
<pre><code>![scope_function_notApproach](https://images.velog.io/images/rim_chaeeop/post/25d12ccb-1879-41be-b885-1aa4fbdee7b6/scope_function_notApproach.JPG)

※ 함수 ```b()```가 함수 ```a()```에 접근할 수 없기에, 정의되지 않았다(```not defined```)는 결과가 나옴.

● 스코프 체인 – 함수 안쪽에서부터 외부를 탐색하는 것
※ 안쪽에서 바깥쪽으로 탐색은 가능하지만, 바깥쪽에서 안쪽으로의 탐색은 불가능함

예시)</code></pre><p>var a = 10;</p>
<p>function func1() {
    var b = 20;</p>
<pre><code>function func2() {
    var c = 30;
    console.log(a + b + c);
}

func2();</code></pre><p>}</p>
<p>func1();</p>
<pre><code>![scope_chain_1](https://images.velog.io/images/rim_chaeeop/post/d55fecac-8dae-4bfd-a196-45d98fa6b506/scope_chain_1.JPG)

※ 작동 순서
① ```func1()```을 호출하여 실행함
② ```func1()``` 안의 ```func2()```를 호출하여 실행함
③ ```func2()```의 ```console.log```를 실행하고자 정의된 a와 b를 찾아서 ```func1()```과 ```전역스코프```를 순서대로 찾아서 값을 할당함


● 렉시컬 스코핑(Lexical scoping)

예시)</code></pre><p>var name = &quot;Chaeeop&quot;;</p>
<p>function func1() {
    console.log(name);
}</p>
<p>function func2() {
    name = &quot;Rim&quot;;
    func1();
}</p>
<p>func2();</p>
<pre><code>![Lexical_scoping_1](https://images.velog.io/images/rim_chaeeop/post/10f34f3f-2ea1-4370-8a1a-74809f5f4bdc/Lexical_scoping_1.JPG)

예시2)</code></pre><p>var name = &quot;Chaeeop&quot;;</p>
<p>function func1() {
    console.log(name);
}</p>
<p>function func2() {
    var name = &quot;Rim&quot;;</p>
<pre><code>func1();</code></pre><p>}</p>
<p>func2();</p>
<pre><code>![Lexical_scoping_2](https://images.velog.io/images/rim_chaeeop/post/a01ab55e-51bf-49a4-ae9e-1d2baa3f546d/Lexical_scoping_2.JPG)

● 호이스팅
① 변수 호이스팅 – 원칙상 코드 작성 순서대로 실행이 되어야 하지만, 실행할 때, 변수 호이스팅으로 변수 선언이 자동적으로 순서가 위로 배치되는 것

예시)</code></pre><p>console.log(a);</p>
<p>var a;</p>
<p>// console.log(a);</p>
<pre><code>
→ ```console```에서 ```not defined```가 아닌 ```undefined```가 출력됨

※ 변수 호이스팅은 변수 선언에 관해서만 호이스팅이 되고, 변수 초기화에는 적용되지 않음

예시2)</code></pre><p>console.log(a);</p>
<p>var a;
a = &quot;나는 A다.&quot;;</p>
<p>console.log(a);</p>
<pre><code>![hoisting_1](https://images.velog.io/images/rim_chaeeop/post/04bc1487-e159-430b-a52d-d7b16bd15911/hoisting_1.JPG)

→ 변수 선언과 초기화를 동시에 진행해도(```var a = “나는 A다.”;```) 같은 호이스팅 결과가 나옴

② 함수 호이스팅 – 변수 안에 함수를 할당시키지 않는 방식으로 함수를 만들 때, 가능함

예시)</code></pre><p>/*
function func1() {
    console.log(&quot;Func1 함수다.&quot;);
}
*/</p>
<p>func1();</p>
<p>function func1() {
    console.log(&quot;Func1 함수다.&quot;);
}</p>
<p>// func1();</p>
<pre><code>![hoisting_function](https://images.velog.io/images/rim_chaeeop/post/a6f75d00-404e-4005-832a-b50d75c4f74a/hoisting_function.JPG)

※ 주의점 – 변수를 만들어서 함수 안에 할당하는 방식으로 만들었다면, 함수 호이스팅은 발생하지 않음

예시)</code></pre><p>// var func2 = undefined;</p>
<p>func2();</p>
<p>var func2 = function () {
    console.log(&quot;Func2 함수다&quot;);
}</p>
<p>// func2();</p>
<pre><code>
● 자바스크립트에서 빈번하게 사용되는 객체와 메서드들

1) ```Math``` 객체
- ```console.log(Math);```를 통해서 여러 프로펄티와 메서드를 확인할 수 있음
- 참고 사이트 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math

① ```Math.abs()``` - 절대값을 반환하는 메서드
② ```Math.ceil()``` - 전달된 인수를 ‘올림’ 처리하는 메서드
③ ```Math.floor()``` - 전달된 인수를 ‘내림’ 처리하는 메서드
④ ```Math.random()``` - 랜덤한 숫자를 뽑아내는 메서드, 0이상에서 1미만의 값을 범위로 갖고 있음

예시)</code></pre><p>var num1 = Math.abs(-3);
console.log(num1);</p>
<p>var num2 = Math.ceil(0.3);
console.log(num2);</p>
<p>var num3 = Math.floor(10.9);
console.log(num3);</p>
<p>var num4 = Math.random();
console.log(num4);</p>
<pre><code>![Math_1_4](https://images.velog.io/images/rim_chaeeop/post/01964340-acaf-4cec-9f48-5d6246fc43ec/Math_1_4.JPG)

2) ```parseInt()```, ```parseFloat()``` - 문자열 데이터 타입을 숫자형 데이터 타입으로 변경할 때 사용함
① ```parseInt()``` - 정수형태로 변환
② ```parseFloat()``` - 실수형태로 변환

예시)</code></pre><p>var str1 = &quot;20.6&quot;;
var str2 = &quot;3.14&quot;;</p>
<p>console.log(typeof str1);
console.log(typeof str2);</p>
<p>var num1 = parseInt(str1);
var num2 = parseFloat(str2);</p>
<p>console.log(num1);
console.log(typeof num1);
console.log(num2);
console.log(typeof num2);</p>
<pre><code>![parseInt_perseFloat](https://images.velog.io/images/rim_chaeeop/post/f162eee4-504d-4da0-bb17-f55ed4b7d7cb/parseInt_perseFloat.JPG)



## □ 어려웠던 점
 자바스크립트라는 내용 자체가 처음이라서 내용을 이해하기가 많이 어려웠습니다.

## □ 해결방법
 강의 내용 중 이해가 되지 않으면 그 부분을 반복해서 보고, 인터넷에서 추가적으로 검색하여 해결하고자 하였습니다.

## □ 학습 소감
 자바 스크립트에 대해 조금씩 알아가고 있지만, 아직 이해하는데 시간이 많이 걸려서, 저 스스로 더 노력해야 된다고 생각합니다.
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] JavaScript 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-JavaScript-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-JavaScript-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Mon, 30 Aug 2021 03:10:57 GMT</pubDate>
            <description><![CDATA[<h1 id="□-자바스크립트---1강">□ 자바스크립트 - 1강</h1>
<h3 id="작성코드">작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_08_javaScript">Git 링크.자바스크립트</a></p>
<h2 id="1-자바스크립트란">1. 자바스크립트란?</h2>
<p>● 웹사이트의 주요기능, 주요 애니메이션 효과를 구현하는 언어</p>
<p>● 하이브리드 앱</p>
<ul>
<li>html, css, javaScript를 같이 이용하여 안드로이드 앱, 애플 앱을 개발 할 수 있음</li>
</ul>
<p>● node.js – 자바스크립트 언어로 구성되어 있는, 서버개발을 도와주는 도구</p>
<p>● Iot에서도 활용 가능</p>
<h2 id="2-자바스크립트-특징">2. 자바스크립트 특징</h2>
<p>● 인간에게 친숙한 언어, High Level Language(하이레벨 언어)</p>
<p>● 3가지 분야로 구분해서 공부하기
① 자바스크립트 코어 – 개발언어의 문법적인 내용을 담당
② 클라이언트 측 자바스크립트 – 브라우저를 제어할 때 사용하는 자바스크립트
③ 서버 측 자바스크립트 – 서버와 관련된 자바스크립트, node.js의 사용 영역</p>
<h2 id="3-자바스크립트-적용-방법">3. 자바스크립트 적용 방법</h2>
<p>① html 파일 내에서 <code>&lt;script&gt;</code>를 이용하는 방법
② html 파일 내에서 <code>&lt;script src=“”&gt;</code>를 이용하여 자바스크립트의 파일 경로를 입력해 연동하는 방법</p>
<p>※ 사용할 때, <code>&lt;script&gt;</code> 혹은 <code>&lt;script src=“”&gt;</code> 중 하나만을 선택해서 이용해야 함(두가지 방식 같이는 되지 않음) </p>
<h2 id="4-자바스크립트-명령어">4. 자바스크립트 명령어</h2>
<p>● <code>console.log();</code> - ()안의 입력된 어떠한 정보를 console탭에 출력하는 명령어</p>
<h2 id="5-자바스크립트-코어">5. 자바스크립트 코어</h2>
<p>● 주석 처리 방법
① 전체 주석 - <code>/* console.log(&quot;Coment&quot;); */</code>
② 한줄 주석 - <code>// console.log(&quot;Coment&quot;);</code></p>
<p>※ 전체 주석 안에 한줄 주석을 넣는 방식은 사용 가능함</p>
<h2 id="6-자바스크립트-변수">6. 자바스크립트 변수</h2>
<p>● 자바스크립트 변수(=박스)</p>
<ul>
<li>데이터를 저장하는 공간</li>
</ul>
<p><img src="https://images.velog.io/images/rim_chaeeop/post/1523599a-c125-4cec-b049-66d37fda09de/study_1.JPG" alt="study_1"></p>
<h2 id="6-개발용어-정리">6. 개발용어 정리</h2>
<p>● 변수 선언 – 예시) <code>var comic;</code></p>
<p>● 변수 초기화 – 예시) <code>comic = &quot;패트레이버&quot;;</code></p>
<p>● 변수 선언 및 초기화 – 예시) <code>var apple = &quot;사과&quot;;</code></p>
<p>● 여러개의 변수를 동시에 생성
→ <code>var a, b, c;</code></p>
<p>● 모든 변수는 선언과 동시에 <code>undefined</code>가 자동으로 할당됨
예시)</p>
<pre><code>var computer;

console.log(computer);</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/d0dc53e2-3cd8-4b8b-95d6-87f6fb1705f8/study_2_undefined.JPG" alt="study_2_undefined"></p>
<p>● 변수명 작성 방식
① 캐멀 케이스 – 다음 단어가 이어질 때, 첫글자를 대문자를 사용하는 방법
<code>var mathScoreStudent = 10;</code></p>
<p>② 스네이크 케이스 – <code>언더바(_)</code>를 사용하여 단어를 구분하는 방법
<code>var math_score_student = 10;</code></p>
<p>※ <code>‘-’</code>는 자바스크립트에서 사용할 수 없음(에러 발생)
<code>var math-score-student = 100;</code> (X)</p>
<p>※ 변수명에서 첫글자로 특수문자 2가지( <code>_</code> , <code>$</code> )는 사용 가능함</p>
<pre><code>var _math;
var $math;</code></pre><p>※ 변수명 앞에 숫자가 먼저 나와서는 안됨
<code>var apple10;</code> (O)
<code>var 10apple;</code> (X)</p>
<p>※ 변수명은 최대한 자세하게 적으면 좋음 → 어떤 의미로 작성한 것인지 파악이 가능하게 하기 위함</p>
<h2 id="7-데이터-타입">7. 데이터 타입</h2>
<p>● 자바스크립트의 =(등호)에 들어가는 여러 가지 데이터 종류</p>
<p>1) 원시 타입
① 문자열(<code>String</code>) - console에서 검은색 글자로 표시됨
② 숫자(<code>Number</code>) - console에서 파란색 글자로 표시됨
③ 논리(<code>Boolean</code>) - true와 false(참과 거짓)만 가지고 있음
④ <code>undefined</code>
⑤ <code>null</code></p>
<p>2) 참조 타입
⑥ 배열(<code>Array</code>)
⑦ 함수(<code>Function</code>)
⑧ 객체(<code>Object</code>)</p>
<h2 id="8-원시-타입">8. 원시 타입</h2>
<p>● 비교 연산자 <code>==</code> 와 <code>===</code> 의 차이점(<code>!=</code> 와 <code>!==</code> 도 포함됨)</p>
<ul>
<li><code>===</code> , <code>!==</code> 는 데이터 타입까지 일치하는지 확인함
※ 정확성을 위해서 <code>===</code>와 <code>!==</code>를 사용하는 것을 추천함</li>
</ul>
<p>예시)</p>
<pre><code>var num10 = 10;
var num20 = 20;

var str10 = &quot;10&quot;;
var str20 = &quot;20&quot;;

console.log(num10 == str10);  -&gt; true
console.log(num10 === str10);  -&gt; false

console.log(num20 != str20);  -&gt; false
console.log(num20 !== str20);  -&gt; true</code></pre><p>● 논리 연산자 : <code>AND(&amp;&amp;)</code>, <code>OR(||)</code></p>
<p>예시)</p>
<pre><code>var num30 = 30;
var num40 = 40;
var num50 = 50;

console.log(num30 === num40 &amp;&amp; num30 === num50);
console.log(num30 === num40 || num30 === num50);

console.log(num30 === num40 &amp;&amp; num30 === num50 &amp;&amp; num40 === num50);</code></pre><p>● 불리언(boolean) : <code>true</code>, <code>false</code></p>
<p>예시)</p>
<pre><code>console.log(true);
console.log(false);
console.log(1 === 2);
console.log(10 &lt; 20);
console.log(10 === 10 || 20 === 30);

var bool_1 = true;
var bool_2 = false;

console.log(bool_1);
console.log(bool_2);</code></pre><p>● <code>null</code>, <code>undefined</code> – 값이 없는 상태
① <code>null</code> : 변수 초기화로 명시적으로.... 빈 값을 변수 안에 할당한 상태
② <code>undefined</code> : 변수를 선언만 한 상태</p>
<p>예시)</p>
<pre><code>var n = null;
var u;

console.log(n);
console.log(u);</code></pre><p>※ <code>null</code>과 <code>undefined</code> 차이점(<code>null</code>이 <code>object</code>로 표기되지만 이는 오류이며, 수정이 되지 않음)</p>
<pre><code>console.log(typeof null);
console.log(typeof undefined);</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/33852f70-b634-490d-95f6-41d384cc1295/null_undefined.JPG" alt="null_undefined"></p>
<p>※ <code>!</code> (부정 연산자)</p>
<pre><code>console.log(!true);
console.log(!false);

console.log(!null); // true
console.log(!!null); // !true

console.log(!undefined); 
console.log(!!undefined);

console.log(10 + null); // null --&gt; 0
console.log(10 + undefined); // Nan (Not a Number)</code></pre><h1 id="□-자바스크립트-22">□ 자바스크립트 2/2</h1>
<h2 id="9-참조-타입">9. 참조 타입</h2>
<p>● 함수(<code>function</code>)</p>
<p>예시)</p>
<pre><code>// 함수 선언
function sum() {

    console.log(&quot;Hello world&quot;);
    console.log(10 + 10);

}

// 함수 호출
sum();</code></pre><p>● <code>Parameter</code> (매개변수), <code>Argunent</code> (인수)</p>
<ul>
<li>매개변수 안에 들어갈 수 있는 데이터 타입은 모든 데이터 타입이 가능함</li>
</ul>
<pre><code>// 매개변수 : num1, num2
function sum(num1, num2) {

    console.log(num1 + num2);

}


// 인수 : 호출시 전달되는 값
sum(10, 20);
sum(100, 50);


function fullName(firstName, lastName) {
    console.log(firstName + &quot; &quot; + lastName);
}

fullName(&quot;Chaeeop&quot;, &quot;Rim&quot;);


function area(width, height) {
    var result = width * height;
    console.log(result);
}

area(10, 20);</code></pre><p>● <code>return</code> : 함수와 결합되서 사용되는 키워드, 다른 변수의 값을 전달할 때 혹은 새로운 공식을 대입할 때 사용함</p>
<p>※ 참고 링크(그림으로 배우는 자바스크립트) : <a href="https://brunch.co.kr/@brunch92ny/9">https://brunch.co.kr/@brunch92ny/9</a>
<img src="https://images.velog.io/images/rim_chaeeop/post/4fcbda37-3205-49ea-a3fd-32a5c2ad8b98/function.JPG" alt="function"></p>
<p>● 배열(<code>Array</code>)</p>
<p>예시)</p>
<pre><code>var fruit = [&quot;바나나&quot;, &quot;사과&quot;, &quot;멜론&quot;];
console.log(fruit);</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/3a6418ac-de97-46ca-93c2-6ab135ddfb56/array.JPG" alt="array"></p>
<ul>
<li>색인(index)<pre><code>console.log(fruit[0]);  // 바나나
console.log(fruit[2]);  // 멜론
</code></pre></li>
</ul>
<p>fruit[2] = &quot;수박&quot;;
console.log(fruit);</p>
<pre><code>![array_index](https://images.velog.io/images/rim_chaeeop/post/e4a2b09f-c695-41c3-8073-1c456fa766f5/array_index.JPG)

- ```length``` : 배열 안에 들어가 있는 데이터의 개수
- 배열에는 모든 데이터 타입을 삽입할 수 있음</code></pre><p>var arr = [
    10,
    &quot;Hello&quot;,
    true,
    null,
    undefined a() {},
    [10, 20, 30],
    {name: &quot;kim&quot;}
];</p>
<pre><code>
※ 주의점 2가지
① 배열 안에는 동일한 데이터 타입을 가지는 것이 좋음 → 배열 재활용이 어려워짐</code></pre><p>var num = [10, 20, 30, &quot;Hello World&quot;]; (X)
var num = [10, 20, 30, 3.14]; (O)</p>
<pre><code>
② 가능한 동일한 성격의 데이터를 삽입하는 것이 좋음</code></pre><p>var fruit = [&quot;사과&quot;, &quot;배&quot;, &quot;바나나&quot;, &quot;양상추&quot;]; (X)
var fruit = [&quot;사과&quot;, &quot;배&quot;, &quot;바나나&quot;];  (O)</p>
<pre><code>
- 배열 안에 있는 배열 데이터에 접근하는 방법</code></pre><p>var score = [[10, 20, 30],[100, 200, 300],];
console.log(score);
console.log(score[1]);
console.log(score[1][2]);</p>
<pre><code>![array_array](https://images.velog.io/images/rim_chaeeop/post/507f509b-8271-412e-a791-ee04cac7d41d/array_array.JPG)

● 객체(```Object```)</code></pre><p>var student = {
    name: &quot;Chaeeop&quot;,
    age: 35,
    skills: [&quot;자바스크립트&quot;, &quot;HTML&quot;, &quot;CSS&quot;]
};
console.log(student);</p>
<pre><code>![object](https://images.velog.io/images/rim_chaeeop/post/b8de45b2-e53c-4015-bccb-0f86e9168504/object.JPG)


- 객체 안의 데이터에 접근하는 방법
① ```.```(컴마)를 활용하는 방법
```onsole.log(student.name);```

② ```key``` 값을 활용
```console.log(student[&#39;name&#39;]);```

※ 객체 내의 배열의 데이터를 알고 싶을 경우
```console.log(student.skills[1]);```

※ 객체 내의 데이터 변환</code></pre><p>student.age = 100;
console.log(student);</p>
<pre><code>
※ 객체에 내용을 추가할 경우</code></pre><p>student.gender = &quot;남자&quot;;
console.log(student);</p>
<pre><code>![object_add](https://images.velog.io/images/rim_chaeeop/post/00df2dcb-841f-459a-bc01-197bd11b0fa2/object_add.JPG)

● 객체(```Object```) 안에 함수를 넣고(메서드), 이를 실행하는 방법
- 정의한 함수명을 객체 뒤에 .메서드를 적용하면 됨

예시)</code></pre><p>var student = {
    sum: function (num1, num2) {
         return num1 + num2;
    }
};</p>
<p>var result = student.sum(10, 20);
console.log(result);</p>
<pre><code>
● 원시 타입(```Primitive Type```)과 참조 타입(```Reference Type```)의 차이점
① 원시 타입은 원본 데이터를 수정하여도 복사복이 바뀌지 않음
예시)</code></pre><p>var str1 = &quot;Hello World&quot;;
var str2 = str1;</p>
<p>str1 = &quot;Nice&quot;;</p>
<p>console.log(str1);
console.log(str2);</p>
<pre><code>![primitive_type](https://images.velog.io/images/rim_chaeeop/post/5ba59dbf-78c5-4bdb-af41-efa1d581a5ae/primitive_type.JPG)

② 참조 타입은 원본 데이터를 수정하면 복사본의 내용도 바뀜 → 데이터의 주소를 사용하는 방식
- 둘 중 하나라도 수정되면 주소 안의 값이 바뀌므로, 둘 다 값이 변경됨
예시)</code></pre><p>var obj1 = {name: &quot;Chaeeop&quot;};
var obj2 = obj1;</p>
<p>obj1.name = &quot;Park&quot;;</p>
<p>console.log(obj1);
console.log(obj2);</p>
<pre><code>![Reference_type](https://images.velog.io/images/rim_chaeeop/post/d3e28094-1bff-42dd-8c61-c756e1b0caf8/Reference_type.JPG)

## 10. 자바스크립트 기능 연습해보기
● 버튼을 눌렀을 때, 배경색이 바뀌는 기능 만들기

- ```document``` 객체 : html문서에 영향력을 발휘하는 객체, 클라이언트 축 자바스크립트
- ```addEventListener``` 메서드 : 
- 익명 함수 : 함수 이름이 없는 함수
- 콜백 함수 : 호출 기호 없이 특정 조건 하에 호출되는 함수
예시 )</code></pre><p>btn.addEventListener(&#39;click&#39;, function() {
    console.log(&quot;Hello&quot;);
});</p>
<pre><code>
●  1 ~ 6 숫자를 랜덤하게 가져오는 게임
- 숫자를 제어할 때 사용하는 객체 → Math 객체
- ```Math.random()``` : 0에서 1 미만의 값을 랜덤하게 가져옴
- ```Math.random() * 6``` : 0에서 5.99999~ 미만의 값을 랜덤하게 가져옴 (0 ~ 0.99999...)
- ```Math.floor(Math.random() * 6)``` : 내림 처리 (0 ~ 5)
- ```Math.floor(Math.random() * 6) + 1```  : 내림 처리 (1 ~ 6)


예시)</code></pre><p>var colors = [
    &#39;yellow&#39;,
    &#39;green&#39;,
    &#39;pink&#39;,
    &#39;#dc143c&#39;,
    &#39;rgba(123, 123, 123, 0.5)&#39;
];</p>
<p>btn.addEventListener(&#39;click&#39;, function() {</p>
<pre><code>//0 ~ 4
var random = Math.floor(Math.random() * 5);
console.log(random);</code></pre><p>});</p>
<pre><code>
● 위의 랜덤값을 가져오는 코드를 사용하여, 클릭 시, 배경색이 변하도록 하는 코드 작성하기</code></pre><p>var colors = [
    &#39;yellow&#39;,
    &#39;green&#39;,
    &#39;pink&#39;,
    &#39;#dc143c&#39;,
    &#39;rgba(123, 123, 123, 0.5)&#39;
];</p>
<p>var bg = document.getElementById(&#39;color-bg&#39;);</p>
<p>btn.addEventListener(&#39;click&#39;, function() {</p>
<pre><code>//0 ~ 4
var random = Math.floor(Math.random() * 5);
console.log(colors[random]);

bg.style.backgroundColor = colors[random];</code></pre><p>});</p>
<pre><code>
※ ```background-color```, ```border-radius```, ```margin-top``` (자바스크립트는 &#39; ```-``` &#39;을 인식하지 못함)
그렇기에 캐멀케이스로 미리 작성되어 있음
예시) ```background-color``` → ```backgroundColor``` (자바스크립트)


● 변수를 만들 때의 주의점
① 변수를 만들 때, 변수는 알파벳과 숫자 조합으로 만들 수 있들 수 있지만 숫자가 앞에 와서는 안됨
② 특수문자도 첫글자로 사용할 수 있는 것은 2가지( ```_``` ,```$```)만 사용 가능함
③ 의미가 분명한 단어의 조합으로 변수 이름을 작성해야함
④ 예약어(```var```, ```typeof```, ```fuction```, ```null```, ```undefined```, ```false```, ```true```, ```console``` 등)와 관련된 에러를 피하기 위해서는 2개 이상의 명사 조합으로 변수 이름을 작성하는 것이 좋음

● 두 개의 서로 다른 자바스크립트 파일을 연동시키더라도, 위에서부터 순차적으로 읽음

예시)</code></pre><p>[html]</p>
<script src="js/main.js"></script>
<script src="js/custom.js"></script>

<p>[main.js]
console.log(&quot;Main&quot;);</p>
<p>[custom.js]
console.log(&quot;custom&quot;);</p>
<pre><code>![custom_js](https://images.velog.io/images/rim_chaeeop/post/41e5184b-c784-4390-8738-80727c6159fc/custom_js.JPG)


※ ```main.js``` 에서 작성한 내용을 ```custom.js```에서 호출이 가능함. 단, 연동되는 순서는 중요함.

예시)</code></pre><p>[html]</p>
<script src="js/main.js"></script>
<script src="js/custom.js"></script>

<p>[main.js]
function mainFunc() {
    console.log(&quot;Main Func&quot;);
}</p>
<p>[custom.js]
mainFunc();</p>
<pre><code>![custom_js_2](https://images.velog.io/images/rim_chaeeop/post/ac88ad73-692d-4616-865f-b796b2542c6c/custom_js_2.JPG)

## □ 어려웠던 점
 자바스크립트라는 내용 자체가 처음이라서 내용을 이해하기가 많이 어려웠습니다. 

## □ 해결방법
 강의 내용 중 이해가 되지 않으면 그 부분을 반복해서 보고, 인터넷에서 추가적으로 검색하여 해결하고자 하였습니다.

## □ 학습 소감
 새로운 프로그래밍 언어를 배우는 것은 정말 어렵다는 것을 체감합니다. 이러한 내용을 단시간에 습득할 수 있을지 걱정은 되지만, 최선을 다해보고자 합니다.
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] 21.08.30 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.30-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.30-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Thu, 26 Aug 2021 07:27:48 GMT</pubDate>
            <description><![CDATA[<h1 id="□-유튜브-23">□ 유튜브 2/3</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_08_youtube">Git 링크.유튜브 카피캣</a></p>
<h2 id="1-유튜브-왼쪽-nav-영역">1. 유튜브 왼쪽 nav 영역</h2>
<p>● <code>word-break</code> : 텍스트의 줄바꿈의 영향을 주는 CSS 속성</p>
<ul>
<li><code>keep-all</code> 속성값 : 단어를 기준으로 줄바꿈</li>
</ul>
<p>예시)</p>
<pre><code>#youtube-left-content .youtube-footer .txt-wrap a {
    margin-right: 8px;

    color: #aaaaaa;
    font-size: 12px;
    font-weight: 500;
    line-height: 18px;

    word-break: keep-all;
}</code></pre><p>● 결과 스크린샷
<img src="https://images.velog.io/images/rim_chaeeop/post/e78b4475-070c-4fdf-9efb-fec823e5c868/youtube_left_nav_1.JPG" alt="youtube_left_nav_1"></p>
<p><img src="https://images.velog.io/images/rim_chaeeop/post/fa018699-4741-4c42-ba41-6187f15634a4/youtube_left_nav_2.JPG" alt="youtube_left_nav_2"></p>
<h2 id="2-유튜브-메인-컨텐츠-영역">2. 유튜브 메인 컨텐츠 영역</h2>
<p>● 결과 스크린샷
<img src="https://images.velog.io/images/rim_chaeeop/post/1f38e876-068b-465e-a56b-a9db16376626/youtube_main_content.JPG" alt="youtube_main_content"></p>
<h1 id="□-유튜브-33">□ 유튜브 3/3</h1>
<h2 id="1-유튜브-채널-페이지-영역">1. 유튜브 채널 페이지 영역</h2>
<p>● 결과 스크린샷
<img src="https://images.velog.io/images/rim_chaeeop/post/8a217234-50c9-4460-82d6-aa45baa7ab76/youtube_channel_content.JPG" alt="youtube_channel_content"></p>
<h2 id="2-유튜브-채널-탐색-페이지-영역">2. 유튜브 채널 탐색 페이지 영역</h2>
<p>● 결과 스크린샷
<img src="https://images.velog.io/images/rim_chaeeop/post/32e6cd39-405d-4568-bfa9-aac01e4e4f2b/youtube_explore_content.JPG" alt="youtube_explore_content"></p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> 특별히 어려웠던 내용은 없었습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 강의 내용을 듣고, 코드를 작성해보면서 오타나 오류가 생기면 찾아서 수정하였습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> 유튜브와 유사한 구조를 만들기 위해서 많은 <code>div</code> 태그를 만들어야 되서 차후에 이와 비슷한 상황이 되었을 때, 이에 대한 명칭을 지정하는 것이 고민이 많이 되었습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] 21.08.26 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.26-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.26-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Tue, 24 Aug 2021 02:47:55 GMT</pubDate>
            <description><![CDATA[<h1 id="□-유튜브-13">□ 유튜브 1/3</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_08_youtube">Git 링크.유튜브 카피캣</a></p>
<h2 id="1-유튜브-전체-구역-설정">1. 유튜브 전체 구역 설정</h2>
<p>● 유튜브 왼쪽 메뉴 영역 공간 만들기 </p>
<ul>
<li>유튜브 왼쪽 메뉴 영역에서 스크롤바가 content 영역을 침범하지 않게 하기위해 구역을 하나 더 추가함</li>
<li>왼쪽 메뉴 전체 영역의 <code>width</code> 값(240px)에서 스크롤바 생성 크기를 제외한 값을 content 영역의 <code>width</code> 값(225px)으로 설정함</li>
</ul>
<p>예시)</p>
<pre><code>[html]
&lt;nav id=&quot;youtube-left-nav&quot;&gt;
     &lt;div id=&quot;youtube-left-content&quot;&gt;

     &lt;/div&gt;
&lt;/nav&gt;

[CSS]
#youtube-left-nav {
    overflow-x: hidden;
    overflow-y: auto;
    position: fixed;

    width: 240px;
    background-color: #212121;

    top: 56px;
    left: 0;
    bottom: 0;
}

#youtube-left-content {
    position: absolute;
    width: 225px;
    height: 100%;
    background-color: grey;
}</code></pre><h2 id="2-유튜브-상단-영역">2. 유튜브 상단 영역</h2>
<p>● 결과 스크린샷
<img src="https://images.velog.io/images/rim_chaeeop/post/122edd94-1b2d-4c55-94ef-4f6794234fe2/youtube_header.JPG" alt="youtube_header"></p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> 특별히 어려웠던 내용은 없었습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 강의 내용을 듣고, 코드를 작성해보면서 오타나 오류가 생기면 찾아서 수정하였습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> 실생활에서 가장 많이 보는 사이트 중 하나인 유튜브 사이트의 구조에 대해 이해할 수 있었습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] 21.08.25 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.25-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.25-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Mon, 23 Aug 2021 00:45:25 GMT</pubDate>
            <description><![CDATA[<h1 id="□-css-추가-설명">□ CSS 추가 설명</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_08_23_css_%20plus">Git 링크.CSS 추가설명</a></p>
<h2 id="1-reset-css와-노멀라이즈-css">1. Reset CSS와 노멀라이즈 CSS</h2>
<h3 id="1-reset-css">1) Reset CSS</h3>
<p>● CSS 작성시, 전부 초기화하는 내용을 작성해놓은 코드 – 원래 html 태그가 가지고 있는 고유의 CSS를 초기화시킴
링크 : <a href="https://meyerweb.com/eric/tools/css/reset/">https://meyerweb.com/eric/tools/css/reset/</a>
※ 링크 코드 내용 복사하여 reset.css에 붙여넣기</p>
<p>● 코드 작성(캐스케이딩 효과)</p>
<pre><code>[html]
&lt;head&gt;

    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/reset.css&quot;&gt;
    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/style.css&quot;&gt;

&lt;/head&gt;</code></pre><h3 id="2-노멀라이즈-cssnormalize-css---실무-사용비중은-조금-높지만-작업-환경에-따라-다름">2) 노멀라이즈 CSS(normalize css) - 실무 사용비중은 조금 높지만, 작업 환경에 따라 다름</h3>
<p>● 기존의 디자인을 약간의 가공을 한 형태로 만들어진 CSS
링크 : <a href="https://necolas.github.io/normalize.css/">https://necolas.github.io/normalize.css/</a></p>
<p>● 브라우저마다 들어가는 CSS 디자인이 다르기에 디자인의 오차를 줄이고, 버그를 줄이는 방향으로 스타일을 정리할 때 사용하는 CSS</p>
<h2 id="2-css-변수">2. CSS 변수</h2>
<p>※ 익스플로러에서는 사용할 수 없음</p>
<h3 id="1-변수-사용-예시root는-전체-범위에-적용함">1) 변수 사용 예시(:Root는 전체 범위에 적용함)</h3>
<pre><code>:root {
    --black: #18181a;
    --brand-color: #9147ff;
    --font-size-16: 16px;
}

h1 {
    background-color: var(--black);
    font-size: var(--font-size-40);
    color: var(--brand-color);
}</code></pre><p>● 결과 스크린샷
<img src="https://images.velog.io/images/rim_chaeeop/post/175ce198-1823-4632-bf01-1150514431e8/css_plus.JPG" alt="변수 사용 예시"></p>
<h3 id="2-css-선택자---변수-사용범위-제한">2) CSS 선택자 - 변수 사용범위 제한</h3>
<p>예시)</p>
<pre><code>[html]
&lt;body&gt;

    &lt;header id=&quot;intro&quot;&gt;
        &lt;p&gt;Header P&lt;/p&gt;
    &lt;/header&gt;

    &lt;footer = id=&quot;footer&quot;&gt;
        &lt;p&gt;Footer P&lt;/p&gt;
    &lt;/footer&gt;

&lt;/body&gt;

[CSS]
#intro {
    --font-size: 50px;
    --font-color: blue;
}

#intro p {
    font-size: var(--font-size);
    color: var(--font-color);
}

#footer p {
    font-size: var(--font-size);
    color: var(--font-color);
}</code></pre><p>● 결과 스크린샷
<img src="https://images.velog.io/images/rim_chaeeop/post/89116a3a-5c52-4023-af25-9fa21ab88a91/css_plus_1.JPG" alt="CSS 선택자"></p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> 특별히 어려웠던 내용은 없었습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 강의 내용을 듣고, 코드를 작성해보면서 오타나 오류가 생기면 찾아서 수정하였습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> CSS에 대한 보충 내용을 들을 수 있어서 좋았습니다. 그리고 앞서 들었던 Twitch 강의에서 어떻게 CSS 코드가 작성되었는지 알 수 있었습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] 21.08.23 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.23-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.23-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Thu, 19 Aug 2021 04:35:13 GMT</pubDate>
            <description><![CDATA[<h1 id="□-트위치-22">□ 트위치 2/2</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_08_Twitch">Git 링크.트위치</a></p>
<h2 id="1-트위치-메인-콘텐츠-영역">1. 트위치 메인 콘텐츠 영역</h2>
<p>● <code>background: url()</code>을 이용하여 이미지를 넣을 때, 이미지가 공간에 맞지 않을 경우와 수정방법</p>
<p><img src="https://images.velog.io/images/rim_chaeeop/post/bfdb3251-a838-439f-a51c-3f2b86287e6d/twitch_background_cover_x.JPG" alt="twitch_background_cover_x"></p>
<ul>
<li><p>위와 같이 이미지가 맞지 않을 경우, <code>background-size: cover</code>를 이용하여 공간에 맞춰서 조절(확대, 축소)하는 기능을 이용함(원본 비율은 유지함)
※ <code>background-size: cover</code>를 이용하면, 공간에 따라 콘텐츠들이 가운데로 모이도록 기능을 하기에 이에 맞춰서 코드를 작성해야 함</p>
</li>
<li><p><code>background: center</code>는 이미지의 기준점을 공간의 가운데로 설정함</p>
</li>
</ul>
<p><img src="https://images.velog.io/images/rim_chaeeop/post/5bbdf50d-307f-4c08-a184-37a1251c09ef/twitch_background_cover_o.JPG" alt="twitch_background_cover_o"></p>
<p>예시)</p>
<pre><code>.content #content-banner {
    position: relative;
    width: 100%;
    height: 350px;
    background: url(../img/notebook.jpg) no-repeat center;
    background-size: cover;
}</code></pre><p>● <code>background</code>에서 <code>layer</code>를 적용하기</p>
<ul>
<li><code>layer</code>를 이용하여 배경이미지에 여러 가지 효과를 적용할 수 있음</li>
<li><code>background-color: rgba()</code>를 이용하여 음영을 줄 수 있음</li>
</ul>
<p><img src="https://images.velog.io/images/rim_chaeeop/post/1cfc9eb9-bc28-4419-8fc1-c3ca072b69ab/twitch_background_layer.JPG" alt="twitch_background_layer"></p>
<p>예시)</p>
<pre><code>.content #content-banner .layer {
    position: absolute;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.5);

    top: 0;
    left: 0;
}</code></pre><p>● 결과 스크린샷(메인 content)
<img src="https://images.velog.io/images/rim_chaeeop/post/3ab396a3-d470-4ea6-bd91-c49cc4a74def/twitch_main_content.JPG" alt="twitch_main_content"></p>
<p>● 결과 스크린샷(footer)
<img src="https://images.velog.io/images/rim_chaeeop/post/6cac95e4-ee89-40eb-84c8-f769bd72c5ba/twitch_footer.JPG" alt="twitch_footer"></p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> <code>position</code>이 3차원일 때, <code>top</code>이나 <code>bottom</code> 등을 이용한 좌표 설정에 대한 이해가 조금 어려웠습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 강의 내용을 복습하고, 직접 코드를 작성하고 수정해보면서 이해하였습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> 이제까지 해왔던 NAVER 사이트 카피캣과는 차이점이 많아서, 이를 코드로 구현하는 것이 재미있었습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] 21.08.19 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.19-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.19-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Wed, 18 Aug 2021 05:11:32 GMT</pubDate>
            <description><![CDATA[<h1 id="□-트위치-12">□ 트위치 1/2</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_08_Twitch">Git 링크.트위치</a></p>
<h2 id="1-트위치-상단-영역">1. 트위치 상단 영역</h2>
<p>● 결과 스크린샷
<img src="https://images.velog.io/images/rim_chaeeop/post/f3dc42e8-70cd-4731-bc18-95399d9c5b9f/twitch_header.JPG" alt="twitch_header"></p>
<h2 id="2-트위치-메인-영역">2. 트위치 메인 영역</h2>
<p>● <code>left-area</code> 영역이 화면의 크기가 변하더라도, 그에 맞춰 화면에 채워지도록 하는 방법</p>
<ul>
<li><code>position</code>이 3차원인 상태에서 <code>top</code>의 값을 지정하고, <code>bottom: 0;</code>을 설정하면 공간이 늘어지게 됨</li>
</ul>
<p>예시)</p>
<pre><code>.left-area {
    position: fixed;    
    width: 240px;     
    background-color: #202024;

    top: 52px;
    left: 0;
    bottom: 0;
}</code></pre><p>● 결과 스크린샷
<img src="https://images.velog.io/images/rim_chaeeop/post/373b50a8-66b2-40f9-a2f7-32ad3d5a74dd/twitch_main_left.JPG" alt="twitch_main_left"></p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> 특별히 어려웠던 내용은 없었습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 강의내용에 따라 코드를 작성하고, 필요한 부분은 직접 코드를 수정하였습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> <code>position: fixed</code>의 사용에 대해 잘 이해할 수 있었습니다. 그리고 사이트마다 자신들의 코드 내용을 보호하기 위해 다양한 방법을 사용하고 있다는 것을 알 수 있었습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] 21.08.18 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.18-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.18-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Tue, 17 Aug 2021 04:37:12 GMT</pubDate>
            <description><![CDATA[<h1 id="□-네이버-오디오클립-33">□ 네이버 오디오클립 3/3</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_07_naver_copycat">Git 링크.네이버 오디오클립</a></p>
<h2 id="1-오디오클립-메인-오른쪽-영역">1. 오디오클립 메인 오른쪽 영역</h2>
<p>● <code>display: inline-block</code> 상태에서는 <code>margin: 0 auto;</code> (x축 가운데 정렬)이 적용되지 않기에, <code>display: block</code>으로 바꿔줘야 함</p>
<p>● 결과 스크린샷(인기채널 소개 &amp; 오늘의 발견)
<img src="https://images.velog.io/images/rim_chaeeop/post/5a0285e1-f215-453d-a873-1a4b85c748f9/audio_main_right_intro_discovery.JPG" alt="audio_main_right_intro_discovery"></p>
<p>● 결과 스크린샷(오디오클립 안내)
<img src="https://images.velog.io/images/rim_chaeeop/post/3cdbdea3-1223-4f77-8438-03cd00033ef6/audio_main_right_create.JPG" alt="audio_main_right_create"></p>
<h2 id="2-오디오클립-메인-하단-영역">2. 오디오클립 메인 하단 영역</h2>
<p>● 결과 스크린샷
<img src="https://images.velog.io/images/rim_chaeeop/post/32918220-cb60-4659-9874-c877106d3505/audio_footer.JPG" alt="audio_footer"></p>
<h2 id="3-오디오클립-카테고리-영역">3. 오디오클립 카테고리 영역</h2>
<p>● <code>nth-child()</code> 활용 방법
① <code>li</code> 태그 중에서 홀수의 <code>li</code>태그에만 적용하기(<code>odd</code>)</p>
<p>예시)</p>
<pre><code>.audio-category .audio-category-lists .category-list:nth-child(odd) a {
    background-color: green;
}</code></pre><p>② <code>li</code> 태그 중에서 짝수의 <code>li</code>태그에만 적용하기 (<code>even</code>)</p>
<p>예시)</p>
<pre><code>.audio-category .audio-category-lists .category-list:nth-child(even) a {
    background-color: blue;
}</code></pre><p>● 결과 스크린샷(카테고리 영역 메인)
<img src="https://images.velog.io/images/rim_chaeeop/post/951aaabc-e80e-42bc-914d-60c79b7d7347/audio_category_main.JPG" alt="audio_category_main"></p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> 특별히 어려웠던 내용은 없었습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 강의내용에 따라 코드를 작성하고, 필요한 부분은 직접 코드를 수정하였습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> 어떤 부분을 공통영역으로 정하고, CSS코드를 작성해야 하는지를 점차 알아가고 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] 21.08.17 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.17-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.17-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Mon, 16 Aug 2021 06:01:37 GMT</pubDate>
            <description><![CDATA[<h1 id="□-네이버-오디오클립-23">□ 네이버 오디오클립 2/3</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_07_naver_copycat">Git 링크.네이버 오디오클립</a></p>
<h2 id="1-오디오클립-메인-왼쪽-영역">1. 오디오클립 메인 왼쪽 영역</h2>
<p>● <code>latter-spacing</code> : 글자간의 간격 조정</p>
<p>예시)</p>
<pre><code>.audio-section .audio-header h2 {
    font-size: 22px;
    font-weight: 500;
    letter-spacing: -.8px;
}</code></pre><p>※ 글자간의 간격을 <code>0.8px</code>만큼 좁힘</p>
<p>● <code>audio-container</code>에서 <code>overflow: hidden</code>을 사용하지 못하는 경우</p>
<ul>
<li>오늘의 오디오클립에서 방향 버튼을 표시하려고 할 때, <code>container</code>에 <code>overflow: hidden</code>이 적용되어 있으면 아래와 같은 결과가 나옴</li>
</ul>
<pre><code>#audio-main .audio-container {
    overflow: hidden;    
}</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/0bf9ccdf-f965-4f75-91c0-d1d920bc3dbc/audio_main_left_audio_today_overflow.JPG" alt="audio_main_left_audio_today_overflow"></p>
<ul>
<li>방향 버튼이 정상적으로 위로 표현되게 하기 위해 <code>overflow: hidden</code>과 <code>float</code>를 사용하지 않고, <code>flex-between</code>를 사용함</li>
</ul>
<pre><code>[html]
&lt;div class=&quot;audio-container audio-flex-between&quot;&gt;

[CSS]
#audio-main .audio-container {    
    align-items: flex-start;
}</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/3f106bef-fc51-4d32-b203-e26e17464e42/audio_main_left_audio_today.JPG" alt="audio_main_left_audio_today"></p>
<p>● 결과 스크린샷(오늘의 오디오클립)
<img src="https://images.velog.io/images/rim_chaeeop/post/3f106bef-fc51-4d32-b203-e26e17464e42/audio_main_left_audio_today.JPG" alt="audio_main_left_audio_today"></p>
<p>● 결과 스크린샷(오디오클립 추천 오리지널 &amp; 나를 위한 플레이리스트)
<img src="https://images.velog.io/images/rim_chaeeop/post/28dd2de4-ce24-405c-8372-23b2a81cf0cb/audio_main_left_original_playlist.JPG" alt="audio_main_left_original_playlist"></p>
<p>● 결과 스크린샷(라이브ON)
<img src="https://images.velog.io/images/rim_chaeeop/post/a8afad73-4bb5-4dc0-97d1-d6a4aca04146/audio_main_left_live.JPG" alt="audio_main_left_live"></p>
<p>● 결과 스크린샷(오디오북 TOP 100 &amp; 새로 나온 채널)
<img src="https://images.velog.io/images/rim_chaeeop/post/94871d4c-9162-4c0d-a16d-2163980b3a97/audio_main_left_book_channel.JPG" alt="audio_main_left_book_channel"></p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> 강의 내용에 덧붙여서 코드를 작성하였을 때, 원하는 결과가 나오지 않아서 이를 수정하는 것이 어려웠습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 시간을 들여서 작성한 부분을 하나하나 검토하고, 수치를 조정하면서 오류를 수정하였습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> 강의 내용을 따라하는 것은 크게 어렵지 않지만, 더 비슷하게 표현하기 위해 추가적인 코드를 작성했을 때, 오류가 생기지 않고 원하는 결과를 나오게 하는게 생각보다 많이 어려웠습니다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] 21.08.13 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.13-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.13-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Thu, 12 Aug 2021 03:03:33 GMT</pubDate>
            <description><![CDATA[<h1 id="□-네이버-e스포츠-33">□ 네이버 e스포츠 3/3</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_07_naver_copycat">Git 링크.네이버e스포츠</a></p>
<h2 id="1-메인-오른쪽-영역">1. 메인 오른쪽 영역</h2>
<p>● 사각형의 네 꼭지점 중, 원하는 곳만 <code>radius</code>값 적용하기</p>
<p>예시)</p>
<pre><code>#esport-news-view li .image-wrap .rank {
    position: absolute;
    background-color: #4e41db;
    border-bottom-right-radius: 4px;

    padding: 4px 10px;

    top: 0;
    left: 0;

    font-size: 13px;
    color: #fff;
    font-weight: 800;
}</code></pre><p>● 결과 스크린샷(특정 부분에만 border-radius 적용)
<img src="https://images.velog.io/images/rim_chaeeop/post/3f1d9099-aaaf-4ff4-8d52-1cf0e8ab4e28/esport_border_bottom_right.JPG" alt="esport_border_bottom_right"></p>
<p>● 폰트 서체 지정하기</p>
<ul>
<li><code>font-family</code>를 사용하여 폰트 서체 지정 가능</li>
<li>브라우저마다 적용 가능한 폰트가 달라서 여러 개의 폰트를 적용함</li>
<li>sans-serif는 모든 브라우저에서 적용 가능한 폰트</li>
</ul>
<p>예시)</p>
<pre><code>* {
    font-family: Arial, Times, sans-serif;
}</code></pre><p>● 구글 폰트 웹에서 받아서 사용하기 – <a href="https://fonts.google.com/">https://fonts.google.com/</a></p>
<p><img src="https://images.velog.io/images/rim_chaeeop/post/97ba2c1d-c259-4a2b-88bd-db5f811ba45d/google_font_use.JPG" alt="google_font_use"></p>
<p>① 구글 폰트에서 원하는 서체를 선택하기
② 원하는 폰트 <code>weight style</code>을 선택하고 <code>link</code>를 복사하여 코드에 붙여넣기(※ CSS <code>link</code>보다 위에)
※ 폰트마다 적용가능한 <code>weight</code>가 각각 다름</p>
<p>예시)</p>
<pre><code>[html]

&lt;head&gt;

    &lt;meta charset=&quot;utf-8&quot;&gt;

    &lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
    &lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.gstatic.com&quot; crossorigin&gt;
    &lt;link href=&quot;https://fonts.googleapis.com/css2?family=Nanum+Gothic:wght@400;700;800&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/style.css&quot;&gt;

&lt;/head&gt;</code></pre><pre><code>[CSS]

* {
    font-family: &#39;Nanum Gothic&#39;, sans-serif;
}</code></pre><p>● 결과 스크린샷(많이 본 뉴스)
<img src="https://images.velog.io/images/rim_chaeeop/post/1a68ce09-b3f2-469f-9023-c7a54638d0be/esport_main_right_news_view.JPG" alt="esport_main_right_news_view"></p>
<p>● 결과 스크린샷(경기 일정/결과)
<img src="https://images.velog.io/images/rim_chaeeop/post/78f40f82-718e-4e03-8424-204fc1e78bee/esport_main_right_schudule.JPG" alt="esport_main_right_schudule"></p>
<h1 id="□-네이버-오디오클립-13">□ 네이버 오디오클립 1/3</h1>
<h2 id="1-오디오클립-상단-영역">1. 오디오클립 상단 영역</h2>
<p>● 활성화된 메뉴 하단에 밑줄 생성하는 방법 중 하나
<img src="https://images.velog.io/images/rim_chaeeop/post/68487dc9-1923-4663-b403-f11c0687835c/audio_header_active.JPG" alt="audio_header_active"></p>
<ul>
<li>3차원 공간(<code>position:</code> <code>fixed</code>, <code>relative</code>, <code>absolute</code>)에서 이용하는 방법</li>
<li><code>top, bottom, left, right</code>를 이용하여 공간을 만듬</li>
</ul>
<p>예시)</p>
<pre><code>[html]

&lt;ul class=&quot;audio-flex-end&quot;&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot; class=&quot;active&quot;&gt;&lt;span&gt;홈&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;랭킹&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;연재 채널&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;오디오북&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;카테고리&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;이벤트&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;                        
&lt;/ul&gt;</code></pre><pre><code>[CSS]

#audio-header .audio-nav-left li a {    
    display: block;
    font-size: 17px;
    padding: 12px 13px 17px 12px;    
}

#audio-header .audio-nav-left li a.active {
    font-weight: 700;
}

#audio-header .audio-nav-left li a span {
    position: relative;
    display: inline-block;
    height: 21px;
}

#audio-header .audio-nav-left li a.active span::after{
    display: block;
    position: absolute;
    content: &#39;&#39;;     
    border-bottom: solid 3px #222222;
    border-radius: 1.5px;

    z-index: 1;

    left: -4.5px;
    right: -5.5px;
    bottom: -22px;
}</code></pre><p>● 결과 스크린샷(오디오클립 상단 영역)
<img src="https://images.velog.io/images/rim_chaeeop/post/23eb5663-3e94-47c6-bf71-5eb6bf18312c/audio_header.JPG" alt="audio_header"></p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> 강의내용에 덧붙여서 자신의 판단에 따라 코드를 수정하고, 원하는 결과가 나오게 하는 것이 어려웠습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 이전에 배운 강의 내용을 참고하고, 인터넷에서 다른 사람들이 올려놓은 자료와 방법을 참고하여 수정하였습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> 따라하는 것만이 아니라 자신이 생각하기에 더 나은 방법을 적용하는 것이 어렵다는 것을 새삼 깨달았습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] 21.08.12 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.12-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.12-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Wed, 11 Aug 2021 05:06:21 GMT</pubDate>
            <description><![CDATA[<h1 id="□-네이버-e스포츠-23">□ 네이버 e스포츠 2/3</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_07_naver_copycat">Git 링크.네이버e스포츠</a></p>
<h2 id="1-메인-왼쪽-영역">1. 메인 왼쪽 영역</h2>
<p>● 기사 영역 3분할(1:0.5:0.5) 방법
<img src="https://images.velog.io/images/rim_chaeeop/post/b96a0d16-e943-4532-b597-db3801fd32d9/esport_main_left_article_ex.JPG" alt="esport_main_left_article_ex"></p>
<ul>
<li><code>float</code> 기능과 <code>width: %</code>값, <code>height: %</code>값을 사용하여 구역을 3분할함</li>
</ul>
<p>예시)</p>
<pre><code>[html]

&lt;div id=&quot;esport-main-article&quot;&gt;

     &lt;div class=&quot;article full&quot;&gt;

     &lt;/div&gt;

     &lt;div class=&quot;article&quot;&gt;

     &lt;/div&gt;

     &lt;div class=&quot;article&quot;&gt;

     &lt;/div&gt;

&lt;/div&gt;</code></pre><pre><code>[CSS]

#esport-main-article {
    overflow: hidden;
    width: 100%;
    height: 468px;    
    border-radius: 10px;
}

#esport-main-article .article {
    float: left;
    width: 50%;
    height: 50%;
}

#esport-main-article .article.full {
    height: 100%;    
}</code></pre><p>● 결과 스크린샷(3분할)
<img src="https://images.velog.io/images/rim_chaeeop/post/1ab3135c-e434-499a-8eb5-5faf0cac03c8/esport_main_left_article_3_section.JPG" alt="esport_main_left_article_3_section"></p>
<p>● 2줄 이상의 문장에 대한 말줄임 표현하기</p>
<p>① CSS에서 아래의 내용을 넣음</p>
<pre><code>  display: -webkit-box; 
  -webkit-line-clamp: 3; 
  -webkit-box-orient: vertical;  

  overflow: hidden;
  text-overflow: ellipsis;</code></pre><p>② <code>height</code> 혹은 <code>max-height</code>로 높이 설정</p>
<p>예시)</p>
<pre><code>#esport-main-article .article .txt-wrap p {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;

    overflow: hidden;
    text-overflow: ellipsis;    

    max-height: 57px;    

    margin-top: 5px;

    font-size: 14px;
    font-weight: 500;
    line-height: 19px;
}</code></pre><p>● 결과 스크린샷(3분할&amp;경기 다시보기)
<img src="https://images.velog.io/images/rim_chaeeop/post/3e1bdc93-3f2d-4f1e-8090-baa08322ae47/esport_main_left_section_1_2.JPG" alt="esport_main_left_section_1_2"></p>
<p>● 결과 스크린샷(추천뉴스&amp;전문가 칼럼)
<img src="https://images.velog.io/images/rim_chaeeop/post/c38b86f6-7718-43b5-bc06-02437570e9f5/esport_main_left_section_3_4.JPG" alt="esport_main_left_section_3_4"></p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> 특별히 어려운 점은 없었습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 강의 내용에 따라 순서대로 코드를 작성하여 해결하였습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> 반복학습을 통해 사이트를 보면 어떻게 구성이 되어있고, 이를 코드로 작성하면 어떻게 해야하는지가 익숙해지고 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] 21.08.11 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.11-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.11-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Tue, 10 Aug 2021 02:56:31 GMT</pubDate>
            <description><![CDATA[<h1 id="□-네이버-e스포츠-13">□ 네이버 e스포츠 1/3</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_07_naver_copycat">Git 링크.네이버e스포츠</a></p>
<h2 id="1-상단-영역">1. 상단 영역</h2>
<p>● 결과 스크린샷
<img src="https://images.velog.io/images/rim_chaeeop/post/5de716ce-cebd-4158-97d8-a00810f5fdfc/esport_header.JPG" alt="esport_header"></p>
<h2 id="2-메인-top-영역">2. 메인 Top 영역</h2>
<p>● 형제관계의 레이아웃 겹침현상 수정 </p>
<ul>
<li><p>상단 영역이 <code>position: fixed</code>를 사용하여 3차원이 되어 <code>main</code>영역과 레이아웃이 겹치게 됨
<img src="https://images.velog.io/images/rim_chaeeop/post/af1cce70-36ad-4bcd-97f7-a93a542dfe71/esport_main_top_pd_top_x.JPG" alt="esport_main_top_pd_top_x"></p>
</li>
<li><p>이를 수정하기 위해 <code>padding-top</code>값을 상단영역의 <code>height</code>값(※ <code>border</code>값 포함)만큼 넣어줌
<img src="https://images.velog.io/images/rim_chaeeop/post/b02304c3-958d-42ef-9629-0d485508ee89/esport_main_top_pd_top_o.JPG" alt="esport_main_top_pd_top_o"></p>
</li>
</ul>
<p>● 결과 스크린샷(Timeline 영역)
<img src="https://images.velog.io/images/rim_chaeeop/post/c2e4658b-7168-43cb-917c-600007fce2e2/esport_main_top_timeline.JPG" alt="esport_main_top_timeline"></p>
<p>● 결과 스크린샷(Live 영역)
<img src="https://images.velog.io/images/rim_chaeeop/post/8a6c1251-3871-4864-9045-f1bb82d5d65c/esport_main_top_live.JPG" alt="esport_main_top_live"></p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> <code>position: fixed</code>를 자주 사용하지 않다보니, <code>fixed</code>만 적용했을 때 어떻게 수정해야하는지가 바로 생각나지 않았습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 강의 내용에 따라 순서대로 코드를 작성하여 해결하였습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> 마진병합현상이나 형제관계의 레이아웃 겹침현상이 발생했을 때, 이를 수정하는 방법을 많이 공부해야겠다는 생각을 하게 되었습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] 21.08.10 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.10-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.10-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Mon, 09 Aug 2021 04:06:04 GMT</pubDate>
            <description><![CDATA[<h1 id="□-네이버게임-33">□ 네이버게임 3/3</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_07_naver_copycat">Git 링크.네이버게임</a></p>
<h2 id="1-네이버게임-메인-오른쪽">1. 네이버게임 메인 오른쪽</h2>
<p>● 결과 스크린샷(최근 방문 영역)
<img src="https://images.velog.io/images/rim_chaeeop/post/351162a3-4b31-4bb4-b056-b270f5e3de6b/game_main_right_visitor.JPG" alt="최근 방문 영역"></p>
<p>● 결과 스크린샷(인기 게임라운지 및 급상승 게임 라운지 영역)
<img src="https://images.velog.io/images/rim_chaeeop/post/2bd537e0-f3ee-468a-8fa9-d5bc3eba8d10/game_main_right_popular.JPG" alt="게임 라운지 영역"></p>
<p>● 결과 스크린샷(e스포츠 주요 뉴스 영역)
<img src="https://images.velog.io/images/rim_chaeeop/post/5c38a1f4-be60-44b5-be00-53479179869f/game_main_right_news.JPG" alt="e스포츠 주요 뉴스 영역"></p>
<p>● 결과 스크린샷(이번주 신생 라운지 및 이용약관 영역)
<img src="https://images.velog.io/images/rim_chaeeop/post/453095a6-306a-4bbf-abce-b64775344390/game_main_right_week_footer.JPG" alt="신생라운지 및 이용약관 영역"></p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> 폰트마다 같은 <code>font-size</code>값을 적용하더라도 나오는 글자 크기 결과가 차이가 있어서, 이를 네이버게임 사이트와 유사하게 맞추는 것이 어려웠습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 브라우저의 검사를 통해 속성값을 수정해보면서 원하는 결과값을 맞췄습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> 코드를 작성하면서 공통으로 사용될 수 있는 영역을 따로 CSS에 작성해놓으면, 그만큼 코드 작성 시간이 줄어들 수 있다는 것을 점점 확실히 체감하고 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] 21.08.06 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.06-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.06-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Fri, 06 Aug 2021 03:11:13 GMT</pubDate>
            <description><![CDATA[<h1 id="□-네이버게임-23">□ 네이버게임 2/3</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_07_naver_copycat">Git 링크.네이버게임</a></p>
<h2 id="1-네이버게임-메인-왼쪽-22">1. 네이버게임 메인 왼쪽 2/2</h2>
<p>● 결과 스크린샷(section-3)
<img src="https://images.velog.io/images/rim_chaeeop/post/8db61d3c-f935-48ec-9800-e2982fc4a98a/game_main_section_3.JPG" alt="game_main_section_3"></p>
<p>● 결과 스크린샷(section-4)
<img src="https://images.velog.io/images/rim_chaeeop/post/f71ba678-ede3-4068-a45f-46abb47936f8/game_main_section_4.JPG" alt="game_main_section_4"></p>
<p>● 결과 스크린샷(section-5)
<img src="https://images.velog.io/images/rim_chaeeop/post/b9a151d2-ef1d-45b6-a1c4-4894a7c9e386/game_main_section_5.JPG" alt="game_main_section_5"></p>
<p>● 결과 스크린샷(section-6)
<img src="https://images.velog.io/images/rim_chaeeop/post/efbfe220-25db-4963-9d5c-bf8a7c77610e/game_main_section_6.JPG" alt="game_main_section_6"></p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> CSS에 공통영역으로 작성한 내용과 커스텀해야하는 내용이 자주 번갈아가면서 나와서, 이를 오류없이 적용하는게 어려웠습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 차근차근 코드를 작성하고, 브라우저의 검사를 통해 오류를 찾아 수정하였습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> 앞서 만들어진 부분을 복사하여 커스텀하다보니, id나 class 명칭 차이로 인한 전혀 다른 결과값들을 수정하는 것이 힘들었습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] 21.08.05 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.05-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.05-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Thu, 05 Aug 2021 05:43:22 GMT</pubDate>
            <description><![CDATA[<h1 id="□-네이버게임-13">□ 네이버게임 1/3</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_07_naver_copycat">Git 링크.네이버게임</a></p>
<h2 id="1-네이버게임">1. 네이버게임</h2>
<p>● <code>css in js</code> : 자바 스크립트를 기반으로 하여 <code>css</code>를 적용하는 방법</p>
<p>● <code>box-shadow</code> : 영역에 그림자를 넣는 속성
참고 사이트 : <a href="https://cssgenerator.org/box-shadow-css-generator.html">https://cssgenerator.org/box-shadow-css-generator.html</a></p>
<h2 id="2-네이버게임-상단">2. 네이버게임 상단</h2>
<p>● 검색창 테두리에 <code>radius</code> 효과 나타내기</p>
<p><code>[html]</code></p>
<pre><code>&lt;div class=&quot;search-wrap game-flex-start&quot;&gt;
     &lt;input type=&quot;text&quot; placeholder=&quot;라운지, 게시물 검색&quot;&gt;
     &lt;button type=&quot;button&quot; class=&quot;btn-search&quot;&gt;&lt;/button&gt;
&lt;/div&gt;</code></pre><p><code>[css]</code></p>
<pre><code>#game-header nav .right .search-wrap {
    width: 300px;
    border-radius: 20px;
    background-color: rgba(0, 0, 0, .28);
}</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/63a09498-861e-4b8e-92cf-8139ca49de78/game_search_overflow_x.JPG" alt="game_search_overflow_x"></p>
<ul>
<li>위의 상태에서는 <code>input</code>과 <code>button</code>의 영역으로 인해 테두리의 <code>radius</code> 효과가 보이지 않음</li>
<li>효과를 표현하기 위해 <code>search-wrap { }</code>에 <code>overflow: hidden</code>을 적용함</li>
</ul>
<pre><code>#game-header nav .right .search-wrap {
    width: 300px;
    border-radius: 20px;
    background-color: rgba(0, 0, 0, .28);

    overflow: hidden;
}</code></pre><p><img src="https://images.velog.io/images/rim_chaeeop/post/b4aee030-d52c-4d10-8006-6284fb263cd8/game_search_overflow_o.JPG" alt="game_search_overflow_o"></p>
<p>● 영역에 마우스를 가져다 놓을 때, 위로 부드럽게 동작하게 하기</p>
<ul>
<li><code>css</code>에서 <code>event-wrap</code>과 <code>event-wrap:hover</code>를 사용하여 아래의 코드를 입력함</li>
<li><code>top</code>을 사용해 위치를 지정하고, <code>trasition</code>을 통해 부드러운 움직임을 표현함</li>
</ul>
<pre><code>#game-header .game-events-wrap .event-wrap {
    position: relative;
    width: 407px;
    height: 264px;
    border-radius: 40px;

    top: 0;
    transition: top linear 0.2s;
}

#game-header .game-events-wrap .event-wrap:hover {
    top: -10px;
}</code></pre><p>● 결과 스크린샷
<img src="https://images.velog.io/images/rim_chaeeop/post/d565e34d-8fa1-4a69-8154-646c2386c7fb/game_footer.JPG" alt="game_footer"></p>
<h2 id="3-네이버게임-메인-왼쪽-12">3. 네이버게임 메인 왼쪽 1/2</h2>
<p>● 결과 스크린샷(section-1)
<img src="https://images.velog.io/images/rim_chaeeop/post/e1a7b9f0-03e6-423d-b29f-afb8321df553/game_main_section_1.JPG" alt="game_main_section_1"></p>
<p>● 결과 스크린샷(section-2)
<img src="https://images.velog.io/images/rim_chaeeop/post/8e26abe3-e6dc-46f7-b6f8-a74c57e3af7a/game_main_section_2.JPG" alt="game_main_section_2"></p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> CSS에 공통영역으로 작성한 내용과 커스텀해야하는 내용이 자주 번갈아가면서 나와서, 이를 오류없이 적용하는게 어려웠습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 차근차근 코드를 작성하고, 브라우저의 검사를 통해 오류를 찾아 수정하였습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> 반복되는 내용에 대한 공통영역 작성이 많아서, 이에 대한 적절한 명칭과 커스텀해야하는 부분을 가려내는 것이 많이 헷갈렸습니다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] 21.08.04 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.04-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.04-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Wed, 04 Aug 2021 02:49:45 GMT</pubDate>
            <description><![CDATA[<h1 id="□-네이버-뉴스--tv연예-페이지-33">□ 네이버 뉴스 – TV연예 페이지 3/3</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_07_naver_copycat">Git 링크.네이버 TV연예</a></p>
<h2 id="1-tv연예-메인-오른쪽">1. TV연예 메인 오른쪽</h2>
<p>● 결과 스크린샷(section-10 &amp; banner)
<img src="https://images.velog.io/images/rim_chaeeop/post/4d306cd0-b13e-41f7-a0a4-b7501f5e6165/ent_main_right_section_10_banner.JPG" alt="ent_main_right_section_10_banner"></p>
<p>● 결과 스크린샷(section-11)
<img src="https://images.velog.io/images/rim_chaeeop/post/608fdb9a-3308-459b-a767-08574aefdbac/ent_main_right_section_11.JPG" alt="ent_main_right_section_11"></p>
<p>● 결과 스크린샷(section-12)
<img src="https://images.velog.io/images/rim_chaeeop/post/f4366821-71a3-49e1-912a-f177425f08e6/ent_main_right_section_12.JPG" alt="ent_main_right_section_12"></p>
<p>● 결과 스크린샷(section-13)
<img src="https://images.velog.io/images/rim_chaeeop/post/a92551f3-71c7-4096-8dd4-51b7384663a8/ent_main_right_section_13.JPG" alt="ent_main_right_section_13"></p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> 특별히 어려운 내용은 없었습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 이해가 안되는 부분은 강의를 반복해서 들어서 해결하였습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> 코드를 작성하는데 점차 걸리는 시간이 줄어들고, 어떻게 더 효율적으로 코드를 작성해야 하는지 고민하고 이를 코드에 반영하였습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] 21.08.03 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.03-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.03-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Tue, 03 Aug 2021 05:15:43 GMT</pubDate>
            <description><![CDATA[<h1 id="□-네이버-뉴스--tv연예-페이지-23">□ 네이버 뉴스 – TV연예 페이지 2/3</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_07_naver_copycat">Git 링크.네이버 TV연예</a></p>
<h2 id="1-tv연예-메인-왼쪽-22">1. TV연예 메인 왼쪽 2/2</h2>
<p>● <code>{ box-sizing: border-box }</code>의 사용유무 차이점( ※ <code>li{ }</code> 에 <code>width</code> 값과 <code>border</code>값이 있는 상태)</p>
<p>예시)</p>
<pre><code>#ent-main .ent-left #ent-section-9 li {
    width: 200px;
    border: solid 1px #000000;
}

#ent-main .ent-left #ent-section-9 li a img {
    width: 200px;
    height: 122px;
}</code></pre><p>① 사용하지 않을 경우 – <code>li img{ }</code> 의 <code>width</code> 값이 <code>li</code>의 <code>width</code>값과 같아도 <code>img</code>가 <code>border</code>를 침범하지 않음</p>
<p><img src="https://images.velog.io/images/rim_chaeeop/post/6511b571-dd7a-4a11-8e94-a610d1d0d49d/ent_borderbox_x.JPG" alt="ent_borderbox_x"></p>
<p>② 사용할 경우 - <code>li img{ }</code> 의 <code>width</code> 값이 <code>li</code>의 <code>width</code>값과 같으면 <code>img</code>가 <code>border</code>를 침범함</p>
<p><img src="https://images.velog.io/images/rim_chaeeop/post/abe84f49-2a77-4228-b525-4c7cad61cec9/ent_borderbox_o.JPG" alt="ent_borderbox_o"></p>
<p>→ 침범하지 않으려면 <code>li img{ }</code> 의 <code>width</code> 값을 100%로 함</p>
<p>예시)</p>
<pre><code>#ent-main .ent-left #ent-section-9 li a img {
    width: 100%;
    height: 122px;
}</code></pre><p>● 결과 스크린샷(section-4)
<img src="https://images.velog.io/images/rim_chaeeop/post/9a283857-51b3-4d00-8e26-a9d774d6a4cd/ent_main_left_section_4.JPG" alt="ent_main_left_section_4"></p>
<p>● 결과 스크린샷(section-5~6)
<img src="https://images.velog.io/images/rim_chaeeop/post/220b7ffe-edee-416a-b881-f27f3606969a/ent_main_left_section_5_6.JPG" alt="ent_main_left_section_5_6"></p>
<p>● 결과 스크린샷(section-7)
<img src="https://images.velog.io/images/rim_chaeeop/post/d4f08510-d3fb-4b3f-8b54-488e28649b46/ent_main_left_section_7.JPG" alt="ent_main_left_section_7"></p>
<p>● 결과 스크린샷(section-8)
<img src="https://images.velog.io/images/rim_chaeeop/post/117fff6e-3c49-4a82-8a4b-403c6baafeb0/ent_main_left_section_8.JPG" alt="ent_main_left_section_8"></p>
<p>● 결과 스크린샷(section-9)
<img src="https://images.velog.io/images/rim_chaeeop/post/13bfa550-1351-4c72-a3ec-986c2c2eb482/ent_main_left_section_9.JPG" alt="ent_main_left_section_9"></p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> 특별히 어려운 내용은 없었습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 이해가 안되는 부분은 강의를 반복해서 들어서 해결하였습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> 강의 내용을 보면서 실제 코드를 작성하였을 때, 원하는 결과값이 나오지 않을 경우 문제점을 직접 찾아서 수정을 할 수 있었습니다. 그리고 카피캣을 좀 더 비슷하게 하기위해 직접 수치나 속성값을 주어서 더 나아보이도록 노력하였습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[대구AI스쿨] 21.08.02 개발일지]]></title>
            <link>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.02-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</link>
            <guid>https://velog.io/@rim_chaeeop/%EB%8C%80%EA%B5%ACAI%EC%8A%A4%EC%BF%A8-21.08.02-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80</guid>
            <pubDate>Mon, 02 Aug 2021 04:36:59 GMT</pubDate>
            <description><![CDATA[<h1 id="□-네이버-뉴스--tv연예-페이지-13">□ 네이버 뉴스 – TV연예 페이지 1/3</h1>
<h3 id="★-작성코드">★ 작성코드</h3>
<p><a href="https://github.com/Rimroid/Study_File/tree/main/2021_07_naver_copycat">Git 링크.네이버 TV연예</a></p>
<h2 id="1-tv연예-상단">1. TV연예 상단</h2>
<p>● <code>margin</code> 병합 현상</p>
<ul>
<li>형제 관계에서 공통된 공백이 있는 경우, 큰 값이 작은 값을 병합함</li>
<li>형제 관계에서는 <code>margin</code> 병합 현상이 <code>top, bottom</code>에서만 일어나고 <code>left, right</code>에서는 일어나지 않음</li>
</ul>
<p>● 결과 스크린샷
<img src="https://images.velog.io/images/rim_chaeeop/post/424d344d-7cf9-415f-8b2d-14719624da5a/ent_header.JPG" alt="ent_header"></p>
<h2 id="2-tv연예-메인-왼쪽-12">2. TV연예 메인 왼쪽 1/2</h2>
<p>● <code>{ letter-spacing }</code> : 글자간 간격 조정</p>
<p>예시)</p>
<pre><code>#ent-main .ent-left #ent-media-headline .media-bottom p {
    font-size: 14px;
    font-weight: 700;
    letter-spacing: -1px;
}</code></pre><p>● 결과 스크린샷
<img src="https://images.velog.io/images/rim_chaeeop/post/42284bb0-fa9e-4a1e-9716-47241d3441f7/ent_main_left_1.JPG" alt="ent_main_left_1"></p>
<h2 id="□-어려웠던-점">□ 어려웠던 점</h2>
<p> 특별히 어려운 내용은 없었습니다.</p>
<h2 id="□-해결방법">□ 해결방법</h2>
<p> 이해가 안되는 부분은 강의를 반복해서 들어서 해결하였습니다.</p>
<h2 id="□-학습-소감">□ 학습 소감</h2>
<p> 사이트의 구조를 어떻게 체계적으로 만드는 가에 대해 생각하게 되었고, 그 구조에서 반복 활용될 수 있는 부분을 찾아내서 재활용하는 것에 익숙해져가고 있습니다.</p>
]]></description>
        </item>
    </channel>
</rss>