<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>sunny_afterrain.log</title>
        <link>https://velog.io/</link>
        <description>I want to become a developer</description>
        <lastBuildDate>Wed, 26 Jan 2022 03:40:03 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>sunny_afterrain.log</title>
            <url>https://images.velog.io/images/sunny_afterrain/profile/e461510b-956a-430d-a000-014c92e86b4b/KakaoTalk_20211209_185819899.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. sunny_afterrain.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/sunny_afterrain" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[CSS - Position: Sticky; 를 잘 적용 하려면?]]></title>
            <link>https://velog.io/@sunny_afterrain/knowledge02</link>
            <guid>https://velog.io/@sunny_afterrain/knowledge02</guid>
            <pubDate>Wed, 26 Jan 2022 03:40:03 GMT</pubDate>
            <description><![CDATA[<h1 id="☑︎-sectionlog">☑︎ Section.log</h1>
<hr>
<ul>
<li>HTML 마크업 중 메뉴바를 만들었고 스크롤을 하면 원하는 위치에 고정하고자 한다.</li>
<li>관련 MDN 검색 결과 그러한 기능을 가진 <code>position: sticky</code> 을 찾았다.</li>
<li>고정 속성값을 주면 해당 값의 위치에서 자동으로 <code>fixed</code> 속성으로 바꾸어준다.</li>
<li><code>top, right, bottom, left</code> 속성을 줄수 있고, 위쪽 고정을 위해 <code>top: 0px;</code> 을 적용했다.</li>
</ul>
<blockquote>
<p>HTML</p>
</blockquote>
<pre><code class="language-html">  &lt;body&gt;
    &lt;div class=&quot;ul-sticky&quot;&gt;
      &lt;div class=&quot;ul-sticky__list&quot;&gt;
        &lt;ul&gt;
          &lt;li&gt;Home&lt;/li&gt;
          &lt;li&gt;About me&lt;/li&gt;
          &lt;li&gt;Favorite&lt;/li&gt;
          &lt;li&gt;Contact&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/body&gt;</code></pre>
<p>CSS</p>
<pre><code class="language-css">.ul-sticky__list {
position: sticky;
}</code></pre>
<p><br><br></p>
<h1 id="❔issue">❔Issue</h1>
<hr>
<ul>
<li>아무리 <code>top: 0px;</code> 을 주어도 메뉴바가 해당 위치에 고정이 되지 않았고 수치를 바꾸어도 동일했다.<br>
<center><img src="https://user-images.githubusercontent.com/95746551/151108838-658d0805-a00f-4210-b0fe-b3bf69b6652f.gif" width="30%" height="30%"></center>
<br></li>
<li>해결을 위한 수많은 구글링을 통해 Sticky 왜 안되는지, 어떠한상황에서 적용되어야 하는지 검색했다.
▻ Sticky 를 적용할 HTML 태그의 부모 태그에 무조건 <code>height</code> 이 있어야 할것</li>
<li>상위 부모태그에 임시로 height 속성을 주었다.</li>
</ul>
<blockquote>
<p>CSS</p>
</blockquote>
<pre><code class="language-css">.ul-sticky {
  height: 500px;
}
.ul-sticky__list {
  position: sticky;
  top: 0px;
}</code></pre>
<ul>
<li><p>된다. 그런데 문제가 있다. 상위 부모태그에 <code>height</code> 를 준 만큼만 고정됨.</p>
</li>
<li><p>아래의 gif 처럼 높이 값을 준 만큼만 고정되고 그 이후엔 다음 태그와 같이 올라간다.</p>
<br>
<center><img src="https://user-images.githubusercontent.com/95746551/151110218-7d393ee8-c3af-40a6-9c58-c8f03b636a4e.gif" width="30%" height="30%"></center>
</li>
<li><p>높이값을 더 주게 된 다면 이후의 컨텐츠 배열에 문제가 생김</p>
</li>
</ul>
<p><br><be></p>
<h1 id="❕tips">❕Tips</h1>
<hr>
<ul>
<li><code>Sticky</code> 를 사용하려면 꼭 부모태그에 <code>height</code> 값이 있어야 한다고 했다.</li>
<li>그렇다면 컨텐츠의 내용에 따라 자동으로 높이 속성을 가지는 <code>&lt;body&gt;</code> 태그가 생각났다.</li>
<li><code>Sticky</code> 를 꼭 사용해야 한다면 그 부분만 <code>&lt;body&gt;</code> 아래에 놓고 CSS를 주자.</li>
<li>아주 잘되는 모습을 볼 수 있다.</li>
</ul>
<blockquote>
<p>HTML</p>
</blockquote>
<pre><code class="language-html">  &lt;body&gt;
    &lt;div class=&quot;ul-sticky&quot;&gt;
      &lt;div class=&quot;ul-sticky__list&quot;&gt;
        &lt;ul&gt;
          &lt;li&gt;Home&lt;/li&gt;
          &lt;li&gt;About me&lt;/li&gt;
          &lt;li&gt;Favorite&lt;/li&gt;
          &lt;li&gt;Contact&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/body&gt;</code></pre>
<p>CSS</p>
<pre><code class="language-css">.ul-sticky {  // body 태그 바로 아래 class
  position: sticky;
  top: 0px;
}</code></pre>
  <br>
<center><img src="https://user-images.githubusercontent.com/95746551/151111081-7c7bbb82-5b6f-4793-8627-0a814c133678.gif" width="30%" height="30%"></center>

<br>

<h1 id="↩︎-link">↩︎ Link</h1>
<hr>
<ul>
<li><a href="https://developer.mozilla.org/ko/docs/Web/CSS/position">MDN 공식문서</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL & TEL - 04]]></title>
            <link>https://velog.io/@sunny_afterrain/TIL-TEL04</link>
            <guid>https://velog.io/@sunny_afterrain/TIL-TEL04</guid>
            <pubDate>Fri, 21 Jan 2022 04:26:02 GMT</pubDate>
            <description><![CDATA[<h1 id="today-i-learnd">Today I Learnd</h1>
<hr>
<h3 id="☞-html">☞ HTML</h3>
<ul>
<li><p>글 작성시 띄어쓰기, 공백, 다음 줄 등 내가 친 데로 웹페이지에 입력 됨 <code>&lt;pre&gt;&lt;/pre&gt;</code> 태그</p>
<br></li>
<li><p>좌우 스크롤 없애는 방법 <code>&lt;body style=&quot;overflow-x:hidden; overflow-y:auto;&quot;&gt;</code> </p>
<ul>
<li><code>auto</code>, <code>visable</code>, <code>hidden</code>, <code>scroll</code> 속성 확인</li>
</ul>
</li>
</ul>
<br>
<br>

<h3 id="☞-css">☞ CSS</h3>
<ul>
<li>배경 사진 조절에 있어 <code>background-size</code>, <code>object-fit</code> 의 속성의 종류와 기능<br></li>
<li>웹페이지 제작시 픽셀 단위 보다는 가변형 뷰포트 단위 적절하게 이용 할것<ul>
<li>브라우저 크기조절시 자연스럽게 contents도 그에 맞게 자동으로 조절이 되어 보기 편함<br></li>
</ul>
</li>
<li>어떤 요소의 방향이나 위치를 조절하고 싶을때 CSS의 <code>transform</code> 으로 조절<br></li>
<li>가상요소 <code>before, after</code> 의 사용방법과 기능<br></li>
<li>글의 자간 어간 간격 등 설정 <code>letter-spacing</code>:자간(글자 간격), <code>word-spacing</code>: 어간(단어 간격), <code>line-height</code>: 줄간격, <code>columns</code> : 다단<br></li>
<li>항상 크로스 브라우징에 대해 염두하고 웹페이지 제작<br></li>
<li><code>width</code> 속성에서 <code>calc()</code> 확인<br></li>
<li><code>box-shadow</code> 속성의 사용방법<br></li>
<li>Grid의 사용방법 및 칸 나누는 방법 <code>template-row and column</code> fr단위와 원하는만큼 칸 배열 가능</li>
</ul>
<br>
<br>


<h1 id="trial-and-error-log">Trial and Error Log</h1>
<hr>
<ul>
<li>SITUATION:<br>
* HTML 에서의 CSS 로딩속도가 뒤죽박죽 아예 안될때도 있어 웹페이지 결과물에 혼란
<br></li>
<li>REASON:<br>
* 구글링 결과 `@import` 방식은 속도 측면에서 좋지 않으니 `<link>` 방식을 사용 권장
<br></li>
<li>SOLUTION:<br>
 * html의 CSS 연결을 `@import` 에서 `<link>` 방식으로 변경 결과 원할하게 작동</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[
TIL & TEL - 03]]></title>
            <link>https://velog.io/@sunny_afterrain/TIL-TEL03</link>
            <guid>https://velog.io/@sunny_afterrain/TIL-TEL03</guid>
            <pubDate>Wed, 19 Jan 2022 10:37:16 GMT</pubDate>
            <description><![CDATA[<h1 id="til-today-i-learnd">TIL (Today I Learnd)</h1>
<hr>
<h3 id="scsssass">SCSS(SASS)</h3>
<ul>
<li><p>CSS 의 전처리기 ➡️ 컴파일 (Compile) 해서 사용</p>
<ul>
<li>CSS 를 더 편리하고 멋지고 쿨하게 전처리기로 작성 가능<br/></li>
</ul>
</li>
<li><p>선택자의 변수지정, 중첩, 반복문, 조건문 사용가능</p>
<br/></li>
<li><p>SASS 와 간단한 문법 차이는 세미콜론 ( ; ), 중괄호 ( {} ) 의 유무</p>
<br/></li>
<li><p>VScode 사용시 비교적 쉽게 컴파일 가능</p>
<ul>
<li>Extension : Live Sass Compiler</li>
</ul>
<br/></li>
<li><p><code>&amp;</code> : 상위 선택자 a ➡️ <code>&amp;:hover</code> === <code>a:hover</code></p>
<br/></li>
<li><p><code>@mixin</code> <code>@include</code> , <code>%변수명</code> <code>@extend</code> 사용법과 차이</p>
<br/></li>
<li><p>인자 사용 가능 <code>@mixin 변수명($param, $param) { }</code>
<br/><br/></p>
<h1 id="tel-trial-and-error-log">TEL (Trial and Error Log)</h1>
</li>
</ul>
<hr>
<ul>
<li>VScode 확장자 *.scss , 컴파일 과정은 비교적 간단함<br/></li>
<li>아직 익숙하지 않으나 확실히 작성하는데 있어 불필요한 문법낭비를 줄일 수 있으며 편하다.<br/>
* 간혹 문법의 오류, 익숙해지도록 자주 사용 앞으로는 SCSS 로만 사용하기
<br/>
* SCSS(SASS) Lint 사용법
<br/></li>
<li>Compilation Error
Error: Invalid CSS after &quot;h1 {&quot;: expected &quot;}&quot;, was &quot;{&quot; on line 4<br/>
* *.sass 에 SCSS 문법대로 작성하고 컴파일 하니 에러
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL & TEL - 02]]></title>
            <link>https://velog.io/@sunny_afterrain/TIL-TEL02</link>
            <guid>https://velog.io/@sunny_afterrain/TIL-TEL02</guid>
            <pubDate>Wed, 19 Jan 2022 06:33:51 GMT</pubDate>
            <description><![CDATA[<h1 id="til-today-i-learned">TIL (Today I Learned)</h1>
<hr>
<h3 id="css">CSS</h3>
<ul>
<li><p>동일한 이름 Class 중 필요한 선택자 지정방법</p>
<br/>
* `&:first-child`, `&:last-child`, `&nth-child(n)` 차이
  * 속성값 `even`, `odd`, `2n-1` 등
<br/>
* `p span{}` 부모안의 span, `p>span`p의 바로 밑자식 spans, `p+span`p바로 다음으로 오는 span
<br/>
* 특정 선택자만 통제 할수 있는 방법 연구
<br/>
 * `<input type="text" require placeholder="edit">`
   * input:require { } 으로 통제
   * input[placeholder="edit"] { } 로 통제

 <br/></li>
<li><p>States 가상 선택자</p>
<br/>
* `&:active`, `&:hover`, `&:focus`, `&:visited` 등
* [MDN 공식문서 참조](https://developer.mozilla.org/ko/docs/Web/CSS/Pseudo-classes)
<br/>
* CSS 전역 변수
<br/>
 * `:root { }` 변수 지정 하여 사용
   * `:root { --font-color: blue }` 선언
   * `h1 { color: var(--font-color) }` 사용
<br/>
* `transition` 개념, ease-in-out
<br/>
* `transform` 개념, 요소의 회전, 기울이기 등 조절
<br/>
* 애니메이션 필히 복습 
<br/>
 * `@keyframe 이름 { from { } to { } }`
<br/>
* `@media screen and ( ) { }` CSS를 이용하여 화면크기에 따른 스크린조절, 미디어 쿼리

</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL & TEL - 01]]></title>
            <link>https://velog.io/@sunny_afterrain/TIL-TEL01</link>
            <guid>https://velog.io/@sunny_afterrain/TIL-TEL01</guid>
            <pubDate>Tue, 18 Jan 2022 18:42:28 GMT</pubDate>
            <description><![CDATA[<h1 id="til-today-i-learned">TIL (Today I Learned)</h1>
<hr>
<h3 id="html">HTML</h3>
<ul>
<li><p>Semantic tag</p>
<br/>
* 효율적으로 MarkUp을 하기 위한 HTML Tag Element
  * `<div>` 를 남발하기 보다는 의미있게 마크업 하기 위함
  * 적절하게 사용했을시 검색엔진에 중요한 검색 랭킹 요소
  <br/>
* `<header>` `<main>` `<footer>` `<nav>` 등 대표적 태그<br/>
  * `<section>`,`<article>` 헷갈리지말기 - 하나의 독립적인 컨텐츠가 될수 있느냐, 관련요소를 분리할때쓰느냐 차이
  * [MDN 공식문서 참고](https://developer.mozilla.org/ko/docs/Glossary/Semantics)
  <br/>

<ul>
<li>시각 장애인의 화면 판독기 사용시 어떠한 내용인지 정확히 전달</li>
</ul>
</li>
</ul>
<br/>

<h3 id="css">CSS</h3>
<ul>
<li>px, vh, vm, em, rem, vmin, vmax 단위속성 차이<br/></li>
<li>Flex box<br/>
 * `display:flex;` 부모요소에 적용
   * `justify-content`, `align-item`, `flex-direction` 사용방법
  <br/></li>
<li>position<br/>
* 화면이 움직여도 레이아웃을 고정 `fixed`
<br>
* 디폴트 `static`
<br>
* `relative` 위치조절 마음대로 가능
  * top, bottom, left, right 값, `z-index`
 <br/>
* `absolute` relative 속성인 부모를 기준으로 위치조절, 없으면 body가 기본 부모
<br/><br/>
# TEL (Trial and Error Log)
</li>
</ul>
<hr>
<ul>
<li><p>HTML Sementic tag <code>&lt;main&gt;</code>,<code>&lt;article&gt;</code>,<code>&lt;section&gt;</code> 헷갈림</p>
<ul>
<li>MDN 문서 보면서 자주 사용<br/>
</li>
</ul>
</li>
<li><p>CSS 작성 중 수직이나, 수평으로 내마음대로 조절이 잘 안됨</p>
<ul>
<li>기존 <code>width</code>, <code>height</code>이 충분하지 않았다. 늘려 주니 원하는 대로 결과 출력</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[NodeList? HTMLCollection? 무슨 차이지?]]></title>
            <link>https://velog.io/@sunny_afterrain/knowledge01</link>
            <guid>https://velog.io/@sunny_afterrain/knowledge01</guid>
            <pubDate>Tue, 07 Dec 2021 07:38:46 GMT</pubDate>
            <description><![CDATA[<h1 id="☑︎-prologue">☑︎ Prologue</h1>
<hr>
<p>JavaScript 기초 공부를 위해 그림판 만들기(from <a href="https://nomadcoders.co/">NomadCoders</a>)를 하던중 그중에 색상
팔레트를 만드는 과정에서 강의를 잠시 멈추고 혼자 해보는 시간을 갖었었다.</p>
<p>금방 짜고 잘 작동되는것을 보고 뿌듯! 
그것도 잠시 남은 강의 영상을 보던 나는 몰랐던 사실을 알고 혼란스러웠다.😱
<br></p>
<h1 id="☑︎-before">☑︎ Before</h1>
<hr>
<pre><code class="language-javascript">const nodeList = document.querySelectorAll(&quot;.list&quot;);
const htmlCollection = document.getElementsByClassName(&quot;list&quot;);</code></pre>
<p>아직 초보인 나는 이 두가지에 대해서 <code>Node</code> 라 읽고 배열로 기억했다.</p>
<p>하지만 배열과는 전혀 다른 <code>NodeList</code> 와 <code>HTMLCollection</code> 이라는 것이고
배열과는 다른 듯 하지만 비슷한 <strong>&#39;유사 배열&#39;</strong> 이라는 것
<br></p>
<h1 id="☑︎-description">☑︎ Description</h1>
<hr>
<h4 id="✔️-nodelist-from-mdn-more">✔️ NodeList from MDN <a href="https://developer.mozilla.org/ko/docs/Web/API/NodeList">more</a></h4>
<blockquote>
<p>NodeList 객체는 일반적으로 element.childNodes와 같은 속성(property)과 document.querySelectorAll 와 같은 메서드에 의해 반환되는  노드의 콜렉션입니다.</p>
</blockquote>
<h4 id="✔️-htmlcollection-from-mdn-more">✔️ HTMLCollection from MDN <a href="https://developer.mozilla.org/ko/docs/Web/API/HTMLCollection">more</a></h4>
<blockquote>
<p>HTMLCollection 인터페이스는 요소의 문서 내 순서대로 정렬된 일반 컬렉션(arguments처럼 배열과 유사한 객체)을 나타내며 리스트에서 선택할 때 필요한 메서드와 속성을 제공합니다.</p>
</blockquote>
<p>MDN 에서는 이렇게 정의 하고 있다. 정석적인 설명은 다른 곳에도 많으니
정말 간단히 쉽게 설명 하면, 두가지 다 유사 배열이기 때문에 배열에 적용할수 있는
<code>Method</code>가 제한이 된다. (어떤 것인지는 MDN 이나 <code>console.log</code> 로 확인해 보면 된다.)</p>
<h4 id="✔️-live-static-collection">✔️ Live, Static Collection</h4>
<ul>
<li>대체로 <strong>NodeList</strong> 가 <em>Live Collection</em> 으로 DOM 의 변경사항을 실시간으로 반영하지만
<code>qeurySelectorAll</code> 으로 반환한 <strong>NodeList</strong> 는 <em>Static Collection</em> 으로 실시간으로
반영하지 않는다. 즉, 중간에 <code>append</code> 로 DOM을 추가해도 반영하지 않는다.</li>
<li><strong>HTMLCollection</strong> <em>Live Collection</em> 으로 문서의 변경사항이 실시간으로 반영된다.<br>

</li>
</ul>
<h1 id="☑︎-how-use">☑︎ How use?</h1>
<hr>
<p>그렇다면 여러 <em>Methdos</em> 를 사용하고 싶은데 어떻게 해야하냐?
생각보다 답은 간단하다. <code>Array.from()</code> 사용 해 배열로 바꾸어주면 된다.</p>
<pre><code class="language-javascript">htmlCollection.forEach(list =&gt; list.addEventListener(&quot;click&quot;, argu);
// 뭐야 왜 안돼!! 왜 forEach 를 사용 못하는거야?! (nodeList는 가능)

Array.from(htmlCollection).forEach(list =&gt; list.addEventListener(&quot;click&quot;, argu);
// 아 이제 진짜 배열로 바꾸니까 잘되는구나                                  </code></pre>
<p><code>console.log</code>  로도 확인 해 보았다.
<img src="https://images.velog.io/images/sunny_afterrain/post/a2776946-f424-404a-85bb-99776fbe2945/213.JPG" alt=""></p>
]]></description>
        </item>
    </channel>
</rss>