<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>dev_yjsong.log</title>
        <link>https://velog.io/</link>
        <description>주니어 개발자가 되기까지</description>
        <lastBuildDate>Wed, 16 Nov 2022 18:13:19 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. dev_yjsong.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/dev_yjsong" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[원시타입 객체타입 차이점]]></title>
            <link>https://velog.io/@dev_yjsong/%EC%9B%90%EC%8B%9C%ED%83%80%EC%9E%85-%EA%B0%9D%EC%B2%B4%ED%83%80%EC%9E%85-%EC%B0%A8%EC%9D%B4%EC%A0%90</link>
            <guid>https://velog.io/@dev_yjsong/%EC%9B%90%EC%8B%9C%ED%83%80%EC%9E%85-%EA%B0%9D%EC%B2%B4%ED%83%80%EC%9E%85-%EC%B0%A8%EC%9D%B4%EC%A0%90</guid>
            <pubDate>Wed, 16 Nov 2022 18:13:19 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/dev_yjsong/post/129cba2c-fd9b-4509-a1e8-facf735af9a3/image.png" alt=""></p>
<p>위 이미지랑 똑같은 내용으로 좀 더 간략하게 보면 아래와 같다.
<img src="https://velog.velcdn.com/images/dev_yjsong/post/34e003ea-111e-45ae-8928-1d59b118d906/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/dev_yjsong/post/ed3c1552-d553-4602-b56e-01bd66f69296/image.png" alt=""></p>
<blockquote>
<p>중요 포인트! 객체타입은 const 상수로 선언해도 프로퍼티의 값을 수정할 수 있다. </p>
</blockquote>
<pre><code class="language-javascript">const obj = {
    name: &#39;eugene&#39;;  
};  

obj = {
    name: &#39;james&#39;;  
};  
//이렇게 레퍼런스 변경은 불가능하다.

