<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>dasol-jeong.log</title>
        <link>https://velog.io/</link>
        <description>풀스택 개발자를 꿈꾸는</description>
        <lastBuildDate>Tue, 07 Dec 2021 14:35:17 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>dasol-jeong.log</title>
            <url>https://images.velog.io/images/dasol-jeong/profile/a77ed015-4112-4999-8027-beea8fece1ab/social.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. dasol-jeong.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/dasol-jeong" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[생성자 함수 vs 클래스]]></title>
            <link>https://velog.io/@dasol-jeong/%EC%83%9D%EC%84%B1%EC%9E%90-%ED%95%A8%EC%88%98-vs-%ED%81%B4%EB%9E%98%EC%8A%A4</link>
            <guid>https://velog.io/@dasol-jeong/%EC%83%9D%EC%84%B1%EC%9E%90-%ED%95%A8%EC%88%98-vs-%ED%81%B4%EB%9E%98%EC%8A%A4</guid>
            <pubDate>Tue, 07 Dec 2021 14:35:17 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/dasol-jeong/post/490ce1dd-212b-4a50-8f30-1d8c0b401b18/image.png" alt=""></p>
<br/>

<p>자바스크립트에서 객체를 생성하는 방법으로는
객체 리터럴, Object 생성자 함수, 생성자 함수, Object.create 메서드, 클래스가 있다.
그 중 인스턴스를 생성하는 방식이 비슷한 생성자 함수와 클래스를 비교하려고 한다.</p>
<br/>

<p>클래스는 ES6에서 도입된 객체 생성 메커니즘이다.</p>
<p><img src="https://images.velog.io/images/dasol-jeong/post/f8814b4f-cd33-464c-9c00-9c9bb153fdcb/fsdfsdfsdfdsfds.PNG" alt=""></p>
<br/>

<h2 id="1-객체-생성-방법">1. 객체 생성 방법</h2>
<blockquote>
<p>둘 다 new 연산자를 사용하여 객체를 생성해야한다. 만약 new 연산자를 생략하게 되면, 생성자 함수는 일반 함수로 호출되고 클래스는 타입 에러가 발생한다.</p>
</blockquote>
<br/>

<h2 id="2-상속">2. 상속</h2>
<blockquote>
<p>둘 다 상속이란 개념이 존재한다. 생성자 함수는 프로토타입의 체인에서 인스턴스가 프로토타입의 프로퍼티를 상속받는거고 클래스는 extends 키워드를 통해 클래스 상속에 의해 확장되는 개념이다.</p>
</blockquote>
<br/>

<h2 id="3-호이스팅">3. 호이스팅</h2>
<blockquote>
<p>둘 다 호이스팅이 된다. 하지만 클래스는 let, const 키워드처럼 호이스팅이 발생하지 않는 것처럼 동작한다. 생성자 함수는 함수 선언문으로 정의 했을 때는 함수 호이스팅이, 함수 표현식으로 정의 했을 때는 변수 호이스팅이 된다.</p>
</blockquote>
<br/>

<h2 id="4-strict-mode">4. strict mode</h2>
<blockquote>
<p>생성자 함수는 암묵적 strict mode가 지정되지 않지만, 클래스는 클래스 내의 모든 코드에 암묵적 strict mode가 지정되어 실행되며 해제할 수 없다.</p>
</blockquote>
<br/>

<h2 id="5-정의">5. 정의</h2>
<blockquote>
<p>클래스의 경우는 class 키워드 뒤에 클래스명을 넣어 클래스를 정의한다. 생성자 함수는 보통 function 함수명 하여 정의한다.</p>
</blockquote>
<br/>

<h2 id="6-내부에-정의-할-수-있는">6. 내부에 정의 할 수 있는</h2>
<blockquote>
<p>생성자 함수에는 인스턴스 프로퍼티, 프로토타입 메서드, 정적 메서드를 정의할 수 있고, 클래스는 클래스 안에 안에 오직 메서드만 올 수 있다. 메서드 종류로는 constructor, 프로토타입 메서드, 정적 메서드가 있으며 인스터스 프로퍼티값들은 constructor 안에 꼭 선언해줘야한다.</p>
</blockquote>
<br/>

<h2 id="7-선언-방식">7. 선언 방식</h2>
<blockquote>
<p>둘 다 선언문, 표현식을 사용할 수 있다. 생성자함수는 선언 방식에 따라 호이스팅이 달라지는 것을 기억하자.</p>
</blockquote>
<br/>

<h2 id="8-constructor">8. constructor</h2>
<blockquote>
<p>생성자 함수에서 constructor은 생성자 함수의 프로토타입이 가지고 있는 프로퍼티이고, 클래스에서는 인스턴스를 생성하고 초기화하기 위한 특수한 메서드이다. 특수한 메서드라서 이름을 임의로 바꿀 수 없다. 클래스안에서 constructor은 꼭 한 개만 존재 가능하며, 2개 이상이되면 문법에러가 발생한다.</p>
</blockquote>
<br/>

<h2 id="9-프로토타입-메서드">9. 프로토타입 메서드</h2>
<blockquote>
<p>생성자 함수에서의 프로토타입 메서드를 만드려면 명시적으로 추가해줘야한다. 클래스에서는 클래스 몸체에 메서드로 정의하면 자바스크립트 엔진이 자동으로 프로토타입 메서드로 만들어준다.</p>
</blockquote>
<br/>

<h2 id="10-정적-메서드">10. 정적 메서드</h2>
<blockquote>
<p>생성자 함수에서 정적 메서드를 만드려면 생성자 함수 몸체에 명시적으로 추가해줘야한다. 클래스에서는 몸체에 static 키워드를 사용하여 메서드를 정의하면 정적 메서드로 생성된다.</p>
</blockquote>
<br/>

<h2 id="11-정적-메서드-호출">11. 정적 메서드 호출</h2>
<blockquote>
<p>생성자 함수에서 정적 메서드를 호출하려면 생성자 함수 자체에서 호출하면된다. 클래스에서는 클래스로 호출해주면된다.
ex) 생성자함수명.정적메서드명 / 클래스명.정적메서드명</p>
</blockquote>
<br/>


]]></description>
        </item>
        <item>
            <title><![CDATA[타입변환]]></title>
            <link>https://velog.io/@dasol-jeong/%ED%83%80%EC%9E%85%EB%B3%80%ED%99%98</link>
            <guid>https://velog.io/@dasol-jeong/%ED%83%80%EC%9E%85%EB%B3%80%ED%99%98</guid>
            <pubDate>Mon, 29 Nov 2021 11:58:58 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/dasol-jeong/post/1ccc3ba5-2526-4caa-b348-1e60b7dbbbb0/image.png" alt=""></p>
<p>💥 <strong>자바스크립트의 모든 값에는 타입이 존재한다.
값들의 타입을 변환시키는 방법에는 두 가지가 있다.</strong></p>
<p><strong>명시적 타입변환</strong>과 <strong>암묵적 타입변환</strong>이다.</p>
<p>두 방법 모두 기존 원시 값을 직접 변경하는 것이 아닌, 기존 원시 값을 사용해 다른 타입의 새로운 원시값을 생성한다. 
그리고 모두 <strong>문자열, 숫자, 불리언 타입으로의 변환</strong>이 있다.</p>
<p>먼저! 명시적 타입 변환부터 봐보자!</p>
<br/>

<h2 id="방법1-명시적-타입-변환타입-캐스팅">방법1. 명시적 타입 변환(타입 캐스팅)</h2>
<br/>

<p>명시적 타입변환이란?</p>
<blockquote>
<p>개발자가 의도적으로 값의 타입을 변환 </p>
</blockquote>
<p>하는 것이다.</p>
<p>개발자가 의도에 따라 명시적으로 타입을 변경하는 방법으로는 <strong>자바스크립트에서 기본 제공하는 생성자 함수(String, Number, Boolean)를 new 연산자 없이 호출</strong>하거나, <strong>자바스크립트에서 기본 제공하는 빌트인 객체의 메서드를 사용</strong>, <strong>암묵적 타입 변환</strong> 하는 방법이 있다.</p>
<br/>

<h3 id="11-문자열-타입으로-변환">1.1 문자열 타입으로 변환</h3>
<blockquote>
<p>문자열 타입이 아닌 값을 문자열 타입으로 변환한다</p>
</blockquote>
<ul>
<li>String 생성자 함수 사용
ex) String(1); // &quot;1&quot; ➡ String 생성자 함수가 숫자타입 1을 문자 1로 변경해준다.<br/></li>
<li>Object.prototype.toString 메서드 사용
ex) (NaN).toString(); // &quot;NaN&quot; ➡ 빌트인 객체의 toString 메서드가 숫자타입인 NaN을 문자열로 변환해준다.<br/></li>
<li>문자열 연결 연산자 사용
ex) true + &#39; &#39;; // &quot;true&quot; ➡ boolean 타입인 true와 문자열 &#39; &#39; 피연산자 사이에 +연산자가 오게되면, +는 산술연사자가 아닌 문자 연결 연산자로 인식되어 true는 문자열로 변환된다.</li>
</ul>
<br/>

<h3 id="12-숫자-타입으로-변환">1.2 숫자 타입으로 변환</h3>
<blockquote>
<p>숫자 타입이 아닌 값을 숫자 타입으로 변환한다.</p>
</blockquote>
<ul>
<li>Number 생성자 함수 사용
ex) Number(&#39;0&#39;); // 0 ➡ Number 생성자 함수가 문자 타입인 0을 숫자 0으로 변환해준다.<br/></li>
<li>parseInt, parseFloat 함수를 사용(문자열만 숫자 타입으로 변환 가능)
ex) parseInt(&#39;-1&#39;); // -1 ➡ parseInt란 함수가 문자 타입인 -1을 숫자 -1로 변환해준다.<br/></li>
<li>+인 단항 산술 연산자 사용
ex) +&#39;0&#39;; // 0 ➡ 문자앞에 +단항 산술 연산자가 붙으면 문자 타입인 0을 숫자 0으로 변환해준다.<br/></li>
<li>&#42;인 산술 연산자 사용
ex) &#39;1&#39; &#42; 1; // 1 ➡ 문자타입과 숫자타입의 피연산자 사이에 *산술 연산자가 오면 문자를 숫자로 변환하여 숫자 1이 나온다.</li>
</ul>
<br/>

<h3 id="13-불리언-타입으로-변환">1.3 불리언 타입으로 변환</h3>
<blockquote>
<p>불리언 타입이 아닌 값을 불리언 타입으로 변환한다.</p>
</blockquote>
<ul>
<li>Boolean 생성자 함수 사용
ex) Boolean(&#39;false&#39;); // true ➡ Boolean 생성자 함수가 문자열 false를 불리언타입인 true로 변환해준다.<br/></li>
<li>부정 논리연산자(!) 두 번 사용
ex) !!NaN; // false ➡ 부정 논리연산자인 !을 두번 사용하게되면 숫자타입인 NaN을 불리언타입으로 변환해주어 false가된다.</li>
</ul>
<br/>

<h2 id="방법2-암묵적-타입-변환타입-강제-변환">방법2. 암묵적 타입 변환(타입 강제 변환)</h2>
<blockquote>
<p>자바스크립트 엔진이 표현식을 평가하는 도중 에러를 발생시키지 않도록 하기 위해 암묵적으로 타입을 변환. 즉, 개발자의 의도와는 상관 없다.</p>
</blockquote>
<br/>

<h3 id="21-문자열-타입으로-변환">2.1 문자열 타입으로 변환</h3>
<blockquote>
<p>숫자, 불리언, null, undefined, 심벌, 객체 타입도 변환 가능</p>
</blockquote>
<p>ex)
({}) + &#39;&#39; // &quot;[object Object]&quot; ➡ 객체와 문자사이에 +산술 연산자가 오면, +는 산술 연산자가 아닌 문자 연결 연산자가 되어 객체를 문자열로 변환한다.</p>
<br/>

<h3 id="22-숫자-타입으로-변환">2.2 숫자 타입으로 변환</h3>
<blockquote>
<p>피연산자를 숫자 타입으로 변환할 수 없는 경우 평가 결과는 NaN이다.</p>
</blockquote>
<p>ex) 
1 - &#39;1&#39; // 0 ➡ -산술 연산자를 하기 위해 문자 1을 숫자 1로 변환하였다.
&#39;1&#39; &gt; 0 // true ➡ 비교연산자(&gt;)는 불리언 값을 만든다. 숫자 0과 비교하기 위해 문자타입 1을 숫자 1로 변환하여 값을 비교한다.
+&#39;0&#39; // 0 ➡ +단항 연산자 뒤에 숫자타입이 아닌 피연산자가 오면 암묵적으로 숫자타입으로 변환해주어 평가결과가 0이다.</p>
<br/>