obj.name = &#39;james&#39;
//그러나 레퍼런스가 갖고있는 프로퍼티의 값은 변경이 가능하다. </code></pre>
<p>자바스크립트를 공부하다보면 자연스럽게 익히게 되는 부분이었다고 생각했는데 코드가 복잡해지면서 안다고 생각했던 것도 꼬이고 헷갈리게 돼서 이미지로 정리해본다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[함수 선언문 / 함수 리터럴 차이점]]></title>
            <link>https://velog.io/@dev_yjsong/%ED%95%A8%EC%88%98-%EC%84%A0%EC%96%B8%EB%AC%B8-%ED%95%A8%EC%88%98-%EB%A6%AC%ED%84%B0%EB%9F%B4-%EC%B0%A8%EC%9D%B4%EC%A0%90</link>
            <guid>https://velog.io/@dev_yjsong/%ED%95%A8%EC%88%98-%EC%84%A0%EC%96%B8%EB%AC%B8-%ED%95%A8%EC%88%98-%EB%A6%AC%ED%84%B0%EB%9F%B4-%EC%B0%A8%EC%9D%B4%EC%A0%90</guid>
            <pubDate>Tue, 15 Nov 2022 15:24:43 GMT</pubDate>
            <description><![CDATA[<h3 id="함수-선언문-기명-함수">함수 선언문 (기명 함수)</h3>
<p>함수 선언문은 함수리터럴과 function키워드, 함수명, 매개변수, 함수 몸체로 동일하게 이루어져 있다.</p>
<pre><code class="language-javascript">// 함수 선언문과 함수 리터럴의 구성 요소 
function 함수명(매개변수) {
    함수 몸체
}</code></pre>
<pre><code class="language-javascript">&lt;javascript&gt;
// 함수 선언문(기명함수) 
function speak(name) {
    console.log(`hello ${name}`);    
}

// 함수 선언문에 함수명을 없애면 
function(name) {
    console.log(`hello ${name}`);    
} //SyntaxError</code></pre>
<h3 id="함수-리터럴">함수 리터럴</h3>
<p>리터럴은 <strong>값을 생성하기 위한 표기법이다.</strong> 쉽게 말해 값을 생성함과 동시에 변수 선언을 해준다고 생각하면 될 듯 하다. (값은 변수가 있어야만 하니까)</p>
<pre><code class="language-javascript">//좌항이 변수, 우항에 위치한 값들이 리터럴이다. 

//일반적인 리터럴
const a = 1;

//함수 리터럴
const b = function funName(parameter) {
    return parameter;    
};

//객체 리터럴
const c = {
    cName1: cValue1,
    cName2: cValue2
};</code></pre>
<h3 id="함수-선언문과-함수-리터럴-구분법">함수 선언문과 함수 리터럴 구분법</h3>
<p>함수 리터럴이 단독으로 사용되었으며, 기명 함수이면 함수 선언문으로 인식된다. 
간단히 생각하면 함수에 변수가 선언됐느냐, 안됐느냐로 구분하면 쉬울 것 같다.
변수가 없다면 함수 선언문으로, 변수가 있다면 함수를 값으로 할당 가능한 함수 표현식으로 작동한다.</p>
<pre><code class="language-javascript">//함수 선언문 (함수 리터럴 단독, 기명 함수 조건을 충족했다.)
function speak(name) {
    console.log(`hello ${name}`);    
}

speack(&#39;yujin&#39;); //hello yujin


//함수 리터럴(변수 선언문이자 함수표현식이다. 즉,익명함수가 가능하다. 함수명을 생략할 수 있다.)
const b = function speak(name) {
    console.log(`hello ${name}`);        //함수가 변수의 값으로 할당되었다.
};

b(&#39;yujin&#39;); //hello yujin</code></pre>
<p><img src="https://velog.velcdn.com/images/dev_yjsong/post/c3a2ade4-a403-4ad0-a17e-dff6c7568c2c/image.png" alt=""> </p>
<p><img src="https://velog.velcdn.com/images/dev_yjsong/post/735d30d7-72ee-421c-aa47-008de04b4744/image.png" alt=""></p>
<blockquote>
<p><a href="https://velog.io/@heelieben/JavaScript-%ED%95%A8%EC%88%98-%EC%84%A0%EC%96%B8%EB%AC%B8-vs.-%ED%95%A8%EC%88%98-%EB%A6%AC%ED%84%B0%EB%9F%B4">참조: JavaScript | 함수 선언문 vs. 함수 리터럴</a></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Var / Const / String]]></title>
            <link>https://velog.io/@dev_yjsong/variableNameRule</link>
            <guid>https://velog.io/@dev_yjsong/variableNameRule</guid>
            <pubDate>Wed, 05 Oct 2022 19:31:43 GMT</pubDate>
            <description><![CDATA[<p>유튜브로 js 배우는데 한계를 느껴서 Udemy 기초~고급 js 인강을 구매했다. 기초 단계부터 복잡해서 난감하지만 문법부터 알려줘서 좋은 것 같다.</p>
<h3 id="allowed">allowed</h3>
<p><code>let userName</code> :: camelCase라는 띄어쓰기가 없는 소문자+대문자 문법을 사용한다. 
<code>let ageGroup5</code>:: 숫자 사용이 가능하다.
<code>let $kindOfSpecial</code> :: 시작 부분에 달러 특수문자 사용 가능하다. (어느 위치에서도 사용 가능하다.) 
<code>let _internalValue</code> :: 시작 부분에 언더바 사용이 가능하다. (어느 위치에서도 사용 가능하다.)</p>
<h3 id="not-allowed">not allowed</h3>
<p><code>let user_name</code> :: snake case라는 html/css에서 사용되는 문법은 권장하지 않는다.
<code>let 21Players</code> :: 시작 부분이 숫자여서는 안된다. (변수/상수 공통)
<code>let user-b</code> :: $와 언더바를 제외한 모든 특수문자는 사용 불가하다. 띄어쓰기도 불가하다. 언더바는 위치에 상관없이 사용할 수 있지만 시작 부분에만 사용하는 것을 권장한다.
<code>let let</code> :: 변수/상수에 사용되는 키워드 사용이 불가하다. (키워드인지 변수 이름인지 구분이 안되기 때문)</p>
<br>

<h3 id="string">String</h3>
<p><code>&#39;(defaultResult + 10) * 3 / 2 -1&#39;;</code> = <code>백틱(defaultResult + 10) * 3 / 2 -1벡틱;</code>
ㄴ &#39;&#39; 또는 &quot;&quot; 또는 백틱 안에 있는 코드는 전체가 문자열이다.
<img src="https://velog.velcdn.com/images/dev_yjsong/post/51216919-42b1-4be7-a738-c03722ef20a3/image.png" alt=""></p>
<br>

<p><code>&#39;(&#39; + defaultResult + &#39; + 10) * 3 / 2 -1&#39;;</code> = <code>백틱(${defaultResult} + 10) * 3 / 2 -1백틱;</code>
ㄴ 문자열 사이에 데이터 값을 넣는 경우
ㄴ 백틱으로 가독성을 높일 수 있다.
<img src="https://velog.velcdn.com/images/dev_yjsong/post/0eb3e3ba-81c5-4e43-8b24-2b742f070da7/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Git&Terminal]]></title>
            <link>https://velog.io/@dev_yjsong/GitTerminal</link>
            <guid>https://velog.io/@dev_yjsong/GitTerminal</guid>
            <pubDate>Tue, 04 Oct 2022 20:37:48 GMT</pubDate>
            <description><![CDATA[<h3 id="위에서-아래로-세로-형태">위에서 아래로 세로 형태</h3>
<p>컴퓨터 파일 경로는 바탕화면&gt;&gt;폴더1&gt;&gt;폴더2&gt;&gt;파일 순으로 뒤로 가기/앞으로 가기 라고 표현하지만 터미널에선 위/아래로 간다라고 표현한다. 즉, 최하단이 가장 최신 정보.</p>
<h3 id="단-log는-역순">단, Log는 역순</h3>
<p>가장 최신 정보가 최상단에 노출된다. (History(과거) 위에 현재진행형으로 계속 쌓이는 구조) 커밋 여러 개가 쌓여있는걸(History가 쌓이면) 로그라고 한다.</p>
<h3 id="commit-history--시간에-대한-이벤트-타임라인">Commit history :: 시간에 대한 이벤트, 타임라인</h3>
<p>맨 밑에 있는 커밋이 가장 오래됐으며 근본. 즉, Main이다.</p>
<h3 id="branch">Branch</h3>
<p>Main branch는 제일 최초에 생성된다. 이 Main branch를 시작으로 새로운 브랜치들 복사, 파생된다. 협업 관점에서 함부로 건드리지 않는다. (단, 이름이 Main일 뿐 어떠한 의미나 기능이 있는건 아니니 착각X)</p>
<h3 id="origin">Origin</h3>
<p>origin은 핀포인트 개념으로 이해하면 쉽다. Push할 때 마다 위치가 바뀐다. Push란 내가 이 때 github에 백업했다는 의미이다. 그렇기에 HEAD(로컬 위치)와 origin(깃헙 위치)의 위치가 다를 수 있다.
<img src="https://velog.velcdn.com/images/dev_yjsong/post/0a532b0f-1fb9-439e-961d-8565413034fa/image.png" alt=""></p>
<p>자주 사용하는 여러 명령어는 개인 노션에 정리했으니 필요할 때 마다 참고하기.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[MarkDown 문법]]></title>
            <link>https://velog.io/@dev_yjsong/MarkDown-%EB%AC%B8%EB%B2%95</link>
            <guid>https://velog.io/@dev_yjsong/MarkDown-%EB%AC%B8%EB%B2%95</guid>
            <pubDate>Sat, 01 Oct 2022 10:57:59 GMT</pubDate>
            <description><![CDATA[<p>개발자 필수 코스라는 git과 terminal에 대해 공부하다 <code>MarkdDown문법</code>을 알게됐다.</p>
<p>그동안 노션이나 velog 등 개발자들이 주로 사용하는 툴들을 보면 딱히 에디터를 이용하지 않고도, 코딩하듯 <code>&lt;tag&gt;</code>로 바로바로 마크업하듯 글 쓰는 행위에 대한 정확한 명칭을 몰랐는데 <code>MarkDown문법</code>이였다.</p>
<p><code>readme.md</code>는 <code>MarkDown 문법</code>으로  이루어져있다.
<code>h1~h6</code>은 <code>#~######</code>으로.
<code>&lt;u&gt;</code>은 밑줄, <code>&lt;ol&gt;, &lt;ui&gt;</code>은 목록, <code>&lt;a&gt;</code>는 링크, <code>&lt;img&gt;</code>는 이미지 등 HTML 마크업 동일하다. 단, 모든 HTML 마크업을 대신하지 못한다.</p>
<p><code>(Grave)</code>가 1개만 있는게 인라인 코드 강조</p>
<pre><code>(Grave)가 3개있는게 블럭 코드 강조</code></pre><p><code>(Grave)</code> `가 3개 있어도 문자의 양옆에 바로 붙으면 인라인 코드 강조로 사용가능하다.</p>
<p>앞으로 velog를 적을 때 <code>MarkDown문법</code>을 적극활용해보기.
<br>
<a href="https://heropy.blog/2017/09/30/markdown/">참조 블로그-MarkDown 사용법 총정리</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[js 배열과 반복문]]></title>
            <link>https://velog.io/@dev_yjsong/js-%EB%B0%B0%EC%97%B4%EA%B3%BC-%EB%B0%98%EB%B3%B5%EB%AC%B8</link>
            <guid>https://velog.io/@dev_yjsong/js-%EB%B0%B0%EC%97%B4%EA%B3%BC-%EB%B0%98%EB%B3%B5%EB%AC%B8</guid>
            <pubDate>Thu, 22 Sep 2022 14:45:27 GMT</pubDate>
            <description><![CDATA[<p>반복문 <code>while(){}</code>
배열 Array <code>[&quot;대괄호로&quot;, &quot;시작해서&quot;, &quot;대괄호로 끝남&quot;]</code></p>
<pre><code>&lt;h1&gt;Array&lt;/h1&gt;
&lt;script&gt;
    var squad = [&quot;taeil&quot;, &quot;jhonny&quot;, &quot;taeyong&quot;, &quot;yuta&quot;]
 &lt;/script&gt;
&lt;h2&gt;0번째 문자열 출력&lt;/h2&gt;
&lt;script&gt;
    document.write(squad[0]);
&lt;/script&gt;
&lt;h2&gt;문자열 갯수 출력&lt;/h2&gt;
&lt;script&gt;
    document.write(squad.length);
&lt;/script&gt;</code></pre><pre><code>ex) 변수보다 적게 반복 (0,1,2회 총 3번)
&lt;ul&gt;
  &lt;script&gt;
      document.write(&#39;&lt;li&gt;1&lt;/li&gt;&#39;);
      var i = 0; 
      while(i &lt; 3){
      document.write(&#39;&lt;li&gt;2&lt;/li&gt;&#39;);
      document.write(&#39;&lt;li&gt;3&lt;/li&gt;&#39;);
      i = i + 1;
      }
      document.write(&#39;&lt;li&gt;4 &lt;/li&gt;&#39;);
  &lt;/script&gt;
&lt;/ul&gt;</code></pre><pre><code>ex) 변수 length보다 적게 반복 (더 효율적)
&lt;h1&gt;Loop &amp; Array&lt;/h1&gt;
&lt;script&gt;
    var squad = [&#39;taeil&#39;,&#39;jhonny&#39;,&#39;taeyong&#39;,&#39;yuta&#39;];
&lt;/script&gt;
&lt;h2&gt;nct127&lt;/h2&gt;
&lt;ul&gt;
    &lt;script&gt;
    var i = 0;    
    while(i &lt; squad.length){    
    document.write(&#39;&lt;li&gt;&lt;a href=&quot;http://a.com/&#39;+squad[i]+
    &#39;&quot;&gt;&#39;+squad[i]+&#39;&lt;/a&gt;&lt;/li&gt;&#39;);
    i = i + 1;
    }    
    &lt;/script&gt;
&lt;/ul&gt;</code></pre><p><a href="https://www.youtube.com/watch?v=BjkfkKdlvLo&amp;list=PLuHgQVnccGMBB348PWRN0fREzYcYgFybf&amp;index=22&amp;ab_channel=%EC%83%9D%ED%99%9C%EC%BD%94%EB%94%A9">참조 유튜브: 생활코딩-배열과 반복문</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[js 비교연산자/불리언/조건문]]></title>
            <link>https://velog.io/@dev_yjsong/js-%EB%B9%84%EA%B5%90%EC%97%B0%EC%82%B0%EC%9E%90%EB%B6%88%EB%A6%AC%EC%96%B8%EC%A1%B0%EA%B1%B4%EB%AC%B8</link>
            <guid>https://velog.io/@dev_yjsong/js-%EB%B9%84%EA%B5%90%EC%97%B0%EC%82%B0%EC%9E%90%EB%B6%88%EB%A6%AC%EC%96%B8%EC%A1%B0%EA%B1%B4%EB%AC%B8</guid>
            <pubDate>Thu, 22 Sep 2022 10:59:53 GMT</pubDate>
            <description><![CDATA[<p>Comparison operators: 비교 연산자 -&gt; <code>===</code>
Boolean: 불리언 -&gt; <code>true or false</code></p>
<pre><code>ex) true

&lt;h1&gt;1===1&lt;/h1&gt;
&lt;script&gt;
    document.write(1===1);
&lt;/script&gt;</code></pre><pre><code>ex) false

&lt;h1&gt;1===2&lt;/h1&gt;
&lt;script&gt;
    document.write(1===2);
&lt;/script&gt;</code></pre><pre><code>ex) true 

&lt;h1&gt;1&amp;lt;2&lt;/h1&gt;
&lt;script&gt;
    document.write(1&lt;2);
&lt;/script&gt;</code></pre><pre><code>ex) false

&lt;h1&gt;1&amp;lt;1&lt;/h1&gt;
&lt;script&gt;
    document.write(1&lt;1);
&lt;/script&gt;</code></pre><p><code>1&amp;lt;2 = 1 Ampersand less then 2</code> -&gt; <code>1&gt;2</code></p>
<p><a href="https://www.youtube.com/watch?v=A2qp-jpk_XA&amp;list=PLuHgQVnccGMBB348PWRN0fREzYcYgFybf&amp;index=15&amp;ab_channel=%EC%83%9D%ED%99%9C%EC%BD%94%EB%94%A9">참조 유튜브: 생활코딩</a>
<br></p>
<p>if 조건문에는 불리언이 따라온다. </p>
<pre><code>&lt;script&gt;
  document.write(&quot;1&lt;br&gt;&quot;);
  if(true) {
      document.write(&quot;2&lt;br&gt;&quot;);
  } else {
      document.write(&quot;3&lt;br&gt;&quot;);
  }
  document.write(&quot;4&lt;br&gt;&quot;);
&lt;/script&gt;

1
2
4</code></pre><pre><code>&lt;script&gt;
  document.write(&quot;1&lt;br&gt;&quot;);
  if(false) {
      document.write(&quot;2&lt;br&gt;&quot;);
  } else {
      document.write(&quot;3&lt;br&gt;&quot;);
  }
  document.write(&quot;4&lt;br&gt;&quot;);
&lt;/script&gt;  

1
3
4</code></pre><p><img src="https://velog.velcdn.com/images/dev_yjsong/post/d90639ae-a883-4daf-a4de-b8fa3c32399c/image.png" alt=""></p>
<p>조건문을 사용할 땐 중복을 줄이기 위해 리팩토링에 유의하면 좋음.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[js Number/String]]></title>
            <link>https://velog.io/@dev_yjsong/js-%EA%B8%B0%EC%B4%88</link>
            <guid>https://velog.io/@dev_yjsong/js-%EA%B8%B0%EC%B4%88</guid>
            <pubDate>Thu, 15 Sep 2022 15:15:04 GMT</pubDate>
            <description><![CDATA[<p><code>&#39;text&#39;</code> <code>&quot;text&quot;</code>는 문자열(string)
<code>1</code>은 숫자열이다.
<code>&#39;1&#39;</code> <code>&quot;1&quot;</code> 숫자열로 보이지만 &quot;&quot;와&#39;&#39;이 있음으로 문자열이다.</p>
<p>변수 variable
ex) <code>x = 1;</code>과 같이 변할 수 있는 수. 우항에 따라 x엔 다른 결과가 들어갈 수 있다. </p>
<pre><code>var name = &#39;song&#39;;
alert(&quot;hello, I&#39;m&quot;+name+&quot;Nice to meet you!&quot;)
</code></pre><p>상수 constant
ex) <code>1 = 2;</code>은 불가능. 1은 변하지않고 항상 1이다. </p>
<p><code>=</code>은 대입연산자.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[BEM CSS 요약]]></title>
            <link>https://velog.io/@dev_yjsong/BEM-CSS-%EC%9A%94%EC%95%BD</link>
            <guid>https://velog.io/@dev_yjsong/BEM-CSS-%EC%9A%94%EC%95%BD</guid>
            <pubDate>Fri, 09 Sep 2022 10:50:58 GMT</pubDate>
            <description><![CDATA[<p>BEM란 <code>css 클래스네임을 효과적으로 작성하는 법</code>이라고 보면 된다.
BEM은 <strong>기본적으로 ID를 사용하지 않으며, class</strong>만을 사용한다.</p>
<p>BEM은 <code>block</code>, <code>Element</code>, <code>Modifier</code>를 뜻한다.</p>
<p>구조는 <code>block__Element--Modifier</code>이다.
이름을 연결할때는 <code>block-name</code>과 같이 하이픈 하나만 써서 연결한다.</p>
<p><strong>Block</strong>
<strong>재사용이 가능한</strong> 기능적으로 독립적인 페이지 컴포넌트를 블럭이라고 부른다.</p>
<p><strong>Element</strong>
블럭은 독립적인 형태인 반면, 자신이 속한 블럭 내에서만 의미를 가지기 때문에 <strong>블럭 안에서 떼어다 다른데 쓸 수 없다.</strong></p>
<p><strong>Modifier</strong>
모디파이어는 <strong>블럭이나 엘리먼트의 속성을 담당한다.</strong> </p>
<pre><code>&lt;ul class=&quot;tab&quot;&gt;
    &lt;li class=&quot;tab__item tab__item--focused&quot;&gt;탭 01&lt;/li&gt;
    &lt;li class=&quot;tab__item&quot;&gt;탭 02&lt;/li&gt;
    &lt;li class=&quot;tab__item&quot;&gt;탭 03&lt;/li&gt;
&lt;/ul&gt;</code></pre><p>위 코드에서 <code>--focused</code>가 수식어에 해당한다. 
저렇게 작성된걸 <strong>불리언(boolean)타입</strong>이라고 하는데, 그 값이 true라고 가정하고 사용한다.</p>
<p><a href="https://velog.io/@fromzoo/css-%EB%B0%A9%EB%B2%95%EB%A1%A0-BEM-%EB%B0%A9%EC%8B%9D">원본 출처-css 방법론 - BEM 방식</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Semantic HTML]]></title>
            <link>https://velog.io/@dev_yjsong/Semantic-HTML</link>
            <guid>https://velog.io/@dev_yjsong/Semantic-HTML</guid>
            <pubDate>Wed, 07 Sep 2022 12:03:50 GMT</pubDate>
            <description><![CDATA[<p>클론 코딩 실습에 대한 1차 리뷰 시간을 가졌다.</p>
<p>내가 작업하면서 느꼈던 불편함이나 궁금증 중에는 좀 더 &#39;효과적으로 클래스 명을 짓는 방법&#39;이 있었다. 다른 사람이 봐도 바로 이해할 수 있는 범용적인 용어를 쓰는게 어려웠다. 이 부분은 디자인을 할 때 레이어 혹은 컴포넌트 이름을 정할 때도 똑같이 느끼는 부분이였다.</p>
<p>예를 들어 나는 디자인 회사에서 일할 땐 WEB 상단의 카테고리를 GNB로 불렀는데 코드 리뷰에선 <em>&#39;GNB가 무슨 뜻인지 모르겠다. Header라고 쓰는게 더 맞는 것 같다.&#39;</em> 라는 피드백이 돌아왔다. </p>
<p>그 외에도 내가 쓴 css코드가 길어지면 길어질수록 복잡해서 나도 cmd+f가 아니면 찾기 힘들다고 하자 semantic elements와 BEM을 공부해 적용해보라는 피드백을 들었다. </p>
<pre><code>Semantic Elements 종류는 총 13가지

&lt;article&gt;
&lt;aside&gt;
&lt;details&gt;
&lt;figcaption&gt;
&lt;figure&gt;
&lt;footer&gt;
&lt;header&gt;
&lt;main&gt;
&lt;mark&gt;
&lt;nav&gt;
&lt;section&gt;
&lt;summary&gt;
&lt;time&gt;</code></pre><p>그동안 나는 <code>&lt;div class=&quot;header&quot;&gt;</code>로 사용했는데 semantic elements인 <code>&lt;header&gt;</code>로 더 간결하고 직관적으로 마크업이 가능하다.</p>
<p>그리고 <code>semantic elements</code>와 같이 <code>reset css</code>많이 사용한다.<br><code>reset css</code>는 <code>semantic elements</code>가 가지고 있는 고유의 <code>padding</code>또는 <code>margin</code>등을 없애 마치 단어 그대로 _&#39;어떤 의미의 용도로 사용한 태그&#39;_를 완성시켜 준다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[em과 rem 단위]]></title>
            <link>https://velog.io/@dev_yjsong/em%EA%B3%BC-rem-%EB%8B%A8%EC%9C%84</link>
            <guid>https://velog.io/@dev_yjsong/em%EA%B3%BC-rem-%EB%8B%A8%EC%9C%84</guid>
            <pubDate>Sat, 27 Aug 2022 07:00:31 GMT</pubDate>
            <description><![CDATA[<p>유튜브를 통해 독학다가 웹 페이지 실습을 하다가 문득 깨달은 점이 있었다.
강사님이 px같은 고정 단위보다 em을 사용하는게 좋다고 해서 쓰긴하는데 em이랑 rem의 차이가 뭐지?
거기서 아차 하고 부랴부랴 em과 rem에 관한 영상들을 찾아보고 실수했다는걸 깨달았다. 지금이야 극초반이라 바로잡기 쉽지만 나중에서야 의문을 가졌으면 돌이킬 수 없는 강을 건넜을테니 아찔했다.</p>
<blockquote>
<p>*em은 부모에게 상속되는 값에 대한 배수. 
작업량이 많아질수록 파악하기가 어렵고, 소수점으로 떨어져 지원안되는 경우도 있다.
<img src="https://velog.velcdn.com/images/dev_yjsong/post/5e44c52d-d5c0-42fd-b9d7-e835386f3656/image.png" alt=""></p>
</blockquote>
<blockquote>
<p>*r(oot)em은 html에 적용된 폰트 사이즈를 기준으로 배수.
<img src="https://velog.velcdn.com/images/dev_yjsong/post/7e5c34e5-7a66-441c-b8e5-6107d0031d82/image.png" alt=""></p>
</blockquote>
<p>분명 단위가 두 가지라는 것은 em을 사용하는게 더 적절할 때가 있다는 말이지만 현재의 나로선 알수없으니 우선 em이 아닌 rem으로 작업해보기로 한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[가상요소]]></title>
            <link>https://velog.io/@dev_yjsong/%EA%B0%80%EC%83%81%EC%9A%94%EC%86%8C</link>
            <guid>https://velog.io/@dev_yjsong/%EA%B0%80%EC%83%81%EC%9A%94%EC%86%8C</guid>
            <pubDate>Tue, 23 Aug 2022 12:47:34 GMT</pubDate>
            <description><![CDATA[<p>: 혹은 ::이 붙은 애들이 가상요소이다.</p>
<p>::before ::after가 맞지만 익스플로러 6, 7버전에 적용이 안되기 때문에 웹 표준화 및 최적화를 해야한다면 :before :after 싱글콜론으로 사용하길 권장한다고 한다.</p>
<p>a 태그에 title을 달고, 가상요소 content: attr(title)를 주면 title의 글이 변경돼도 디자인이 유지된다.</p>
<pre><code>&lt;div class=&quot;method&quot;&gt;
    fadein
    &lt;div class=&quot;method-list&quot;&gt;
        &lt;a class=&quot;text&quot; title=&quot;글줄 길이가 이만큼 늘어나도 먹히나요?&quot;&gt;&lt;/a&gt;
    &lt;/div&gt;
&lt;/div&gt;</code></pre><pre><code>.method {
    font-size: 1.4rem;
    border-radius: 0.3em;
    background-color: #78c137;
    float: left;
    padding: 0.3em;
    color: white;
    line-height: 2.4;
    margin-right: 0.3em;
}
.method::before {
    content: &#39;.&#39;;
    float: left;
}
.method-list {
    float: right;
}
.method-list::before {
    content: &#39;(&#39;;
    float: left;
}
.method-list::after {
    content: &#39;)&#39;;
    float: right;
}
.text::after {
    content: attr(title);
}
.type {
    white-space: nowrap;
}</code></pre><p><img src="https://velog.velcdn.com/images/dev_yjsong/post/acc66e4e-f461-430c-8be8-1baa9bcafeed/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[z-index]]></title>
            <link>https://velog.io/@dev_yjsong/z-index</link>
            <guid>https://velog.io/@dev_yjsong/z-index</guid>
            <pubDate>Tue, 23 Aug 2022 12:26:48 GMT</pubDate>
            <description><![CDATA[<p>z-index는 position: static;이 아닌 값이 있어야 작용한다. </p>
<p>숫자가 클수록 상단에 위치한다.</p>
<p>디자인으로 치면 레이어 위치를 위아래로 움직이는 느낌인 것 같다.</p>
<p>단, flex 사용시 객체들이 flex-item 처리가 되어 position 없이 z-index 단독 작용이 가능하다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Line height]]></title>
            <link>https://velog.io/@dev_yjsong/Line-height</link>
            <guid>https://velog.io/@dev_yjsong/Line-height</guid>
            <pubDate>Tue, 23 Aug 2022 10:12:03 GMT</pubDate>
            <description><![CDATA[<p>html의 기본 폰트 사이즈는 16px.</p>
<p>코딩 시 폰트 사이즈를 따로 주지않고 만약 font-size: 2em으로 할 경우 2배라는 뜻으로 32px의 폰트 크기를 갖게 된다.</p>
<p>검사를 살펴보면 폰트 크기보다 크게 잡히는데 이것이 리딩 영역을 위한 line height이다. 리딩영역은 폰트 종류별로 천차만별이다. </p>
<p>line height: normal이 폰트 고유의 리딩영역이고, normal이 아닌 1;로 할 경우 폰트 크기와 같은 line height를 가지게 된다. </p>
<p>ex)</p>
<pre><code>.css { font-size: 2em; }</code></pre><p>font-size는 32px &lt; content는 NNpx </p>
<pre><code>.css { 
    font-size: 2em;
    line height: 1;
    }</code></pre><p>font-size 32px = content는 32px</p>
<p><img src="https://velog.velcdn.com/images/dev_yjsong/post/408edf18-8a64-49ed-9eb4-f17eb97aa27a/image.png" alt=""></p>
<p>위 img처럼 같은 크기의 다양한 종류의 폰트를 한 페이지에 사용해도 line height를 주게되면 동일한 line height 즉, 동일한 높이값(리딩영역)을 가지게 된다.</p>
]]></description>
        </item>
    </channel>
</rss>