<h3 id="23-불리언-타입으로-변환">2.3 불리언 타입으로 변환</h3>
<blockquote>
<p>if문, for문과 같은 제어문의 조건식 또는 삼항 조건 연산자의 조건식은 불리언 값으로 평가되어야한다. 이런 조건식을 평가할 때 암묵적으로 불리언 값으로 변환한다.</p>
</blockquote>
<p>ex) if(&#39;&#39;) console.log(&#39;1&#39;); // ➡ if문의 조건식은 빈 문자열로 false로 평가되어 아무것도 출력되지 않았다.</p>
<br/>
<br/>

<p>🛑 알아가기 🛑</p>
<ol>
<li>자바스크립트에서는 <strong>true는 1, false는 0</strong>으로 변환된다.</li>
<li><strong>빈 문자열, 빈 배열, null는 숫자 타입으로 0</strong>으로 변환되고 <strong>객체, 비어있지않은 배열, undefined는 숫자타입으로 변환되지 않아 평가결과가 NaN</strong>이 나온다.</li>
<li>자바스크립트에서 불리언 타입이 아닌 값을 false로 구분하는 값들</li>
</ol>
<ul>
<li>false</li>
<li>undefined</li>
<li>null</li>
<li>0, -0</li>
<li>NaN</li>
<li>&#39;&#39;빈문자열</li>
</ul>
<br/>

<p>타입을 변환하는 방법으로 명시적 타입 변환과 암묵적 타입 변환을 알아보았지만, <strong>암묵적 타입변환은 최대한 사용하지 않는 것이 좋다.</strong></p>
<p><strong>why</strong>❓
암묵적 타입 변환이 되게 되면, 개발자가 의도한 것이 아닌 자바스크립트 엔진이 암묵적으로 타입을 변환시켜 예상치 못한 결과가 나올 수도 있다. 그렇게 되면 가독성이 좋지 않다. 가독성이 좋지 않은 코드는 좋은코드라고 할 수 없다.</p>
<br/>

<h2 id="❗❗❗-암묵적-타입-변환되지-않게-하기-❗❗❗">❗❗❗ <strong>암묵적 타입 변환되지 않게 하기</strong> ❗❗❗</h2>
]]></description>
        </item>
        <item>
            <title><![CDATA[aria-role : tab]]></title>
            <link>https://velog.io/@dasol-jeong/aria-role-tab</link>
            <guid>https://velog.io/@dasol-jeong/aria-role-tab</guid>
            <pubDate>Tue, 02 Nov 2021 01:46:04 GMT</pubDate>
            <description><![CDATA[<h2 id="✅-tablist">✅ tablist</h2>
<p>aria 역할 중 tablist이 있다.
tablsit는 tab과 tabpanel들을 하나의 틀로 묶어 그룹이라 명시해주는것이다.</p>
<h2 id="✅-tab">✅ tab</h2>
<p>aria 역할 중 tab이 있다.</p>
<pre><code>&lt;button role=&quot;tab&quot; aria-selected=&quot;true&quot; aria-controls=&quot;tabpanel-id&quot; id=&quot;tab-id&quot;&gt;Tab label&lt;/button&gt;
</code></pre><h3 id="👍-aria-controls">👍 aria-controls</h3>
<p>그 tab버튼을 누르면 어떠한 tabpanel이 클릭되어지는<br>aria-controls=&quot;패널아이디&quot;를 주어 tab과 tabpanel을 연결합니다.</p>
<h3 id="👍-aria-selected">👍 aria-selected</h3>
<p>웹사이트에서 tablist는 대부분 기본값으로 어떤 tab이 선택되어, 그에 대응되는 tabpanel을 보여주고있다.
aria-selected는 눌려진 상태를 보여주는 boolean status이다.
상태값은 true, false가 있다.</p>
<h3 id="👍-button태그">👍 button태그</h3>
<p>버튼 태그는 키보드로 접근이 가능하다.</p>
<blockquote>
<ul>
<li>tab : 포커스가 탭리스트로 이동하면 tab에 포커스 된다.</li>
</ul>
</blockquote>
<h2 id="✅-tabpanel">✅ tabpanel</h2>
<p>aria 역할 중 tabpanel이 있다.
<strong>tab과 tabpanel은 1:1 대응이 되어야 한다</strong></p>
<h2 id="✅-기본예제">✅ 기본예제</h2>
<p><img src="https://images.velog.io/images/dasol-jeong/post/12070d5c-0617-425c-8298-ecc139241578/image.png" alt="예제 이미지"></p>
<pre><code>&lt;div class=&quot;tabs&quot;&gt;
  &lt;div role=&quot;tablist&quot; aria-label=&quot;Entertainment&quot;&gt;
    &lt;button role=&quot;tab&quot;
            aria-selected=&quot;true&quot;
            aria-controls=&quot;nils-tab&quot;
            id=&quot;nils&quot;&gt;
      Nils Frahm
    &lt;/button&gt;
    &lt;button role=&quot;tab&quot;
            aria-selected=&quot;false&quot;
            aria-controls=&quot;agnes-tab&quot;
            id=&quot;agnes&quot;
            tabindex=&quot;-1&quot;&gt;
      Agnes Obel
    &lt;/button&gt;
    &lt;button role=&quot;tab&quot;
            aria-selected=&quot;false&quot;
            aria-controls=&quot;complexcomplex&quot;
            id=&quot;complex&quot;
            tabindex=&quot;-1&quot;
            data-deletable=&quot;&quot;&gt;
      Joke
    &lt;/button&gt;
  &lt;/div&gt;
  &lt;div tabindex=&quot;0&quot;
       role=&quot;tabpanel&quot;
       id=&quot;nils-tab&quot;
       aria-labelledby=&quot;nils&quot;&gt;
    &lt;p&gt;
      Nils Frahm is a German musician, composer and record producer based in Berlin. He is known for combining classical and electronic music and for an unconventional approach to the piano in which he mixes a grand piano, upright piano, Roland Juno-60, Rhodes piano, drum machine, and Moog Taurus.
    &lt;/p&gt;
  &lt;/div&gt;
  &lt;div tabindex=&quot;0&quot;
       role=&quot;tabpanel&quot;
       id=&quot;agnes-tab&quot;
       aria-labelledby=&quot;agnes&quot;
       hidden=&quot;&quot;&gt;
    &lt;p&gt;
      Agnes Caroline Thaarup Obel is a Danish singer/songwriter. Her first album, Philharmonics, was released by PIAS Recordings on 4 October 2010 in Europe. Philharmonics was certified gold in June 2011 by the Belgian Entertainment Association (BEA) for sales of 10,000 Copies.
    &lt;/p&gt;
  &lt;/div&gt;
  &lt;div tabindex=&quot;0&quot;
       role=&quot;tabpanel&quot;
       id=&quot;complexcomplex&quot;
       aria-labelledby=&quot;complex&quot;
       hidden=&quot;&quot;&gt;
    &lt;p&gt;
      Fear of complicated buildings:
    &lt;/p&gt;
    &lt;p&gt;
      A complex complex complex.
    &lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;</code></pre><p><a href="https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-2/tabs.html">HTML코드 출처</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프론트엔드스쿨 - 시맨틱태그]]></title>
            <link>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-%EC%8B%9C%EB%A7%A8%ED%8B%B1%ED%83%9C%EA%B7%B8</link>
            <guid>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-%EC%8B%9C%EB%A7%A8%ED%8B%B1%ED%83%9C%EA%B7%B8</guid>
            <pubDate>Mon, 25 Oct 2021 18:07:46 GMT</pubDate>
            <description><![CDATA[<h2 id="✅-시맨틱-태그란">✅ 시맨틱 태그란?</h2>
<blockquote>
<p><strong>Semantic Tag</strong> <strong>: 의미를 가지는 태그</strong></p>
</blockquote>
<p>시맨틱 태그에 의해 컴퓨터가 HTML 요소의 의미를 보다 명확히 해석하고 그 데이터를 활용할 수 있는 시맨틱 웹이 실현될 수 있다.</p>
<h2 id="✅-시맨틱-웹이란">✅ 시맨틱 웹이란?</h2>
<blockquote>
<p>웹이 존재하는 수 많은 웹페이지들에 메타데이터를 부여하여 기존의 잡다한 데이터 집합이었던 웹페이지를 <strong>의미와 관련성을 가지는 거대한 데이터  베이스로 구축</strong>하고자 하는 발상</p>
</blockquote>
<h2 id="✅-사용이유">✅ 사용이유</h2>
<blockquote>
<p>📌 <strong>웹 접근성(Web Accessibility)</strong></p>
</blockquote>
<p>웹 접근성이란 웹서비스에 장애/비장애(환경적 요소 포함)를 아울러 모든 사람들이 접근 가능하게 하고 이해와 사용가능하게 하는 것이다. 
시맨틱 태그는 웹 페이지의 구조를 의미있게 만든 태그로, 스크린리더 등 보조기기를 사용하는 웹 서비스 사용자들이 시맨틱 태그를 통해 어느 부분이 제목이고, 내용인지 구별할 수 있으므로 정확히 정보를 전달받을 수 있기때문이다.</p>
<blockquote>
<p>📌 <strong>SEO(Search Engine Optimization) : 검색엔진최적화</strong></p>
</blockquote>
<p>웹 문서를 작성할 때, 시맨틱 태그를 사용하지 않아도 아무 문제가 없다. 그러나 검색엔진에서 웹문서가 잘 검색되도록 하기 위해 사용한다.
검색엔진은 저마다의 로봇이 웹사이트들을 돌아다니면서 웹문서를 읽어들인다. 이렇게 웹문서를 읽은 다음 자기 검색엔진에 검색어가 입력되면 그에 맞게 웹사이트를 노출시킨다.
시맨틱 태그는 이런 검색엔진최적화가 보다 효율적이고 잘 되도록 도와주는 역할을 한다.</p>
<h2 id="✅-시맨틱-태그의-종류">✅ 시맨틱 태그의 종류</h2>
<p><img src="https://images.velog.io/images/dasol-jeong/post/91b55e33-4e89-49e1-aa2c-3f8ecc543b76/FDSFSDFSDFS.PNG" alt=""> 참조 (<a href="https://server-dev.tistory.com/162">세연아빠의 개발과 일상의 모습</a>)</p>
<p><strong><code>&lt;header&gt;</code></strong> : 사이트에 대한 소개 정보나 메인메뉴, 사이트 로고 등이 포함</p>
<p><strong><code>&lt;nav&gt;</code></strong> : 사이트의 메뉴나 링크 같은 네비케이션 요소들</p>
<p><strong><code>&lt;main&gt;</code></strong> : 문서의 주요 콘텐츠 부분으로 main안에 header,nav,aside,footer를 포함시켜서는 안됨(한 페이지에 한번만 사용 가능)</p>
<p><strong><code>&lt;section&gt;</code></strong> : 제목을 갖고 있으면서 문서 전체와 관련이 있는 콘텐츠의 집합(article 아래에도 section 올 수 있음) - 문서에서 독립적인 특정 영역</p>
<p><strong><code>&lt;article&gt;</code></strong> : 실질적인 내용을 넣음(뉴스 기사) - 영역속에서 독립적인 콘텐츠</p>
<p><strong><code>&lt;aside&gt;</code></strong> : 사이드바라고도 부르며, 본문 이외의 내용을 담고 있음. 본문옆에 광고를 달거나 링크들을 이 공간에 넣음</p>
<p><strong><code>&lt;footer&gt;</code></strong> : 화면 구조 중 제일 아래에 위치하며, 회사소개, 저작권, 약관, 제작정보 등이 위치</p>
<p><strong><code>&lt;address&gt;</code></strong> : 주로 footer안에 연락처 정보를 넣을 때 사용</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프론트엔드스쿨 - WAI ARIA]]></title>
            <link>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-WAI-ARIA</link>
            <guid>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-WAI-ARIA</guid>
            <pubDate>Mon, 25 Oct 2021 12:46:18 GMT</pubDate>
            <description><![CDATA[<h2 id="✅-wai-aria란">✅ WAI-ARIA란?</h2>
<blockquote>
<p><strong>Web Accessibility Initiative – Accessible Rich Internet Applications</strong></p>
<p><strong>WAI</strong>는 W3C에서 웹 접근성을 담당하는 기관으로 <strong>ARIA</strong>는 RIA환경의 웹 접근성에 대한 표준 기술 규격을 의미</p>
<p>쉽게, 스크린리더와 같은 보조기술들에 <strong>웹 접근성을 향상</strong> 시켜주는 HTML에 추가할 수 있는 속성</p>
</blockquote>
<h2 id="✅-등장-배경">✅ 등장 배경</h2>
<blockquote>
<p>● RIA(Rich Internet Application)의 동적인 웹 애플리케이션 접근성 보장을 위한 지침이 부족</p>
</blockquote>
<p>● 대부분의 웹 사이트들은 Ajax를 통해 실시간으로 콘텐츠들을 갱신하는데, 스크린리더를 사용하는 사용자들은 실시간으로 갱신되는 정보를 알 수 없음</p>
<blockquote>
</blockquote>
<p>● 페이지 콘텐츠 중 일부만 변경되었을 때, 스크린리더를 사용하는 사용자들은 동일한 내용을 계속 듣게되는 문제에 부딪힘</p>
<blockquote>
</blockquote>
<p>● 저시력자가 화면을 확대하였을 경우, 확대된 화면밖의 콘텐츠가 변경되어도 이를 인지하기 어려움</p>
<h2 id="✅-사용-목적">✅ 사용 목적</h2>
<blockquote>
<p>마우스, 키보드와 같은 입력 하드웨어를 사용하기 힘든 환경 또는 스크린 리더를 사용하는 사용자들에게 <strong>웹서비스에 대한 접근성 및 상호 운용성을 향상</strong>시키기 위해 마크업에 <strong>역할(Role)</strong>, <strong>속성(Property)</strong>, <strong>상태(State)</strong> 정보를 추가할 수 있도록 지원하여 보다 나은 <strong>사용자 경험(UX)</strong>을 제공하기 위한 목적을 가짐</p>
</blockquote>
<h2 id="✅-구조">✅ 구조</h2>
<blockquote>
<p>📌 <strong>역할(Role)</strong> : UI에 특정 컴포넌트의 역할을 정의</p>
</blockquote>
<pre><code>&lt;ul role=&quot;tabList&quot;&gt;
  &lt;li&gt;
    &lt;a href=&quot;#&quot; role=&quot;tab&quot;&gt;탭&lt;/a&gt;
  &lt;li&gt;
&lt;/ul&gt;</code></pre><p>aria 구조 중 역할을 명시해주면 단지 링크 태그로서의 의미만을 전달해주는것이 아닌, 버튼의 역할이 Tab이라고 명시해준다.</p>
<blockquote>
<p>📌 <strong>속성(Property)</strong> : 해당 컴포넌트의 특징이나 상황을 정의
해당 컴포넌트에 속성명으로 aria-xx라는 접두사 사용</p>
</blockquote>
<pre><code>&lt;button class=&quot;btn_search&quot; aria-label=&quot;검색&quot;&gt;</code></pre><p>검색이라는 안내 텍스트 없이 버튼을 나타낼 때, 시각 정보를 이용할 수 없는 사용자는 어떤 버튼인지 알 수 없다. aria-label을 이용하여 버튼 요소에 검색이라는 설명을 추가하여 정보를 전달할 수 있다.</p>
<blockquote>
</blockquote>
<p><strong>[다양한 속성]</strong></p>
<blockquote>
</blockquote>
<p>● aria-required : form 요소의 입력 필수 속성
● aria-label : text없이 이미지로 표현될 때 정보 설명
● aria-live : 업데이트된 정보의 상황에 대한 설명
● aria-controls(속성에 제어대상) : 제어대상</p>
<blockquote>
<p>📌 <strong>상태(State)</strong> : 해당 컴포넌트의 상태 정보를 정의
메뉴의 활성 여부를 보여주는 aria-expanded, aria-selected와 같이 현재 상태 또는 변화된 값을 알려준다.</p>
</blockquote>
<pre><code>&lt;ul class=&quot;btnList&quot;&gt;
  &lt;li&gt;
    &lt;button aria-controls=&quot;accordion-region&quot; aria-expanded=&quot;true&quot;&gt;btn&lt;/button&gt;
  &lt;/li&gt;
&lt;/ul&gt;</code></pre><p>아코디언 메뉴의 활성 상태 값인 aria-expanded를 명시하면 스크린 리더기가 상태정보(확장 또는 축소)를 읽어줄 수 있다.</p>
<blockquote>
</blockquote>
<p><strong>[다양한 상태]</strong></p>
<blockquote>
</blockquote>
<p>● aria-checked(true,false,undefined) : 선택 상태
● aria-hidden(true,false,undefined) : 숨김 상태
● aria-disabled(true,false) : 사용 불가능/가능 상태
● aria-pressed(true,false,대상) : 눌림 상태 </p>
<blockquote>
<p>더 많은 ARIA의 역할, 속성, 상태는 (<a href="https://developer.mozilla.org/ko/docs/Web/Accessibility/ARIA/ARIA_Techniques">MDN-ARIA</a>) 참고</p>
</blockquote>
<h2 id="✅-주의사항">✅ 주의사항</h2>
<blockquote>
<p>● HTML5에서 추가된 의미 있는 태그를 먼저 사용하고 의미를 부가적으로 설명해주고자 할 때 WAI-ARIA의 role을 추가해주기</p>
<p>● 의미를 가진 HTML 요소를 함부로 바꾸지 말기</p>
<p>● 키보드를 사용하여 접근할 수 있게 하기</p>
<p>● 사용자의 브라우저와 보조기기가 WAI-ARIA를 지원하는지 확인하기(<a href="https://caniuse.com/">Can I Use</a>)</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[프론트엔드스쿨 js - boolean]]></title>
            <link>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-js-boolean</link>
            <guid>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-js-boolean</guid>
            <pubDate>Sun, 10 Oct 2021 09:25:40 GMT</pubDate>
            <description><![CDATA[<h1 id="✅-boolean">✅ boolean</h1>
<ul>
<li>속성값으로는 <code>true</code> 와 <code>false</code> 가 있음</li>
<li>if(조건문)문에서 조건문이 <code>true</code>이면 실행</li>
<li>&lt;false로 판단되는 데이터&gt;
📌 <code>undefined</code>
📌 <code>null</code>
📌 <code>0</code>
📌 <code>-0</code>
📌 <code>NaN</code>
📌 <code>&quot;&quot;(빈문자열)</code></li>
<li><code>!==</code> 와 <code>!=</code> 의 차이
<code>null</code> 과 <code>undefined</code> 는 <code>==</code>로 비교할 때 <code>true</code>
<code>null</code> 과 <code>undefined</code> 는 <code>===</code>로 비교할 때 <code>false</code></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[프론트엔드스쿨 js - Number]]></title>
            <link>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-js-Number</link>
            <guid>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-js-Number</guid>
            <pubDate>Fri, 08 Oct 2021 11:42:51 GMT</pubDate>
            <description><![CDATA[<h1 id="💕-number">💕 Number</h1>
<ul>
<li>Number 객체는 숫자 값으로 작업할 수 있게 해주는 객체</li>
</ul>
<h2 id="속성">속성</h2>
<h3 id="✅-numbermax_safe_integer">✅ Number.MAX_SAFE_INTEGER</h3>
<p>: JS에서 안전한 최대 정수(2^53 - 1)</p>
<h3 id="✅-numbermin_safe_integer">✅ Number.MIN_SAFE_INTEGER</h3>
<p>: JS에서 안전한 최소 정수(-(2^53 -1))</p>
<h3 id="✅-numbernan">✅ Number.NaN</h3>
<p>: 숫자가 아님을 나타내는 특별한 값</p>
<h2 id="메소드">메소드</h2>
<h3 id="✅-numberisnan">✅ Number.isNaN()</h3>
<p>: 주어진 값이 NaN인지 확인</p>
<h3 id="✅-numberisinteger">✅ Number.isInteger()</h3>
<p>: 주어진 값이 정수인지 확인</p>
<h3 id="✅-numberparseintstring">✅ Number.parseInt(string)</h3>
<p>: 문자열을 숫자로 변환
<code>parseInt(&quot;10)&quot;</code>를 하면 문자열 &quot;10&quot;을 정수 10으로 변환</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프론트엔드스쿨 js - Math]]></title>
            <link>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-js-Math.pow</link>
            <guid>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-js-Math.pow</guid>
            <pubDate>Wed, 06 Oct 2021 05:02:36 GMT</pubDate>
            <description><![CDATA[<h1 id="💕math">💕Math</h1>
<p>: 수학적인 상수와 함수를 위한 속성과 메서드를 가진 내장 객체</p>
<h2 id="✅-mathpowxy">✅ Math.pow(x,y)</h2>
<p>: x의 y제곱 반환</p>
<pre><code>const num = 5;
num =  Math.pow(num,2);
console.log(&quot;num**num : &quot;,num);</code></pre><p>하면 <code>num**num : 25</code> 가 나온다.</p>
<h2 id="✅-mathsqrtx">✅ Math.sqrt(x)</h2>
<p>: 숫자의 제곱근 반환</p>
<h2 id="✅-mathabsx">✅ Math.abs(x)</h2>
<p>: 숫자의 절대값 반환</p>
<h2 id="✅-mathmaxxyz">✅ Math.max(x,y,z,...)</h2>
<p>: 0개 이상의 인수에서 제일 큰 수 반환</p>
<h2 id="✅-mathminxyz">✅ Math.min(x,y,z,...)</h2>
<p>: 0개 이상의 인수에서 제일 작은 수 반환</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프론트엔드스쿨 - js 배열 10/5]]></title>
            <link>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-js-%EB%B0%B0%EC%97%B4105</link>
            <guid>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-js-%EB%B0%B0%EC%97%B4105</guid>
            <pubDate>Tue, 05 Oct 2021 12:53:11 GMT</pubDate>
            <description><![CDATA[<p>📌배열은 모든 데이터를 다 포함할 수 있어</p>
<h2 id="✅-join--배열---string으로-변환">✅ join() : 배열 -&gt; string으로 변환</h2>
<ul>
<li>join() 가로안에 구분자 넣음(옵션)</li>
<li>구분자를 포함하여 string으로 변환
<code>const fruits = [&#39;apple&#39;,&#39;banna&#39;,&#39;orange&#39;];</code> 를 string으로 변환하려면 <code>fruits.join();</code> 한다. </li>
</ul>
<h2 id="✅-split--string---배열로-변환">✅ split() : string -&gt; 배열로 변환</h2>
<ul>
<li>split() 가로안에는 구분자와 리턴받을 배열의 크기를 넣을 수 있음. 구분자로는 string 또는 정규표현식을 사용 할 수 있다.</li>
<li><code>const fruits =&#39;🍎,🍈,🍒,🍊&#39;;</code> 를 배열로 변환하려면<code>fruits.split(&#39;,&#39;);</code> 한다.
만약 사과랑 메론만 받고 싶으면, <code>fruits.split(&#39;,&#39;,2);</code> 하면 된다.</li>
<li>split은 구분자를 꼭 전달해야한다. 그렇지 않으면 문자 전체가 배열하나에 들어오게 된다.<h2 id="✅-reverse--배열의-순서를-거꾸로-변환">✅ reverse() : 배열의 순서를 거꾸로 변환</h2>
</li>
<li><code>const array=[1,2,3,4,5];</code>을 거꾸로 출력하려면, <code>array.reverse();</code> 해주면 된다. 그러면
<code>[5,4,3,2,1]</code>로 출력된다.</li>
<li>reverse는 배열 자체를 변환 시킴</li>
</ul>
<h2 id="✅-splice--배열에서-선택한-데이터를-삭제하고-그-데이터-값을-return">✅ splice() : 배열에서 선택한 데이터를 삭제하고, 그 데이터 값을 return</h2>
<ul>
<li><code>const array=[1,2,3,4,5];</code> 에서 1,2를 삭제하려면 <code>array.splice(0,2);</code>해주면된다. 그러면
[3,4,5]가 남는다. splice(삭제할 첫번째 숫자, 몇개를 삭제할 것인지)</li>
<li>splice는 배열 자체에서 데이터를 삭제함</li>
</ul>
<h2 id="✅-slicestart-index-end-index--배열에서-선택한-데이터들로-새로운-배열을-생성">✅ slice(start index, end index) : 배열에서 선택한 데이터들로 새로운 배열을 생성</h2>
<ul>
<li><code>const array=[1,2,3,4,5];</code> 에서 3,4,5로만 이루어진 새로운 배열을 만드려면 <code>const result = array.slice(2,5);</code>하면 된다. result는 [3,4,5]가 되고 array는 그대로 [1,2,3,4,5]이다. </li>
<li>slice(시작인덱스, 뽑아내고싶은 마지막인덱스 +1)<pre><code>let desc =&quot;abcdefg&quot;;
desc.slice(2);
desc.slice(0,5);
desc.slice(2,-2); // index 2부터 뒤에서 2까지 </code></pre></li>
</ul>
<blockquote>
<p>&lt;결과&gt;
&quot;cdefg&quot;
&quot;abcde&quot;
&quot;cde&quot;</p>
</blockquote>
<h2 id="✅-concatarr1arr2--배열-합쳐서-새배열-반환">✅ concat(arr1,arr2) : 배열 합쳐서 새배열 반환</h2>
<pre><code>let arr=[1,2];
arr.concat([3,4]);</code></pre><blockquote>
<p>&lt;결과&gt;
[1,2,3,4]</p>
</blockquote>
<h2 id="✅-find--배열에서-조건에-맞는-첫번째-요소를-return">✅ find() : 배열에서 조건에 맞는 첫번째 요소를 return</h2>
<ul>
<li>true가 return되면 바로 함수 멈춤</li>
<li>predicate</li>
<li>callback함수를 받는다(내가 callback함수를 만들어서 전달해야한다)</li>
<li>callback함수는 blooean type을 return</li>
<li>find(this, value, index, object)=&gt;blooean<pre><code>class Student{
constructor(name,age,enrolled,score){
  this.name=name;
  this.age=age;
  this.enrolled=enrolled;
  this.score=score;
}
}  
const students=[
new Student(&#39;A&#39;,29,true,45),
new Student(&#39;B&#39;,28,false,80),
new Student(&#39;C&#39;,30,true,90),
new Student(&#39;D&#39;,40,false,66),
new Student(&#39;E&#39;,18,true,88),
];</code></pre></li>
</ul>
<p>Q. 90점인 학생 찾기</p>
<pre><code>const result = students.find(function(student,index){
    return student.score === 90;
});
console.log(result);</code></pre><p>true값을 찾으면 find함수는 멈추고 그 값을 return함
위 코드를 이렇게 축약 할 수 있음</p>
<pre><code>const result = students.find((student) =&gt; student.score === 90);
console.log(result);</code></pre><p>function을 쓸 필요없고 arrow를 쓰고, arrow일때 한문장이면 중괄호, return, 세미콜론 생략 가능</p>
<h2 id="✅-filter--return-값이-true인-아이들만-모아서-새로운-배열-생성">✅ filter() : return 값이 true인 아이들만 모아서 새로운 배열 생성</h2>
<p>Q. 수업에 등록한 학생들 찾기</p>
<pre><code>const result = students.filter(function(student){
    return student.enrolled;
});
console.log(result);</code></pre><p>위 코드를 이렇게 축약 할 수 있음</p>
<pre><code>const result = students.filter((student) =&gt; student.enrolled);
console.log(result);</code></pre><h2 id="✅-map--배열안에-있는-요소들을-콜백함수에서-가공되어진-return값들로-대체-즉-값을-변환">✅ map() : 배열안에 있는 요소들을 콜백함수에서 가공되어진 return값들로 대체! 즉 값을 변환</h2>
<p>Q. 학생들의 점수만 뽑아내기</p>
<pre><code>const result = students.map((student) =&gt; student.score);
console.log(result);</code></pre><ul>
<li>callback 함수에서 value명 의미있게/알아볼 수 있게 작성</li>
</ul>
<h2 id="✅-some--배열의-요소-중-콜백함수가-return해주는-값에서-true가-있는지-없는지-확인-하나의-값만-true면-그때-함수-종료">✅ some() : 배열의 요소 중 콜백함수가 return해주는 값에서 true가 있는지 없는지 확인. 하나의 값만 true면 그때 함수 종료</h2>
<ul>
<li>학생들 점수 중 50점보다 낮은 학생 찾기<pre><code>const result = students.some((student) =&gt; student.score &lt; 50);
console.log(result);</code></pre></li>
</ul>
<h2 id="✅-every--배열의-모든-요소들이-조건에-충족해야-true를-반환-하나라도-아니라면-false">✅ every() : 배열의 모든 요소들이 조건에 충족해야 true를 반환. 하나라도 아니라면 false</h2>
<pre><code>const result2 = !students.every((student) =&gt; student.score &gt;= 50);
console.log(result2);</code></pre><ul>
<li>이 결과는 false가 나옴</li>
<li><code>console.log(!ture)</code> 결과는 false나옴</li>
</ul>
<h2 id="✅-reduceprevcurr-">✅ reduce(prev,curr) :</h2>
<ul>
<li>인자를 함수로 받음</li>
<li>콜백함수가 return하는 값은 누적된 값을 return</li>
<li>return되는 curr값이 prev로 들어가서 연결됨</li>
<li>0부터 시작</li>
<li>학생들의 평균 구하기<pre><code>const result = student.reduce((prev,curr) =&gt;{
  console.log(prev);
  console.log(curr);
  return prev + curr.score;
},0);</code></pre></li>
</ul>
<pre><code>let arr=[1,2,3,4,5];
const result = arr.reduce((pre,curr) =&gt; {
    return pre+curr;
},0);
console.log(result);</code></pre><pre><code>let result=userList.reduce((pre,curr) =&gt; {
    if(cur.age &gt; 19){
        pre.push(cur.name);
    }
    return pre;
},[]);</code></pre><h2 id="✅-sort--배열-안의-원소를-정렬하는-함수">✅ sort() : 배열 안의 원소를 정렬하는 함수</h2>
<ul>
<li>문자정렬</li>
<li>배열 정렬</li>
<li>배열 자체가 변경</li>
<li>** 숫자는 문자열로 정렬되서 제대로 정렬 안됨. 함수로 비교처리해줘야함**</li>
</ul>
<p><code>const fruit=[&#39;orange&#39;,&#39;apple&#39;,&#39;banana&#39;];</code>
를 오름차순으로 정렬하고 싶다면, <code>fruit.sort();</code>해주면 apple,banana,orange로 정렬된다.</p>
<ul>
<li>숫자정렬 : 숫자는 아스키 문자 순서로 정렬되어 1,2,3 처럼 정렬되지 않음.
<code>const score=[4,11,2,10,3,1];</code>를 오름차순으로 정렬시키려면, <code>score.sort(function(a,b){
  return a-b;
});</code> 해주면 된다.
<code>score.sort((a,b) =&gt; a-b);</code> arrow function을 사용하여 이렇게 쓸 수도 있다.
<code>score.sort((a,b) =&gt; b-a);</code> 이건 내림차순이다.</li>
</ul>
<pre><code>let arr=[27, 8, 5, 13];
function fn(a,b){
    return a-b;
}
arr.sort(fn);
consol.log(arr);
/*arr.sort((a,b) =&gt; {
    return a-b;
});*/</code></pre><h2 id="✅-foreach-">✅ forEach() :</h2>
<ul>
<li>배열의 모든 수 합치기</li>
<li>for, for of</li>
</ul>
<pre><code>let arr=[1,2,3,4,5];
let result=0;
arr.forEach((num) =&gt;{
    result+=num;
});
console.log(arr);</code></pre><h2 id="✅-substringnm--n과-m-사이-문자열-반환">✅ substring(n,m) : n과 m 사이 문자열 반환</h2>
<ul>
<li>n과 m 바꿔도 동작함</li>
<li>음수는 허용하지 않음. 0으로 인식<pre><code>let desc=&quot;abcdefg&quot;;
desc.substring(2,5); // cde
desc.substring(5,2); //cde
모두 동일한 문자열을 return</code></pre></li>
</ul>
<h2 id="✅-substrnm--n부터-시작해서-m개를-가져옴">✅ substr(n,m) : n부터 시작해서 m개를 가져옴</h2>
<pre><code>let desc=&quot;abcdefg&quot;;
desc.substr(2,4); // cdef
desc.substr(-4,2); // de
모두 동일한 문자열을 return</code></pre><h2 id="✅-trim--문자열의-앞-뒤-공백-제거">✅ trim() : 문자열의 앞 뒤 공백 제거</h2>
<h2 id="✅-includes--문자가-있으면-true-없으면-false반환">✅ .includes() : 문자가 있으면 true, 없으면 false반환</h2>
]]></description>
        </item>
        <item>
            <title><![CDATA[프론트엔드스쿨 layout - grid 10/5]]></title>
            <link>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-layout-grid-105</link>
            <guid>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-layout-grid-105</guid>
            <pubDate>Tue, 05 Oct 2021 03:46:54 GMT</pubDate>
            <description><![CDATA[<h1 id="✅grid-layoyt">✅grid layoyt</h1>
<blockquote>
<p><img src="https://images.velog.io/images/dasol-jeong/post/475c8958-b79c-4286-9cbf-4edfe0f1231c/KakaoTalk_20211005_110428073.jpg" alt="">
▲ <strong>flexbox에는 교차축에 여러개의 item들이 있으면 안돼</strong>
▲ row - 행
▲ column - 열
▲ gutters - 각 행과 열 사이의 공백
▲ 이 레이아웃은 상품 나열 또는 사진 나열하는 곳에 잘 쓰여
▲ table은 레이아웃에 사용하면 안돼
▲ grid layout은 바깥쪽에 container틀을 만들고 내부에 형제 item들을 차례로 넣는 형태로 이루어진다.</p>
</blockquote>
<h3 id="✨html-code">✨html code</h3>
<pre><code>    &lt;div class=&quot;container&quot;&gt;
      &lt;div class=&quot;item&quot;&gt;1&lt;/div&gt;
      &lt;div class=&quot;item&quot;&gt;2&lt;/div&gt;
      &lt;div class=&quot;item&quot;&gt;3&lt;/div&gt;
      &lt;div class=&quot;item&quot;&gt;4&lt;/div&gt;
      &lt;div class=&quot;item&quot;&gt;5&lt;/div&gt;
    &lt;/div&gt;</code></pre><h3 id="✨css-code">✨css code</h3>
<pre><code>.container{
  margin: 50px 0px;
  border: 5px dashed orange;
  display: inline-grid;
  grid-template-columns: 1fr 1fr 1fr;
  width: 70%;
}
.item{
  background-color: paleturquoise;
  border: 3px solid blue;
  font-size: 30px;
}</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/01e30982-fb2b-4ef1-ac6e-0b3b5ab4b791/efdsfds.PNG" alt=""></p>
<h1 id="✅부모container에-쓸-수-있는-속성">✅부모(container)에 쓸 수 있는 속성</h1>
<blockquote>
<p>▲ gird-template-rows : 몇개의 행을 갖는지
▲ gird-template-columns : 몇개의 열을 갖는지</p>
</blockquote>
<blockquote>
<p><em>3개의 열로 만들고 싶다</em></p>
</blockquote>
<pre><code>.container{
      border: 5px dashed orange;
      display: inline-grid;
      grid-template-columns: 100px 150px 100px;
      width: 70%;
}
.item{
  background-color: paleturquoise;
  border: 3px solid blue;
  font-size: 30px;
}</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/04622278-9ee9-472a-818e-7e428fc31d89/fsdfdsfsdf.PNG" alt=""></p>
<blockquote>
<p><strong>▲ item들이 하나의 행 하나의 열에만 차지하는 것이 아니라, 여러개의 행과 열을 차지 할 수 있어</strong>
▲ 무조건 item들은 네모 모양이여야 돼!!!!!!!!!!
▲ gird-template-areas를 사용하면 돼</p>
</blockquote>
<pre><code>gird-template-areas : 
         &quot;a a a&quot;
         &quot;b c c&quot;
         &quot;b c c&quot;;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/6e8a0093-8c23-4582-8ddd-7cd70141e981/dsadsadasdsad.PNG" alt=""></p>
<blockquote>
<pre><code> gird-template-areas : 
         &quot;b b a&quot;
         &quot;b b c&quot;
         &quot;b b c&quot;;</code></pre></blockquote>
<pre><code>![](https://images.velog.io/images/dasol-jeong/post/c2c4107f-4103-45eb-bfc5-d8cfc76a6f76/image.png)

&gt; ```
gird-template-areas : 
         &quot;a a .&quot;
         &quot;a a .&quot;
         &quot;. b c&quot;;</code></pre><blockquote>
<p><img src="https://images.velog.io/images/dasol-jeong/post/9ac0f651-77e7-4c00-8127-e239d5dfdf37/image.png" alt=""></p>
</blockquote>
<blockquote>
<p>💥grid로 레이아웃 짤 때, class명을 사용하는 것이 아니라 grid-area로 이름  정해서 사용
<img src="https://images.velog.io/images/dasol-jeong/post/aa536dfc-fbf0-431c-87c5-616e9a83e829/KakaoTalk_20211005_110351476.jpg" alt=""></p>
</blockquote>
<pre><code> .container{
  margin: 50px 20px;
  border: 5px dashed orange;
  width: 70%;
  height: 400px;
  display: grid;
  grid-template-areas: 
    &quot;a a a a&quot;
    &quot;b b . c&quot;
    &quot;d d d d&quot;;
}
.a{
  grid-area: a;
  background-color: palevioletred;
}
.b{
  grid-area: b;
  background-color: peru;
}
.c{
  grid-area: c;
  background-color: rebeccapurple;
}
.d{
  grid-area: d;
  background-color: seagreen;
}</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/06c1a7d8-3fb6-449d-aeb0-4f56a08b0dcc/image.png" alt=""></p>
<h1 id="✅justify-content-align-content-vs-justify-items-align-items">✅justify-content, align-content vs justify-items, align-items</h1>
<blockquote>
<p>▲ justify : main축
▲ align : 교차축
▲ content : 안에 있는 요소들
▲ items : 하나의 틀안에서 하나의 요소에 대해서만
▲ justify-items : 그 하나하나 요소들의 전체
▲ justify-self : 여러개중 딱 하나를 정해 그것만 효과줄때</p>
</blockquote>
<h1 id="✅-container-안에서-가운데-정렬">✅ container 안에서 가운데 정렬</h1>
<blockquote>
<p><strong>html code</strong></p>
</blockquote>
<pre><code>&lt;div class=&quot;container&quot;&gt;
      &lt;div class=&quot;item&quot;&gt;1&lt;/div&gt;
      &lt;div class=&quot;item&quot;&gt;2&lt;/div&gt;
      &lt;div class=&quot;item&quot;&gt;3&lt;/div&gt;
      &lt;div class=&quot;item&quot;&gt;4&lt;/div&gt;
      &lt;div class=&quot;item&quot;&gt;5&lt;/div&gt;
      &lt;div class=&quot;item&quot;&gt;6&lt;/div&gt;
      &lt;div class=&quot;item&quot;&gt;7&lt;/div&gt;
      &lt;div class=&quot;item&quot;&gt;8&lt;/div&gt;
      &lt;div class=&quot;item&quot;&gt;9&lt;/div&gt;
&lt;/div&gt;      </code></pre><p><strong>css code</strong></p>
<pre><code>.container{
  margin: 50px 20px;
  border: 5px dashed orange;
  width: 100%;
  height: 500px;
  display: grid;
  grid-template-rows: repeat(3,100px);
  grid-template-columns: repeat(3,100px);
  **justify-content: center;**
  **align-content: center;**
}
.item{
  background-color: paleturquoise;
  border: 3px solid blue;
  font-size: 30px;
}</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/8f3e0d5e-af59-4dd0-ae4e-561c28b6b7b7/image.png" alt=""></p>
<h1 id="✅item들이-container-끝으로-퍼지는">✅item들이 container 끝으로 퍼지는</h1>
<p><strong>justify-content: space-between과 align-content: space-between이용!</strong></p>
<blockquote>
<p>css code</p>
</blockquote>
<pre><code>.container{
  margin: 50px 20px;
  border: 5px dashed orange;
  width: 100%;
  height: 500px;
  display: grid;
  grid-template-rows: repeat(3,100px);
  grid-template-columns: repeat(3,100px);
  **justify-content: space-between;**
  **align-content: space-between;**
}
.item{
  background-color: paleturquoise;
  border: 3px solid blue;
  font-size: 30px;
}</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/3330fce2-0fcb-4259-a5fc-3823586ac251/image.png" alt=""></p>
<h1 id="✅-item들이-자기가-차지할-수-있는-틀안에서-가운데-정렬">✅ item들이 자기가 차지할 수 있는 틀안에서 가운데 정렬</h1>
<p><strong>justify-content: cernter과 align-content: center이용!</strong></p>
<blockquote>
<p>css code</p>
</blockquote>
<pre><code> .container{
  margin: 50px 20px;
  border: 5px dashed orange;
  width: 50%;
  height: 500px;
  display: grid;
  grid-template-rows: repeat(3,1fr);
  grid-template-columns: repeat(3,1fr);
  justify-items: center;
  align-items: center;
 }
 .item{
  background-color: paleturquoise;
  border: 3px solid blue;
  font-size: 30px;
  width: 50px;
  height: 50px;
  text-align: center;
 }</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/53927c85-4d8e-4c19-ae82-dd6f2e7658a2/fsdfsdfwe.PNG" alt=""></p>
<h1 id="✅-grid-단위---fr-min-content-max-content">✅ grid 단위 - fr, min-content, max-content```</h1>
<blockquote>
<p>만약 <code>gird-template-rows : 100px 1fr 1fr;</code> 이렇게 사용한다면, 맨 앞 요소는 100px로 잡아 놓고 남은 크기에서 비율로 크기를 가져간다.</p>
</blockquote>
<p>📌min-content : 최소로 줄일 수 있을 만큼 사이즈로 줄어드는데, 요소의 원래 크기까지
📌max-content : 최대로 늘릴 수 있을 만큼</p>
<h1 id="✅-auto-fill-auto-fit">✅ auto-fill, auto-fit</h1>
<p>📌auto-fill : column의 개수를 유연하게 조절, 만약 브라우저 사이즈를 조절할 때, 남는 공간에 요소가 채워짐(그 반대도 마찬가지)
📌auto-fill과 minmax()를 같이 사용하면 남는 공간 없이 꽉 채워서 사용가능</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프론트엔드스쿨 css - 10/1]]></title>
            <link>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-css-101</link>
            <guid>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-css-101</guid>
            <pubDate>Fri, 01 Oct 2021 12:43:23 GMT</pubDate>
            <description><![CDATA[<h1 id="✅-상대길이">✅ 상대길이</h1>
<blockquote>
<p>🍌뷰포트 : 브라우저에서 웹사이트를 볼 수 있는 영역</p>
</blockquote>
<blockquote>
<p>🍌vw(width) : 가로 단위이며, 디바이스에 맞춰 
🍌vh(height) :
디바이스에 따라 반응형으로 만들고 싶을때 사용하는 단위</p>
</blockquote>
<blockquote>
<p>🍌vmin : vw와 vh중 작은 것
🍌vmax : vw와 vh중 큰 것</p>
<ul>
<li>주로 웹사이트가 가로모드와 세로모드가 있을 경우 사용</li>
</ul>
</blockquote>
<blockquote>
<p>🍌 %(percentage) :  부모를 기준으로 함( 부모의 값에 따라 영향을 받음)</p>
</blockquote>
<h1 id="✅-연산-함수">✅ 연산 함수</h1>
<blockquote>
<p>🍌cal() : 단위가 다른 것들을 사칙연사 해줄 수 있게 하는 함수</p>
<ul>
<li>+, -, *, / 연산자 앞 뒤로 공백 하나씩 줘야함</li>
<li>숫자를 사용</li>
</ul>
</blockquote>
<blockquote>
<p>🍌min(x,y) : x와 y중 작은 값 선택
🍌max(x,y) : x와 y중 큰 값 선택</p>
<ul>
<li>지원안하는 브라우저도 있으니 확인하고 사용하기</li>
</ul>
</blockquote>
<h1 id="✅-박스모델">✅ 박스모델</h1>
<p><img src="https://images.velog.io/images/dasol-jeong/post/7b3d7d84-3215-45a5-985b-386396609190/3cf29905c4a515a24556c7d869a599a3.png" alt=""></p>
<blockquote>
<p>🍌content : html요소 중 실제 컨텐츠의 영역
🍌padding : 요소 안쪽 여백
🍌border : padding과 margin 사이의 테두리
🍌margin : 요소 바깥쪽 여백</p>
</blockquote>
<h1 id="✅-minmax-wdithheight">✅ min/max-wdith/height</h1>
<blockquote>
<p>🍌 지정한 값이 되면 브라우저 창에 맞게 요소의 가로/세로가 줄어들거나 늘어나지 않게 하는 속성</p>
</blockquote>
<h1 id="✅-margin">✅ margin</h1>
<blockquote>
<p>🍌initail value </p>
</blockquote>
<ul>
<li>margin-bottom : 0;</li>
<li>margin-left : 0;</li>
<li>margin-right : 0;</li>
<li>margin-top : 0;</li>
</ul>
<blockquote>
<p>🍌자식요소에서 상속되지 않음</p>
</blockquote>
<blockquote>
<p><strong>🍌마진 상쇄</strong>
<strong>-블록요소들의 위/아래의 margin이 겹칠 경우에 상쇄되는 현상</strong></p>
</blockquote>
<ul>
<li>마진상쇄가 발생하면 더 큰 값이 적용됨</li>
<li>좌/우에는 발생하지 않음</li>
<li>단 겹치는걸 끊어줄 수 있는 1px이라도 있으면 마진 상쇄는 발생하지 않음
📌 인접형제 : 두 형제 요소의 위/아래 여백이 만날 때 상쇄
📌 부모-자식요소 간 : 부모와 자식을 분리해줄 수 있는 값이 없을 경우
📌 자기 자신의 margin 좌/우와 상쇄 : height이 존재하지 않을 때</li>
</ul>
<blockquote>
<p>🍌px, em, rem, % 단위 사용 가능 / 음수값 사용가능
**  <em>단, %는 부모의 width(가로)의 %를 따라감*</em></p>
</blockquote>
<blockquote>
<p>🍌margin : 10px; (상하좌우 모두 <strong>바깥쪽으로</strong> 10px 간격 생김)
🍌margin : 20px; (상하) 10px(좌우)
🍌margin : 20px; (상) 10px(우) 15px(하) 5px(좌) -&gt; 시계방향</p>
</blockquote>
<h1 id="✅-paddding">✅ paddding</h1>
<blockquote>
<p>🍌initail value </p>
</blockquote>
<ul>
<li>padding-bottom : 0</li>
<li>padding-left : 0</li>
<li>padding-right : 0</li>
<li>padding-top : 0</li>
</ul>
<blockquote>
<p>🍌padding : 10px; (상하좌우 모두 <strong>안쪽으로</strong> 10px 간격 생김)
🍌padding : 20px; (상하) 10px(좌우)
🍌padding : 20px; (상) 10px(우) 15px(하) 5px(좌) -&gt; 시계방향</p>
</blockquote>
<blockquote>
<p>🍌상쇄 일어나지 <strong>않음</strong></p>
</blockquote>
<blockquote>
<p>🍌px, em, rem, % 단위 사용 가능 / 음수값 사용 불가능
**  <em>단, %는 부모의 width(가로)의 %를 따라감*</em></p>
</blockquote>
<h1 id="✅-border">✅ border</h1>
<blockquote>
<p>🍌외부 영역과 내부영역 사이의 테두리</p>
</blockquote>
<blockquote>
<p>🍌border-style</p>
</blockquote>
<ul>
<li>none(defalut)</li>
<li>solid : 직선</li>
<li>상하좌우 모두 다른 선으로 지정할 수 있음 (시계방향)</li>
<li>스타일을 지정하지 않으면 두께와 색깔이 있어도 보이지 않음</li>
</ul>
<blockquote>
<p>🍌border-width : 테두리 두께</p>
</blockquote>
<ul>
<li>thin/medium/thick 키워드 있음</li>
<li>키워드보단 px로 주는게 좋음</li>
</ul>
<blockquote>
<p>🍌border-color : 테두리 색상</p>
</blockquote>
<ul>
<li>상하좌우 모두 다른색상으로 지정할 수 있음 (시계방향)</li>
<li>색깔이 없으면 border에 두께와 스타일을 줘도 보이지 않음</li>
</ul>
<blockquote>
<p><strong>🍌border : 1px solid red; 보통 이렇게 선언</strong></p>
</blockquote>
<blockquote>
<p>🍌outline : 요소를 강조하기 위한 것으로, border 처럼 디자인적으로 꾸밈을 주는거와는 다름</p>
</blockquote>
<blockquote>
<p>🍌border-radius : 테두리 <strong>곡선</strong>을 줄 수 있음</p>
</blockquote>
<ul>
<li>상하좌우 다르게 줄 수 있음</li>
<li>음수 값 불가능</li>
<li>%단위 사용가능<pre><code>div{
width : 300px;
height : 300px;
border : 5px solid red;
border-radius : 30px
}</code></pre><img src="https://images.velog.io/images/dasol-jeong/post/0b3f0840-2453-4fd4-a542-7470437d2b94/fffffffffsdfs.PNG" alt=""></li>
</ul>
<h1 id="✅-box-sizing">✅ box-sizing</h1>
<blockquote>
<p>🍌요소의 width와 height 계산하는 방법을 지정</p>
</blockquote>
<blockquote>
<p>🍌box-sizing 값</p>
</blockquote>
<ul>
<li>content-box(defalut) : width와 height이 의미하는 것이 content부분의 width와 height을 의미(padding과 border는 무시)</li>
<li>border-box : width와 height의 값을 border까지 인식하게됨</li>
</ul>
<blockquote>
<p>🍌이런식으로 선언하고 디자인주는 게 좋음</p>
</blockquote>
<pre><code>*{
  box-sizing: border-box;
}    </code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[프론트엔드스쿨 git - 9/30]]></title>
            <link>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-git-930</link>
            <guid>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-git-930</guid>
            <pubDate>Thu, 30 Sep 2021 12:47:42 GMT</pubDate>
            <description><![CDATA[<h1 id="💥git💥">💥git💥</h1>
<blockquote>
<p>▲ 형상관리도구(=버전 관리 시스템)
▲ git과 github은 같지 않음!
▲ 분산형 관리 시스템 : 소스코드를 여러 개발 PC와 저장소에 분산해서 저장
▲ 인터넷이 연결되지 않은 곳에서도 개발 가능
▲ Blob : 파일에 대한 변경 사항 전체
▲ Tree : Blob의 부가적인 정보들(디렉토리 위치, 속성, 이름)
▲ commit = Blob + Tree
<img src="https://images.velog.io/images/dasol-jeong/post/1400b2f0-c8a8-4aba-b4d4-22c19a00f508/fffffffsdf.PNG" alt=""></p>
</blockquote>
<h1 id="✅-bash-shall-명령어">✅ bash shall 명령어</h1>
<blockquote>
<p>▲ mkdir : 디렉토리 생성
▲ touch : 파일생성
▲ cp : 시스템내 특정 파일 복사
▲ mv : 파일이동
▲ cd :  디렉토리 이동
▲ cat : 파일의 내용 간단하게 출력
▲ ls : 현재 디렉토리 안에 파일들 보여줌 (-a옵션 : 숨김파일까지 보여줌)
▲ rm : 파일 삭제
▲ rmdir : 디렉토리 삭제</p>
</blockquote>
<h1 id="✅-vi-명령어">✅ vi 명령어</h1>
<h2 id="📌명령모드">📌명령모드</h2>
<blockquote>
<p>▲ i : 현재 커서 위치에 삽입
▲ a : 현재 커서 바로 다음위치에 삽입
▲ o : 현재 줄 다음 위치에 삽입
▲ dd(+p) : 커서가 위치한 곳의 한 줄 삭제(바로 p누르면 복구가능)
▲ p : 현재 커서가 있는 줄 바로 아래에 버퍼 붙여넣기
▲ k : 위
▲ j : 아래
▲ l : 오른쪽
▲ h : 왼쪽
▲ 0(숫자) : 커서가 있는 줄의 맨 앞으로 감
▲ $ : 커서가 있는 줄의 맨 뒤로 감
▲ G : 파일의 끝의로 이동</p>
</blockquote>
<h2 id="📌마지막-행-모드">📌마지막 행 모드(:)</h2>
<blockquote>
<p>▲ q : vi 저장하지 않고 종료
▲ q! : vi 저장하지 않고 강제종료
▲ wq : vi 저장하고 종료
▲ wq! : vi 저장하고 강제종료</p>
</blockquote>
<h1 id="✅-절대-사용하지-말아야할">✅ 절대 사용하지 말아야할!</h1>
<blockquote>
<p>▲ git add .
▲ git commit -m</p>
</blockquote>
<h1 id="✅-git-init">✅ git init</h1>
<blockquote>
<ol>
<li>저장소로 사용할 디렉토리를 만들기</li>
<li>git init 실행</li>
<li>파일을 생성</li>
<li>git add 파일명</li>
<li>git commit (영어로 제목은 40자가 넘어가지 않게, 내용쓰기)</li>
<li>깃헙사이트에서 레파지토리 만들고 주소복사</li>
<li>git remote add origin 주소</li>
<li>git branch -M main</li>
<li>git push -u origin main : 깃헙에 올리기</li>
</ol>
<p><strong>git status으로 상태 잘 확인하기</strong></p>
</blockquote>
<h1 id="✅-git-clone">✅ git clone</h1>
<blockquote>
<p>git init보다 좀 더 쉽게 저장소 만들고 사용하는(?)</p>
</blockquote>
<h1 id="✅-rm--rf-git">✅ rm -rf .git</h1>
<blockquote>
<p>▲ git 저장소 삭제</p>
</blockquote>
<h1 id="✅-branch">✅ branch</h1>
<blockquote>
<p>▲ 독립적으로 어떤 작업을 진행하기 위한 개념
▲ 협업할 때, 브랜치를 생성하여 각자 만들고 나중에 merge를 통해 하나로 통합할 수 있음
▲ git branch 브랜치이름 : 새로운 브랜치 생성
▲ git switch 브랜치이름 : 브랜치 이동
▲ main : root 브랜치</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[프론트엔드스쿨 css - 9/30]]></title>
            <link>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-css-930</link>
            <guid>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-css-930</guid>
            <pubDate>Thu, 30 Sep 2021 11:20:39 GMT</pubDate>
            <description><![CDATA[<h1 id="✅-fonttext">✅ font(text)</h1>
<blockquote>
<p>▲ font-size와 font-family는 필수값</p>
</blockquote>
<blockquote>
<p>▲ font 속성 default 선언법</p>
</blockquote>
<pre><code>.default{
  font-size:20px;
  font-family:&#39;Times New Roman&#39;, Times, serif;
}</code></pre><blockquote>
<p>▲ 이렇게도 선언 할 수 있음</p>
</blockquote>
<pre><code>.text{
  color:red;
  font: italic bold 20px/1.7 &#39;Times New Roman&#39;, Times, serif;
}</code></pre><p>이 방식으로 속성을 나열할 땐, 꼭</p>
<ol>
<li>font-style과 font-weight는 font-size보다 앞에 선언되어야하고,</li>
<li>사이즈 뒤에 / 하고 line-height를 작성해줘야 함.</li>
<li>그리고 맨 뒤에 font-family 작성</li>
</ol>
<blockquote>
<p>▲ font-color/color : 글씨 색깔</p>
</blockquote>
<blockquote>
<p>▲ font-size : 글씨 크기</p>
</blockquote>
<blockquote>
<p>▲ font-family : 글꼴 지정하는 속성</p>
</blockquote>
<blockquote>
<p>▲ line-height : 폰트의 위아래 여백</p>
</blockquote>
<blockquote>
<p>▲ letter-spacing : 문자와 문자 사이의 간격(한글로치면 한 글자와 글자 사이의 간격)/음수도 사용 가능</p>
</blockquote>
<blockquote>
<p>▲ word-spacing: 단어와 단어 사이의 간격/음수도 사용 가능</p>
</blockquote>
<blockquote>
<p>▲ text-align </p>
</blockquote>
<ul>
<li>텍스트의 위치를 지정</li>
<li>text-align : left, center, right 값이 있음</li>
<li>블록요소에 스타일 가능</li>
<li>인라인요소같은 경우 그 요소를 감싸고있는 부모에 text-align을 주면 스타일 적용됨</li>
</ul>
<blockquote>
<p>▲ text-indent : 글 앞부분 들여쓰기 속성(px, %로 값 줌)/블록요소에만 스타일 가능</p>
</blockquote>
<blockquote>
<p>▲ text-decoration : line, style, </p>
</blockquote>
<blockquote>
<p>▲ word-break </p>
</blockquote>
<ul>
<li>텍스트가 자신의 콘텐츠 박스 밖으로 오버플로 할 때 줄을 바꿀지 정함</li>
<li>word-break : normal(기본값), break-all, keep-all 속성이 있음</li>
<li>break-all은 주로 영어에서 사용</li>
<li>keep-all은 한중일 텍스트에서 사용</li>
</ul>
<blockquote>
<p>▲ text-transform</p>
</blockquote>
<ul>
<li>한글에는 적용할 수 없는 속성</li>
<li>실제 텍스트가 변하는건 아니고 스타일만 바뀌는 것</li>
</ul>
<h1 id="✅-절대길이">✅ 절대길이</h1>
<blockquote>
<p>▲ 모니터에 보여지는 그 크기로 보여줌(고정값)
▲ <strong>픽셀(px)</strong> 사용!! -&gt; css에서는 모든게 px로 계산됨</p>
</blockquote>
<h1 id="✅-상대길이">✅ 상대길이</h1>
<h2 id="📌-글꼴-상대길이">📌 글꼴 상대길이</h2>
<blockquote>
<p>▲ em, rem : 주로 font-size에서 사용
▲ <strong>1em</strong> : <strong>부모의 font-size</strong>(0.5em은 부모 font-size의 절반)
▲ 1rem : root의 font-size(root == 브라우저 기본 설정값)</p>
</blockquote>
<h2 id="📌-뷰포트-백분율-길이">📌 뷰포트 백분율 길이</h2>
<blockquote>
<p>▲ vh : 뷰포트의 초기 컨테이너 블록 높이 1%와 같음</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[프론트엔드스쿨 css - 9/29]]></title>
            <link>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-css-929</link>
            <guid>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-css-929</guid>
            <pubDate>Wed, 29 Sep 2021 08:39:50 GMT</pubDate>
            <description><![CDATA[<h1 id="✨mdn-사이트-많이-활용하기✨">✨MDN 사이트 많이 활용하기✨</h1>
<h1 id="✅-csscascading-style-sheets">✅ CSS(Cascading Style Sheets)</h1>
<blockquote>
<p>▲ Rule-based의 언어
▲ css는 module별로 각자의 versioning을 하고 있음
▲ cascading = 위에서 아래로 -&gt; 위에서 정의된 요소들이 아래에도 전파가된다
▲ 자식은 부모의 요소를 물려받음
▲ 규칙 : 요소(selector)를 선택하고 중괄호{} 안에 스타일 선언
<img src="https://images.velog.io/images/dasol-jeong/post/92a901b6-6799-4397-94ad-2a23a292c3d5/KakaoTalk_20210929_172612026.jpg" alt=""> 이렇게 선언한다.</p>
</blockquote>
<blockquote>
<p>▲ 개발은 <strong>css 외부 스타일로 하기</strong> -&gt; <strong>css와 html파일 따로 만들어 html의 <code>&lt;head&gt;</code> 안에 <code>&lt;link&gt;</code> 를 이용하여 html파일과 csss파일 연결하기</strong></p>
</blockquote>
<pre><code>&lt;!DOCTYPE html&gt;  
&lt;html&gt;  
  &lt;head&gt;
      &lt;link rel=&quot;stylesheet&quot; href=&quot;style/main.css&quot;/&gt;
  &lt;/head&gt;
  &lt;body&gt;
  &lt;/body&gt;
&lt;html&gt;  </code></pre><blockquote>
<p><strong>&lt;스타일 우선순위&gt;</strong>
  💫동일한 스타일이라도 선언된 곳에 따라 우선순위가 정해진다.
  브라우저에 의해 정의된 스타일 &lt; 개발자가 선언한 스타일 &lt; <strong>사용자가 구성한 스타일</strong>
  💫적용 범위가 적을수록 우선시 된다.
  tag스타일 &lt; class스타일 &lt; id스타일 &lt; <strong>인라인스타일</strong>
  <strong>*소스코드의 순서가 뒤에 있으면 덮어쓴다.</strong></p>
</blockquote>
<blockquote>
<p><strong>&lt;스타일 상속&gt;</strong>
  💫부모 요소에 있는 스타일 속성들이 자식 요소로 전달된다.
    -자식 요소에서 재정의 할 경우, 부모의 스타일을 덮어쓴다.
  💫상속 되지 않는 속성도 있다.(예:배경이미지, 배경색 등)</p>
</blockquote>
<h1 id="✅-css에서의-주석">✅ css에서의 주석</h1>
<pre><code>h1{
 color:red;
 /* font-size:9px; */
} </code></pre><blockquote>
<p>▲ <code>/* 스타일 */</code> 로 주석을 처리함
▲ 설명뿐만아니라 임시적으로 스타일 적용시키지 않으려고도 사용함</p>
</blockquote>
<h1 id="✅-선택자type-selector">✅ (선택자)Type Selector</h1>
<blockquote>
<p>▲ 하나의 전체 웹페이지에서 어떤 요소를 일관성있게 스타일을 적용시켜야할 때 사용 
▲ 보통 style 상단에 위치
▲ Type Selector로는 특정 요소를 선택하면 안돼</p>
</blockquote>
<pre><code>h1{
  color:red;
}  </code></pre><h1 id="✅-선택자id-selector">✅ (선택자)ID Selector</h1>
<blockquote>
<p>▲ 전역속성으로 모든 요소에 사용가능
▲ <strong>고유이름/유일/유니크</strong>
▲ 문법 : # + id{}</p>
<pre><code>#hello{
  color:red;
}  </code></pre></blockquote>
<pre><code>
# ✅ (선택자)Class Selector 
&gt; ▲ 전역속성으로 모든 요소에 사용가능
&gt; ▲ **중복가능**
&gt; ▲ 한 요소는 class를 여러개 가질 수 있음(스페이스로 구분)
&gt; ▲ 문법 : . + class{}</code></pre><p>.hi{
  color:red;
}  </p>
<pre><code>
# ✅ (속성 선택자)Attribute Selector
&gt; ▲ attribute란 태그외에 추가적인 요소 부분

&gt; ▲ **[attr]** : 요소가 가지고 있는 속성을 선택</code></pre><pre><code>a[target]{
    color:red;
}</code></pre><pre><code>
&gt; ▲ **[attr=&quot;value&quot;]** : 그 속성이 특정값을 가지고 있는 것을 선택</code></pre><pre><code>input[type=&quot;submit&quot;]{
    color:red;
}</code></pre><pre><code>
&gt; ▲ **[attr^=&quot;value&quot;]** : 캐럿(^)문자가 있으면 attr의 value가 value로 시작하는 요소를 선택</code></pre><pre><code>a[href^=&quot;http&quot;]{
    color:red;
}</code></pre><pre><code>
&gt; ▲ **[attr$=&quot;value&quot;]**  : 달러($)문자가 있으면 attr의 value가 value로 끝나는 요소를 선택</code></pre><pre><code>a[href$=&quot;.com&quot;]{
    color:red;
}</code></pre><pre><code>
&gt; ▲ **[attr*=&quot;value&quot;]**  : 애스터리스크(*)문자가 있으면 attr의 value가 value를 가지고 있는 요소들 다 선택</code></pre><pre><code>a[href*=&quot;btn&quot;]{
    color:red;
}</code></pre><pre><code>
# ✅ (가상 클래스 선택자)Pseudo-Class Selector  

&gt; ▲ 클래스 선택자보다 범위를 좁히는 방법(자식, 순번 등으로)


&gt; ▲ **:first-child** : 같은 요소 중 첫번째 요소를 선택</code></pre><pre><code>li:first-child{
    color:red;
      }
.movie:first-child{
    color:blue;
     }</code></pre><pre><code>  **class를 가지고 first-child를 선택할 때, class로 고른것 중 첫번째가 아니라 class로 선택된 그 집단의 부모의 자식들 중 첫번째 자식이다. 그래서 class로 고를땐 그 스타일이 다 적용되는 것은 아니다. last-child도 마찬가지임**

&gt; ▲ **:last-child** : 같은 요소 중 마지막 요소를 선택</code></pre><pre><code>li:last-child{
    color:red;
      }
.movie:last-child{
    color:blue;
      }</code></pre><pre><code>
&gt; ▲ **:nth-child()** : 몇번째 요소를 직접 선택할 수 있는 지정 선택</code></pre><pre><code>li:nth-child(3){ 
    /*세번째 자식들 선택됨*/
    color:red;
      }</code></pre><pre><code>  odd(홀수), even(짝수)도 사용 가능


&gt; ▲ **:first-of-type** : 특정 타입들만 모아서 세고, 그 중에서 첫번째 요소 선택 -&gt; :first-child의 보완


&gt; ▲ **:last-of-type** : 특정 타입들만 모아서 세고, 그 중에서 마지막 요소 선택 -&gt; :last-child의 보완



&gt; ▲ **:not(selector)** : 선택된 요소들 중 ()안에 들어있는 요소들 빼고 선택 </code></pre><pre><code>input:not(.pw){ 
    /*input들 중 class명이 pw인 요소를 뺀 나머지들만 스타일 적용됨*/
    color:red;
}
  input:not([type=password]){ 
    /*input들 중 type이 password인 요소를 뺀 나머지들만 스타일 적용됨*/
    color:red;
} </code></pre><pre><code>
&gt; ▲ **:link** : 그 링크에 방문한 적이 없으면 스타일이 적용됨</code></pre><pre><code>a:link{ 
    color:red;
}</code></pre><pre><code>
&gt; ▲ **:visited** : 그 링크에 방문한 적이 있으면 스타일이 적용됨</code></pre><pre><code>a:visited{ 
    color:red;
}</code></pre><pre><code>

&gt; ▲ **:hover** : 그 요소에 마우스를 올리면 스타일이 적용됨</code></pre><pre><code>input[type=button]:hover{ 
    color:red;
}</code></pre><pre><code>
&gt; ▲ **:active** : 그 요소에 마우스로 클릭하고 있을때 스타일이 적용됨
&gt; ▲ :link, :hover, :visited가 active보다 뒤에 선언되면 active는 적용되지 않음. active는 **link-visited-hover-active순서로 배치하는 것이 좋음**</code></pre><pre><code>input[type=button]:active{ 
    color:red;
}</code></pre><pre><code>
&gt; ▲ **:focus** : 그 요소에 Tab키를 사용하여 focus가 되었을 때, input태그를 눌러 입력할 때 스타일이 적용됨</code></pre><pre><code>input[type=button]:focus{ 
    color:red;
}</code></pre><pre><code>
&gt; ▲ **:enabled** : 활성화 되어있는 요소에만 스타일 적용됨 </code></pre><pre><code>input[type=text]:enabled{ 
    color:red;
}</code></pre><pre><code>
&gt; ▲ **:disabled **: 비활성화 되어있는 요소에만 스타일 적용됨  </code></pre><pre><code>input[type=text]:disabled{ 
    color:red;
}</code></pre><pre><code>
&gt; ▲ **:checked** : checked 되어있는 요소에만 스타일 적용됨  </code></pre><pre><code>input[type=radio]:checked{ 
    color:red;
}
  input[type=checkbox]:checked{ 
    color:red;
}</code></pre><pre><code>

# ✅ (가상 요소 선택자)Pseudo-Element Selector 
&gt; ▲ css3 문법에 맞춰 :: 사용하기


&gt; ▲ **::before** : html엔 존재하지 않지만, css가 가상으로 만들어낸 요소 앞에 스타일이 적용됨(**배지나 메뉴사이에 구분하기 위해 사용/내용이 있는것 보단 꾸밈의 목적을 위해 사용**)  </code></pre><pre><code>.favorite::before{ 
    content:&#39;🎨&#39;;
}</code></pre><pre><code>
&gt; ▲ **::after** : html엔 존재하지 않지만, css가 가상으로 만들어낸 요소 뒤에 스타일이 적용됨  </code></pre><pre><code>.favorite::after{ 
    content:&#39;🎨&#39;;
}</code></pre><pre><code>
&gt; ▲ **::first-letter** : 선택된 요소에서 첫번째 글자에 스타일 적용됨  </code></pre><pre><code>.hi::first-letter{ 
    color:red;
}</code></pre><pre><code>
&gt; ▲ **::first-line** : 선택된 요소에서 첫번째 줄에 스타일이 적용됨(단, 브라우저 사이즈에 맞게 개행이 된 첫번째 줄에만 스타일이 적용됨)  </code></pre><pre><code>.hi::first-line{ 
    color:red;
}</code></pre><pre><code>
&gt; ▲ **::selection** : 선택된 요소들 중 드래그 된 부분에만 스타일이 적용됨  </code></pre><pre><code>.hi::selection{ 
    color:red;
}</code></pre><pre><code>

# ✅ selector combination(선택자 결합)

&gt; ▲ **하위 선택자 결합( ) **: 두가지 선택자를 스페이싱으로 결합하여 선택된 요소들에 스타일이 적용됨  </code></pre><pre><code>ul li:last-of-type{ 
    color:red;
}</code></pre><pre><code>
&gt; ▲ **자식 선택자 결합(&gt;) :** 앞에 선택자의 바로 직속 자식들 중 조건에 만족하는 요소에 스타일이 적용됨. &quot;&gt;&quot;로 앞 선택자의 바로 직속 자식을 의미  </code></pre><pre><code>ul &gt; li:last-of-type{ 
    color:red;
}</code></pre><pre><code>
&gt; ▲ **일반 형제 선택자 결합(~)** : ```code```의 형제들 중 ```code```보다 뒤에 선언된 ```p```에만 스타일이 적용됨  </code></pre><pre><code>code ~ p{ 
    color:red;
}</code></pre><pre><code>
&gt; ▲ **인접 형제 선택자 결합(+)** : ```code```바로 뒤에 ```p```가 있으면 그 요소들에만 스타일이 적용됨(바로 옆에 있어야해)  </code></pre><pre><code>code + p{ 
    color:red;
}</code></pre><pre><code>
&gt; ▲ **그룹화** : 두가지 이상의 요소에 같은 스타일 적용시킬 떄 사용  </code></pre><pre><code>p, span, code{ 
    color:red;
}</code></pre><pre><code>

# ✅ Universal Selector(전체 선택자)
&gt; ▲ *를 사용하여 html의 모든 요소를 선택(*은 모든 요소를 의미)
&gt; ▲ css파일 맨 윗부분에 선언  </code></pre><pre><code>*{ 
    color:red;
}</code></pre><pre><code>
# ✅ 상속 제어 
&gt; ▲ **initial** : 상속 끊기  </code></pre><pre><code>.child{ 
    color:initial; /*속성의 기본값으로 돌려짐*/
}</code></pre><pre><code>
&gt; ▲ **inherit** : 무조건 상속받기  </code></pre><pre><code>.parent *{ 
    color:inherit; /*주변의 어떤 css값도 다 무시하고 부모의 css를 따르겠다*/
}</code></pre><p>  ```</p>
<blockquote>
<p>▲ <strong>unset</strong> : <strong>부모로부터 상속받을 값이 있을땐 inherit</strong>,<strong>부모로부터 상속받을 값이 없을 땐 initial</strong>   </p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[프론트엔드스쿨 html - 9/29]]></title>
            <link>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-htmlcss-929</link>
            <guid>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-htmlcss-929</guid>
            <pubDate>Wed, 29 Sep 2021 02:21:53 GMT</pubDate>
            <description><![CDATA[<h1 id="✅-metadata">✅ metadata</h1>
<p><code>&lt;meta charset=&quot;UTF-8&quot;</code></p>
<blockquote>
<p>유니코드로 컴퓨터에서 전세계 언어를 표현할 수 있음</p>
</blockquote>
<h1 id="✅-link-태그">✅ link 태그</h1>
<blockquote>
<p>▲ <code>&lt;link&gt;</code>태그는 현재 문서와 외부 리소스의 관계 명시
▲ 주로 css파일,파비콘 연결할 때 사용
▲ 빈요소(싱글태그)</p>
</blockquote>
<pre><code>&lt;link href=&quot;style/main.css&quot; rel=&quot;stylesheet&quot;&gt;
&lt;link rel=&quot;icon&quot; href=&quot;favicon.ico&quot;&gt;</code></pre><h1 id="✅-mime-type">✅ MIME type</h1>
<blockquote>
<p>▲ 파일경로를 해석하지 못하는 경우를 위해 파일의 타입을 명시해주는 것
▲ 일반적인 구조 type/subtype
▲ type에는 텍스트나 이미지와 같은 카테고리를 나타내며, subtype은 파일의 확장자</p>
</blockquote>
<h1 id="✅-style-태그">✅ style 태그</h1>
<blockquote>
<p>▲ <code>&lt;head&gt;</code>안에 작성하는 것보단 외부 스타일 시트에 작성하고 <code>&lt;link&gt;</code>로 연결하는 것이 좋음
▲ 같은 명시도를 가진 경우, 뒤쪽이 앞쪽을 덮어씀</p>
</blockquote>
<h1 id="✅-script-태그">✅ script 태그</h1>
<blockquote>
<p>▲ 주로 javascript 연결할 때 사용
▲ <code>&lt;script&gt;</code>태그는 <code>&lt;body&gt;</code>태그 안에서 가장 마지막에 사용하는 것이 좋음 -&gt; 페이지 로딩 관련하여</p>
</blockquote>
<h1 id="✅-상속">✅ 상속</h1>
<blockquote>
<p>▲ 상속을 받으면 부모의 속성을 자식이 그대로 물려받음
▲ 만약 부모와 자식에게 같은 속성이 있다면, 자식은 본인의 속성을 사용</p>
</blockquote>
<h1 id="✅-전역속성-id유일한-고유식별자-">✅ 전역속성 id*<em>(유일한 고유식별자) *</em></h1>
<blockquote>
<p>▲ <strong>모든 태그에서 사용 가능</strong>
▲ <strong>고유식별자로</strong>, 문서 전체에서 id는 하나의 요소에 하나의 이름으로만 사용해야해. id의 이름이 겹칠 수 없음.
▲ id에는 <strong>공백이 들어가면 안됨</strong>
▲ 시작은 무조건 영소문자로 시작/중간에 구분할게 있다면 
  <code>&lt;div id=&quot;hello-hi&quot;&gt;&lt;/div&gt;</code> &quot;-&quot;또는 &quot;_&quot;를 사용하여 구분하기</p>
</blockquote>
<h1 id="✅-전역속성-class접근자">✅ 전역속성 class(접근자)</h1>
<blockquote>
<p>▲ class는 문서 전체에서 중복하여 사용 가능함</p>
</blockquote>
<pre><code>&lt;div class=&quot;hi&quot;&gt;A&lt;/div&gt;
&lt;div class=&quot;bye&quot;&gt;B&lt;/div&gt;
&lt;div class=&quot;hi&quot;&gt;C&lt;/div&gt;</code></pre><p>이런식으로 사용 가능함</p>
<blockquote>
<p>▲ 하나의 요소에 여러개의 class사용 가능(단, 공백으로 구분짓기)
  <code>&lt;div class=&quot;hello hi&quot;&gt;&lt;/div&gt;</code>
  div에 <strong>hello</strong>와 <strong>hi</strong>라는 <strong>2개의 접근자</strong>가 있는 것</p>
</blockquote>
<h1 id="✅-전역속성-style">✅ 전역속성 style</h1>
<blockquote>
<p>▲ 테스트를 위해서만 작성하고, 외부 스타일시트에다가 css 작성하기  </p>
</blockquote>
<h1 id="✅-전역속성-lang">✅ 전역속성 lang</h1>
<blockquote>
<p>▲ 언어속성으로 문서가 어떤 언어로 작성되었는지를 표현
▲ 웹 접근성을 위해 사용
▲ 문서 맨 윗부분에 <code>&lt;html lang=&quot;ko&quot;&gt;&lt;/html&gt;</code>으로 사용될 뿐만아니라 일부 태그안에서도 사용가능</p>
</blockquote>
<h1 id="✅-전역속성-data--속성">✅ 전역속성 data- 속성</h1>
<blockquote>
<p>▲ html에 있는 속성이 아닌, 개발자가 임의대로 만든 속성 
▲ 화면에 안 보이게 글이나 추가 정보를 엘리멘트에 담아 놓을 수 있음 </p>
</blockquote>
<h1 id="✅-전역속성-draggable">✅ 전역속성 draggable</h1>
<blockquote>
<p>▲ 요소가 드래그가 가능한지 안한지를 보는 속성(실제로 움직이는건 아니고, 시각적으로만)
▲ 값을 꼭 명시해줘야 함(요소마다 defalt값 다름)
  <code>&lt;img src=&quot;images/small.png&quot; draggable=&quot;true&quot;&gt;</code> or
  <code>&lt;img src=&quot;images/small.png&quot; draggable=&quot;false&quot;&gt;</code>
  이렇게 값은 <strong>true</strong>와 <strong>false</strong>로 주면 됨
▲ javascript에서 이벤트에 따라 다르게 적용시키기 위해 사용 </p>
</blockquote>
<h1 id="✅-전역속성-hidden">✅ 전역속성 hidden</h1>
<blockquote>
<p>▲ 요소를 브라우저에서 <strong>시각적으로 숨기는 효과</strong> -&gt; 그래서 <strong>보안상으로 정보를 보호해야할 땐 사용하면 안돼</strong>❌
▲ boolean속성(작성하면 true, 작성하지 않은 기본값 false)</p>
</blockquote>
<pre><code>  &lt;img src=&quot;images/small.png&quot;&gt;
  &lt;img src=&quot;images/small.png&quot; hidden&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/89920e7a-5f05-4671-a101-3fe49cea5fa9/fffffffffff.PNG" alt=""></p>
<blockquote>
<p>▲ 만약 그 요소의 css에 display:flex가 있다면 hidden이 있어도 화면에 보이게 됨</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[프론트엔드스쿨 html - 9/28]]></title>
            <link>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-html-928</link>
            <guid>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-html-928</guid>
            <pubDate>Tue, 28 Sep 2021 07:51:03 GMT</pubDate>
            <description><![CDATA[<h1 id="✅-h1h6-태그">✅ h1~h6 태그</h1>
<blockquote>
<p>▲ 제목을 나타내는 태그
▲ 글씨 크기를 위해 h태그 사용하지 말기
▲ 페이지당 h1태그는 하나만 사용하는 것이 좋다 -&gt; 목차</p>
</blockquote>
<h1 id="✅-br-줄바꿈-태그">✅ br 줄바꿈 태그</h1>
<blockquote>
<p><code>&lt;pre&gt;</code>태그 내에서는 말고는 개행이 불가능하다. <code>&lt;br&gt;</code>태그를 사용하여 줄바꿈 할 수 있다. </p>
</blockquote>
<pre><code>&lt;p&gt;
      hello&lt;br/&gt;
      world&lt;br/&gt;
      2021&lt;br/&gt;
      09&lt;br/&gt;
      27&lt;br/&gt;
      monday.
&lt;/p&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/3a062f8b-7863-432e-a4ff-225a3d284438/zzczx.PNG" alt=""></p>
<h1 id="✅-hr-태그">✅ hr 태그</h1>
<blockquote>
<p>수평선(가로줄)태그/빈 요소</p>
</blockquote>
<pre><code>&lt;h1&gt;hr태그 - 수평선(가로줄)/빈요소&lt;/h1&gt;
&lt;hr/&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/007c1635-57d5-4eb9-ac00-a66a36b7a041/fsdfefewfefewfwe.PNG" alt=""></p>
<h1 id="✅-pre-태그">✅ pre 태그</h1>
<blockquote>
<p>▲ <code>&lt;pre&gt;&lt;/pre&gt;</code>안에서는 공백이 적용됨
▲ 블록요소</p>
</blockquote>
<pre><code>&lt;pre&gt;
      / ^__^
      /(00)
&lt;/pre&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/6bcfbff6-f45b-42b3-a7b7-09c3d706e348/gfgdffgdf.PNG" alt=""></p>
<h1 id="✅-entity---html에서-특수문자를-표현하기-위한">✅ Entity - html에서 특수문자를 표현하기 위한</h1>
<pre><code>&lt;pre&gt;
      &amp;lt; = &lt;
      &amp;gt; = &gt;  
      &amp;quot; = &quot;
      &amp;apos; = &#39;
      &amp;amp; = &amp;
      &amp;nbsp; = (스페이싱) 
&lt;/pre&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/252149e8-9730-4e3d-8323-0e40058ddc4c/DFGDGDFGD.PNG" alt=""></p>
<blockquote>
<p>html에서 &lt;, &gt;, &quot;, &#39;, &amp;, 빈 문자(스페이스) 같은 특수문자를 그대로 쓰면 브라우저에 나타나지 않는다. HTML에서 준수하는 위와 같은 규칙으로 특수문자를 나타낼 수 있다.</p>
</blockquote>
<h1 id="✅-bstrong---굵은-글씨-효과">✅ b/strong - 굵은 글씨 효과</h1>
<blockquote>
<p>▲ <code>&lt;b&gt;</code> : 요악의 키워드, 리뷰의 제품명
▲ <code>&lt;strong&gt;</code>: 높은 중요도, 긴급상황</p>
</blockquote>
<h1 id="✅-iem---기울임-글씨-효과">✅ i/em - 기울임 글씨 효과</h1>
<blockquote>
<p>▲ <code>&lt;i&gt;</code> : 구분해야하는 부분(앞뒤가 톤이 다르게 읽혀야하는 부분에 사용,등장인물)
▲ <code>&lt;em&gt;</code>: 강조해야하는 부분(단지 강조)</p>
</blockquote>
<h1 id="✅-div-태그">✅ div 태그</h1>
<blockquote>
<p>▲ 순수컨테이너로 아무것도 표현하지 않음(블록요소)
▲ 전역속성
▲ 의미가 있을때 사용하면 안돼, 의미가 없을때에만 사용</p>
</blockquote>
<pre><code>&lt;h1&gt;div태그 : container -&gt; 순수컨테이너로 아무것도 표현하지 않음/블록&lt;/h1&gt;
    &lt;!-- 전역속성 --&gt;
    &lt;!-- 의미가 있을때 사용하면 안돼, 의미가 없을때에만 사용 --&gt;
    &lt;span style=&quot;border: 1px solid black&quot;&gt;Lorem ipsum&lt;/span&gt;
    &lt;span style=&quot;border: 1px solid black&quot;&gt;Lorem ipsum&lt;/span&gt;
    &lt;div style=&quot;border: 1px solid black&quot;&gt;Lorem ipsum&lt;/div&gt;
    &lt;span style=&quot;border: 1px solid black&quot;&gt;Lorem ipsum&lt;/span&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/6f302814-8d5f-4876-81f2-60d8270dd6ce/hfhfggf.PNG" alt=""></p>
<h1 id="✅-span-태그">✅ span 태그</h1>
<blockquote>
<p>▲ 순수컨테이너로 아무것도 표현하지 않음(인라인요소)</p>
</blockquote>
<pre><code>&lt;h1&gt;span태그 : container -&gt; 순수컨테이너로 인라인 요소&lt;/h1&gt;
    &lt;span style=&quot;border: 1px solid black&quot;&gt;Lorem ipsum&lt;/span&gt;
    &lt;span style=&quot;border: 1px solid black&quot;&gt;Lorem ipsum&lt;/span&gt;
    &lt;span style=&quot;border: 1px solid black&quot;&gt;Lorem ipsum&lt;/span&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/1c18dbe2-e57e-42de-8993-82e7d95c26c8/hfgfhghfg.PNG" alt=""></p>
<h1 id="✅-a-태그">✅ a 태그</h1>
<blockquote>
<p>▲ 하이퍼링크
▲ <code>&lt;a&gt;</code>안에는 텍스트뿐만 아니라, 문단/이미지도 넣을 수 있음
▲ 경로에는 절대/상대경로가 있음</p>
</blockquote>
<h1 id="✅-절대경로와-상대경로">✅ 절대경로와 상대경로</h1>
<blockquote>
<p>▲ [절대경로] : 현재 위치와 상관 없음, 그 절대값 위치로 이동</p>
</blockquote>
<pre><code>&lt;a href=&quot;https://developer.mozilla.org/ko/&quot;&gt;Mozilla&lt;/a&gt;</code></pre><blockquote>
<p>▲ [상대경로] : 현재 위치를 기준으로</p>
</blockquote>
<pre><code>&lt;a href=&quot;another/index.html&quot;&gt;상대경로&lt;/a&gt;</code></pre><h1 id="✅-시맨틱-웹">✅ 시맨틱 웹</h1>
<blockquote>
<p>▲ 의미가 있는 태그
▲ 요소의 의미를 고려하여 구조를 설계하고 코드 작성
▲ <code>&lt;header&gt;, &lt;nav&gt;, &lt;aside&gt;, &lt;main&gt;, &lt;section&gt;, &lt;footer&gt;</code>등이 있음
▲ header내에 또 다른 header, footer내에 또다른 footer 못 넣어</p>
</blockquote>
<h1 id="✅-ordered-listol">✅ Ordered List(ol)</h1>
<blockquote>
<p>▲ 순서가 있는 리스트
▲ type속성을 통해 숫자,문자 등으로 순서를 표기할 것을 선택할 수 있음</p>
</blockquote>
<pre><code>&lt;!-- ol에는 type 속성을 가지고 있음 --&gt;
&lt;!-- ol과 ul은 중첩해서 사용가능 --&gt;
&lt;h2&gt;ol : ordered list&lt;/h2&gt;
    &lt;ol type=&quot;A&quot;&gt;
      &lt;li&gt;1&lt;/li&gt;
      &lt;li&gt;2&lt;/li&gt;
      &lt;li&gt;3&lt;/li&gt;
    &lt;/ol&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/fd75e967-269e-4a2a-a92b-4d1dce26b92f/ol.PNG" alt=""></p>
<h1 id="✅-unorderd-listul">✅ Unorderd List(ul)</h1>
<blockquote>
<p>▲ 순서가 없는 리스트</p>
</blockquote>
<pre><code>&lt;h2&gt;ul : unordered list&lt;/h2&gt;
    &lt;ul&gt;
      &lt;li&gt;Milk&lt;/li&gt;
      &lt;li&gt;
        Cheese
        &lt;ul&gt;
          &lt;li&gt;Blue cheese&lt;/li&gt;
          &lt;li&gt;Feta&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/43bc0c31-1979-4584-a06e-de2b8a3e5a0b/ul.PNG" alt=""></p>
<h1 id="✅-list-itemli">✅ List Item(li)</h1>
<blockquote>
<p>▲ li는 <code>&lt;ol&gt;과 &lt;ul&gt;</code> 내에서 사용됨
▲ li는 <code>&lt;li&gt;</code> 에 value 속성을 사용하여 사용자 임의대로 순서를 바꿀 수 있음</p>
</blockquote>
<pre><code>&lt;h2&gt;li : list item&lt;/h2&gt;
    &lt;ol&gt;
      &lt;li&gt;AAA&lt;/li&gt;
      &lt;li value=&quot;5&quot;&gt;BBB&lt;/li&gt;
      &lt;li&gt;CCC&lt;/li&gt;
    &lt;/ol&gt;
    &lt;!-- li에는 value라는 속성을 가질 수 있어 --&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/549b2327-b90d-4d6e-880f-16d941c7d0a0/li.PNG" alt=""></p>
<h1 id="✅-table">✅ table</h1>
<blockquote>
<p>▲ 표를 작성하는 태그
▲ thead/tbody/tfoot을 사용하면 형제로 tr사용 못함
▲ thead안에 tr 선언하기
▲ <code>&lt;th&gt;</code> : 표의 제목
▲ <code>&lt;tr&gt;</code> : 표의 행
▲ <code>&lt;td&gt;</code> : 표의 셀</p>
</blockquote>
<pre><code>&lt;h1&gt;table태그&lt;/h1&gt;
    &lt;table&gt;
      &lt;tr&gt;
        &lt;th scope=&quot;col&quot;&gt;나라이름&lt;/th&gt;
        &lt;th scope=&quot;col&quot;&gt;수도&lt;/th&gt;
        &lt;th scope=&quot;col&quot;&gt;인구&lt;/th&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;th scope=&quot;row&quot;&gt;한국&lt;/th&gt;
        &lt;td&gt;서울&lt;/td&gt;
        &lt;td&gt;5100만&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;th scope=&quot;row&quot;&gt;미국&lt;/th&gt;
        &lt;td&gt;워싱턴&lt;/td&gt;
        &lt;td&gt;3억&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;th scope=&quot;row&quot;&gt;태국&lt;/th&gt;
        &lt;td&gt;방콕&lt;/td&gt;
        &lt;td&gt;6900만&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;th colspan=&quot;2&quot;&gt;합계&lt;/th&gt;
        &lt;td&gt;4억 2000만&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
    &lt;!-- colspan은 열을 합치는 것 --&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/68a3b5c9-cff0-42ce-b0e4-809e387993b5/table.PNG" alt=""></p>
<h1 id="✅-cation">✅ cation</h1>
<pre><code>&lt;h1&gt;cation태그 : table태그에서 사용하기 위한&lt;/h1&gt;
    &lt;!-- table태그 요소의 첫번째 자식으로 들어가야해. 즉 맨 앞에 써!--&gt;
    &lt;table&gt;
      &lt;caption&gt;
        이번달 지출내역
      &lt;/caption&gt;
      &lt;thead&gt;
        &lt;tr&gt;
          &lt;th scope=&quot;col&quot;&gt;품목&lt;/th&gt;
          &lt;th scope=&quot;col&quot;&gt;지출&lt;/th&gt;
        &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;th colspan=&quot;2&quot;&gt;식재료&lt;/th&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;th scope=&quot;row&quot;&gt;대파&lt;/th&gt;
          &lt;td&gt;3000&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;th scope=&quot;row&quot;&gt;달걀&lt;/th&gt;
          &lt;td&gt;4000&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;th colspan=&quot;2&quot;&gt;기타 품목&lt;/th&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;th scope=&quot;row&quot;&gt;고양이간식&lt;/th&gt;
          &lt;td&gt;3000&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;th scope=&quot;row&quot;&gt;종이봉투&lt;/th&gt;
          &lt;td&gt;4000&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
      &lt;tfoot&gt;
        &lt;tr&gt;
          &lt;th scope=&quot;row&quot;&gt;Totals&lt;/th&gt;
          &lt;td&gt;30000&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tfoot&gt;
    &lt;/table&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/d0133130-3b29-42ea-b720-941d2fc57b1e/fsdfsdfsdfsd.PNG" alt=""></p>
<h1 id="✅-image-포맷">✅ image 포맷</h1>
<blockquote>
<p>▲ [jpeg] : 정적 이미지
▲ [png] : 투명도 적용 가능, jpeg보다 화질 좋음
▲ [svg] :벡터 이미지, 주로 아이콘이나 다이어그램에 사용</p>
</blockquote>
<h1 id="✅-반응형-이미지">✅ 반응형 이미지</h1>
<blockquote>
<p>▲ srcset : 너비서술자(w),밀도서술자(x)</p>
</blockquote>
<blockquote>
<p>▲ sizes : min-width와 max-width를 통해
원래 이미지 사이즈에서 넘어가지 않게 함</p>
</blockquote>
<h1 id="✅-video">✅ video</h1>
<blockquote>
<p>[속성]
▲ controls : 재생버튼, 음량 버튼 패널 나타남
▲ autoplay : 자동재생/but 사운드있는 비디오는 멈춤
▲ muted : 음소거 속성
▲ poster : 비디오 썸네일
▲ width/height 가능</p>
</blockquote>
<h1 id="✅-iframe인라인-요소">✅ iframe(인라인 요소)</h1>
<blockquote>
<p>주로 웹페이지 내에 지도를 넣을 때 사용</p>
</blockquote>
<h1 id="✅-form">✅ Form</h1>
<pre><code>&lt;h1&gt;form : 사용자가 입력할 수 있는 장치를 만들어주는/대화형 컨트롤&lt;/h1&gt;
    &lt;form action=&quot;이 form을 보낼 주소&quot; method=&quot;GET/POST&quot;&gt;
      &lt;input type=&quot;text&quot; name=&quot;test&quot; /&gt;
      &lt;button type=&quot;submit&quot;&gt;제출&lt;/button&gt;
    &lt;/form&gt;
    &lt;!-- GET : 사용자가 입력한 데이터가 주소창에 보여짐, 주로 검색에 사용 -&gt; 보안관련된거에는 사용하면 안됨 --&gt;
    &lt;!-- POST : 데이터가 보이지 않음, 회원가입 로그인 등에 사용 --&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/669b23ce-8326-4315-8bea-3bf6eaa16005/gfdgdfgfdgdfg.PNG" alt=""></p>
<h1 id="✅-fieldset">✅ Fieldset</h1>
<pre><code>&lt;h1&gt;fieldset&lt;/h1&gt;
    &lt;form action=&quot;이 form을 보낼 주소&quot; method=&quot;GET&quot;&gt;
      &lt;fieldset&gt;
        &lt;legend&gt;예시1&lt;/legend&gt;
        &lt;div&gt;
          &lt;label for=&quot;foodname&quot;&gt;음식이름 :&lt;/label&gt;
          &lt;input type=&quot;text&quot; name=&quot;food&quot; id=&quot;foodname&quot; disabled /&gt;
        &lt;/div&gt;
      &lt;/fieldset&gt;
      &lt;!-- disabled붙이면 입력불가능 --&gt;
      &lt;!-- disabled는 아예 input창을 비활성화 시키는거, 입력도 전송도 안됨--&gt;
      &lt;!-- readonly는 읽기 전용, 입력만 안되고 전송은 됨 --&gt;

      &lt;!-- disabled는 fieldset 속성으로도 사용가능 그러면 그 fieldset에 있는 모든 입력창 입력불가능  --&gt;
      &lt;fieldset&gt;
        &lt;legend&gt;예시2&lt;/legend&gt;
        &lt;div&gt;
          &lt;label for=&quot;color&quot;&gt;색깔 :&lt;/label&gt;
          &lt;input
            type=&quot;text&quot;
            name=&quot;color&quot;
            id=&quot;color&quot;
            placeholder=&quot;초록&quot;
            autocomplete=&quot;off&quot;
            required
          /&gt;
        &lt;/div&gt;
      &lt;/fieldset&gt;
      &lt;button type=&quot;submit&quot;&gt;제출&lt;/button&gt;
    &lt;/form&gt;
    &lt;!-- legend는 fieldset내에 첫번째 자식으로 와야함 --&gt;
    &lt;!-- input type이 password라도 입력할땐 마스킹처리되지만, GET방식으로 넘기면 입력한 비밀번호 다 보임 --&gt;
    &lt;!-- placeholder는 힌트라고 생각하면 됨 예시 --&gt;
    &lt;!-- autocomplete는 자동완성기능임 on/off값으로 주면됨 --&gt;
    &lt;!-- required는 boolean값으로 필수로 입력해야하는 의미 --&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/96878e45-2079-4707-855f-54e928dbccec/dasdasdafv.PNG" alt=""></p>
<h1 id="✅-그-외-자주-사용하는-form요소">✅ 그 외 자주 사용하는 form요소</h1>
<pre><code> &lt;h1&gt;자주 사용하는 form 요소들&lt;/h1&gt;
    &lt;form action=&quot;&quot; method=&quot;GET&quot;&gt;
      &lt;div&gt;
        &lt;label
          &gt;TIME :
          &lt;input type=&quot;time&quot; name=&quot;time&quot; /&gt;
        &lt;/label&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;label
          &gt;MONTH :
          &lt;input type=&quot;month&quot; name=&quot;month&quot; /&gt;
        &lt;/label&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;label
          &gt;DATE :
          &lt;input type=&quot;date&quot; name=&quot;date&quot; /&gt;
        &lt;/label&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;label
          &gt;NUMBER :
          &lt;input type=&quot;number&quot; name=&quot;number&quot; /&gt;
        &lt;/label&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;label
          &gt;RANGE :
          &lt;input type=&quot;range&quot; name=&quot;range&quot; /&gt;
        &lt;/label&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;label
          &gt;CHECKBOX :
          &lt;input type=&quot;checkbox&quot; name=&quot;check1&quot; /&gt;
          &lt;input type=&quot;checkbox&quot; name=&quot;check2&quot; /&gt;
          &lt;input type=&quot;checkbox&quot; name=&quot;check3&quot; checked /&gt;
        &lt;/label&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;label
          &gt;RADIO :
          &lt;input type=&quot;radio&quot; name=&quot;radiobtn&quot; value=&quot;r1&quot; /&gt;
          &lt;input type=&quot;radio&quot; name=&quot;radiobtn&quot; value=&quot;r2&quot; /&gt;
          &lt;input type=&quot;radio&quot; name=&quot;radiobtn&quot; value=&quot;r3&quot; checked /&gt;
        &lt;/label&gt;
      &lt;/div&gt;
      &lt;!-- &lt;button type=&quot;submit&quot;&gt;제출&lt;/button&gt; --&gt;
      &lt;!-- 버튼 말고 input으로도 제출가능 --&gt;
      &lt;input type=&quot;submit&quot; value=&quot;제출하기&quot; /&gt;
      &lt;!-- 문구 바꾸고싶으면 value를 통해 바꾸기 --&gt;
      &lt;input type=&quot;reset&quot; /&gt;
    &lt;/form&gt;

    &lt;!-- input마다 name을 지정해줘야지만 어떤 데이터인지 구분이 가능하다 name은 중요함 --&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/09ecfdf5-1581-4d52-8d05-b0b7a411a908/qwewqwq.PNG" alt=""></p>
<h1 id="✅-select">✅ select</h1>
<blockquote>
<p>▲ drop-down menu
▲ <code>&lt;option&gt;</code> : 후보
▲ option에 selected속성 넣으면 defalt값이 됨
▲ option에 value값이 없으면 안에 내부 내용을 value값으로 사용하니, value값에 빈 문자열 넣고 사용하기
▲ 서버로 보낼 땐 name값과 선택되 value값이 같이 넘어감
▲ 서버로 보낼 땐 name값과 선택되 value값이 같이 넘어감</p>
</blockquote>
<pre><code> &lt;h1&gt;select&lt;/h1&gt;
    &lt;!-- select drop-down menu --&gt;
    &lt;form action=&quot;&quot; method=&quot;GET&quot;&gt;
      &lt;label for=&quot;movie&quot;&gt;좋아하는 영화: &lt;/label&gt;
      &lt;select name=&quot;movie&quot; id=&quot;movie&quot; required&gt;
        &lt;option value=&quot;&quot;&gt;--please choose--&lt;/option&gt;
        &lt;optgroup label=&quot;애니메이션&quot;&gt;
          &lt;option value=&quot;토이&quot;&gt;토이스토리&lt;/option&gt;
          &lt;option value=&quot;주토피아&quot; selected&gt;주토피아&lt;/option&gt;
          &lt;option value=&quot;인사이드아웃&quot;&gt;인사이드아웃&lt;/option&gt;
        &lt;/optgroup&gt;
        &lt;optgroup label=&quot;sf&quot;&gt;
          &lt;option&gt;인터스텔라&lt;/option&gt;
          &lt;option&gt;아이언맨&lt;/option&gt;
        &lt;/optgroup&gt;
      &lt;/select&gt;
      &lt;input type=&quot;submit&quot; /&gt;
    &lt;/form&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/debbad7e-d7b3-46cf-95e6-1a9a43ceb2b0/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7(3).png" alt=""></p>
<h1 id="✅-datalist">✅ datalist</h1>
<pre><code>&lt;h1&gt;datalist&lt;/h1&gt;
    &lt;form action=&quot;&quot; method=&quot;GET&quot;&gt;
      &lt;label for=&quot;movie&quot;&gt;좋아하는 영화: &lt;/label&gt;
      &lt;input type=&quot;text&quot; id=&quot;movie&quot; name=&quot;movie&quot; list=&quot;movie-list&quot; /&gt;

      &lt;datalist id=&quot;movie-list&quot;&gt;
        &lt;option&gt;토이스토리&lt;/option&gt;
        &lt;option&gt;주토피아&lt;/option&gt;
        &lt;option&gt;인사이드아웃&lt;/option&gt;
      &lt;/datalist&gt;

      &lt;input type=&quot;submit&quot; /&gt;
    &lt;/form&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/8f586777-7336-443c-985f-b53e697635f9/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7(4).png" alt=""></p>
<h1 id="✅-select와-datalist의-차이점">✅ select와 datalist의 차이점</h1>
<blockquote>
<p>▲ <code>&lt;select&gt;</code> : 수정 불가능
▲ <code>&lt;datalist&gt;</code> : 수정 가능하며, 키워드만 입력해도 그에 맞는 목록을 보여줌 -&gt; 추천목록</p>
</blockquote>
<h1 id="✅-textarea">✅ textarea</h1>
<blockquote>
<p>▲ <code>&lt;input&gt;</code> 은 한 줄만 입력받을 수 있지만, textarea는 여러줄을 입력받을 수 있음
▲ 빈 요소가 아닌 자식요소를 가질 수 있음
▲ cols와 rows 속성으로 크기를 조절할 수 있음</p>
</blockquote>
<pre><code>&lt;form action=&quot;&quot; method=&quot;GET&quot;&gt;
      &lt;label for=&quot;comment&quot;&gt;댓글 :&lt;/label&gt;
      &lt;textarea name=&quot;comment&quot; id=&quot;comment&quot; cols=&quot;30&quot; rows=&quot;10&quot;&gt; &lt;/textarea&gt;

      &lt;input type=&quot;submit&quot; /&gt;
    &lt;/form&gt;</code></pre><p><img src="https://images.velog.io/images/dasol-jeong/post/5ba9c124-18f3-4d68-bfee-6dcf67c33e15/fsdfsdfdsfdsfdsf.PNG" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프론트엔드스쿨 html - 9/27]]></title>
            <link>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-html-927</link>
            <guid>https://velog.io/@dasol-jeong/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-html-927</guid>
            <pubDate>Mon, 27 Sep 2021 08:10:54 GMT</pubDate>
            <description><![CDATA[<h1 id="html과-웹브라우저">HTML과 웹브라우저</h1>
<blockquote>
<p>▲ .html 파일을 구동시키는 것이 웹브라우저
▲ 웹브라우저에는 크롬, 엣지, 익스플로러, 사파리가 있음</p>
</blockquote>
<h1 id="html--hypertext-markup-language">HTML : HyperText Markup Language</h1>
<blockquote>
<p>웹브라우저가 이해할 수 있는 언어</p>
</blockquote>
<h1 id="htmlcssjavascript">HTML,CSS,JavaScript</h1>
<blockquote>
<p><strong>[구조] HTML</strong> :  웹 문서의 기본적인 골격을 담당</p>
</blockquote>
<blockquote>
<p><strong>[표현] CSS</strong> : 각 요소들의 레이아웃, 스타일링을 담당 -&gt;각 요소들의 identity를 강조</p>
</blockquote>
<blockquote>
<p><strong>[동작] JavaScript</strong> : 동적인 요소(사용자와의 인터렉션)을 담당</p>
</blockquote>
<h1 id="웹-표준웹-접근성웹-호환성">웹 표준/웹 접근성/웹 호환성</h1>
<blockquote>
<p><strong>[웹 표준]</strong> : 브라우저의 종류가 다양하기때문에 html 작성 규칙을 정한 것 -&gt; html5</p>
</blockquote>
<blockquote>
<p><strong>[웹 접근성]</strong> : 다양한 상황에서의 사용자들에게 문제 없이 브라우징을 제공하기 위한 것 -&gt; 스크린리더, 화면돋보기, 음성인식, 키보드 오버레이 
*웹 접근성이 좋아야 좋은 웹사이트가 된다.</p>
</blockquote>
<blockquote>
<p><strong>[웹 호환성]</strong> : 웹 표준 준수를 통한 브라우저 호환성 확보</p>
</blockquote>
<h1 id="html-태그tag표기법">HTML 태그(tag)표기법</h1>
<blockquote>
<p>▲ 문법 : <code>&lt;tag&gt;내용&lt;/tag&gt;</code>
▲ 내용 부분이 최종적으로 브라우저에 보이는 부분
▲ 태그는 대소문을 구분하지 않음
▲ 태그 안에 태그 들어갈 수 있음 -&gt; 포함관계 <code>&lt;h1&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h1&gt;</code>
▲ 태그에는 layout을 나누는 태그가 있음 -&gt; 단독으로 사용하면 눈에 보이지 않음</p>
</blockquote>
<h1 id="빈-요소">빈 요소</h1>
<blockquote>
<p>▲ 내용이 없다면 빈 요소 -&gt; 닫는 태그 추가로 명시하지 않아도 돼
▲ <code>&lt;img&gt; &lt;br&gt; &lt;meta&gt; &lt;input&gt; &lt;hr&gt;</code> 등이 있음</p>
</blockquote>
<h1 id="주석">주석</h1>
<blockquote>
<p>▲ 문법 : <code>&lt;!-- 내용 --&gt;</code>
▲ 브라우저에서 해석하지 않음
▲ 필요한 위치에 꼭 필요할 때만 사용 권장
▲ 보통 협업을 위해 사용</p>
</blockquote>
<h1 id="htmlhtml"><code>&lt;html&gt;&lt;/html&gt;</code></h1>
<blockquote>
<p>▲ 최상위/root 요소
▲ 한 .html파일에 한번만 선언되어야함
▲ 모든 요소들은 html요소 안에서 선언되어야함</p>
</blockquote>
<h1 id="headhead"><code>&lt;head&gt;&lt;/head&gt;</code></h1>
<blockquote>
<p>▲ 기계 처리를 위한 정보 넣는 곳 -&gt;  title, script, stylesheet
▲ 생략할 순 있지만 생략하면 안됨</p>
</blockquote>
<h1 id="bodybody"><code>&lt;body&gt;&lt;/body&gt;</code></h1>
<blockquote>
<p>▲ 속성(attribute)이 들어가는곳
▲ .html의 기본 구조
<img src="https://images.velog.io/images/dasol-jeong/post/e7139bf8-96a6-4fa7-91b0-0415b59f1063/fffff.PNG" alt=""></p>
</blockquote>
<h1 id="블록block과-인라인inline">블록(block)과 인라인(inline)</h1>
<blockquote>
<p>▲ 블록(block) : 항상 새로운 줄에서 시작하며, 부모가 허용한 가로 최대 길이까지 차지 가능
▲ 인라인(inline) : 바로 이전 요소가 끝나는 지점부터 시작하며, 요소의 내용 만큼만 차지
<strong>▲ <code>&lt;p&gt;</code>태그 안에 <code>&lt;p&gt;</code>태그 또는 다른 블록요소 들어갈 수 없음</strong>
▲ <strong>가능</strong> : 블록 내 블록, 인라인 내 인라인, 블록 내 인라인
▲ <strong>불가능</strong> : 인라인 내 블록</p>
</blockquote>
<h1 id="블록-태그들">블록 태그들</h1>
<pre><code>&gt; &lt;div&gt;
&gt; &lt;address&gt;, &lt;article&gt;, &lt;aside&gt;, &lt;audio&gt;, &lt;blockquote&gt;, &lt;canvas&gt;, &lt;dd&gt;, &lt;dl&gt;,      &lt;fieldset&gt;, &lt;figcaption&gt;, &lt;figure&gt;, &lt;footer&gt;, &lt;form&gt;, &lt;h1&gt;, &lt;h2&gt;, &lt;h3&gt;, &lt;h4&gt;, &lt;h5&gt;,  &lt;h6&gt;, &lt;header&gt;, &lt;hgroup&gt;, &lt;hr&gt;, &lt;noscript&gt;, &lt;ol&gt;, &lt;output&gt;, &lt;p&gt;, &lt;pre&gt;, &lt;section&gt;,  &lt;table&gt;, &lt;ul&gt;, &lt;video&gt;</code></pre><h1 id="인라인-태그들">인라인 태그들</h1>
<pre><code>&gt; &lt;span&gt;
&gt; &lt;a&gt;, &lt;abbr&gt;, &lt;acronym&gt;, &lt;b&gt;, &lt;bdo&gt;, &lt;big&gt;, &lt;br/&gt;, &lt;button&gt;, &lt;cite&gt;, &lt;code&gt;, &lt;dfn&gt;,  &lt;em&gt;, &lt;i&gt;, &lt;img&gt;, &lt;input&gt;, &lt;kbd&gt;, &lt;label&gt;, &lt;map&gt;, &lt;object&gt;, &lt;q&gt;, &lt;samp&gt;, &lt;small&gt;,  &lt;script&gt;, &lt;select&gt;, &lt;strong&gt;, &lt;sub&gt;, &lt;sup&gt;, &lt;textarea&gt;, &lt;tt&gt;, &lt;var&gt;</code></pre><h1 id="vscode-단축키window">VSCode 단축키(window)</h1>
<blockquote>
<p>▲ 현재 창 닫기 : ctrl + w
▲ 사이드바 토글 : ctrl + b
▲ 내어쓰기 : shift + Tab
▲ 행 아래 삽입 : ctrl + Enter
▲ 행 위 삽입 : ctrl + shift + Enter
▲ 현재 행 이동 : Alt + ⬆/⬇
▲ 현재 행 복사 : Alt + shift + ⬆/⬇
▲ 현재 행 삭제 : ctrl + shift + k
▲ 주석 토글 : ctrl + / (여러줄 잡고 가능)</p>
</blockquote>
]]></description>
        </item>
    </channel>
</rss>