<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>codena</title>
    <link>https://codena.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 29 Jul 2026 19:44:11 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>codena</managingEditor>
    <item>
      <title>주요 리눅스 명령어</title>
      <link>https://codena.tistory.com/51</link>
      <description>&lt;h3 data-end=&quot;125&quot; data-start=&quot;109&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-end=&quot;152&quot; data-start=&quot;126&quot; data-ke-size=&quot;size20&quot;&gt;1. &lt;b&gt;파일 및 디렉토리 관리&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;361&quot; data-start=&quot;153&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;181&quot; data-start=&quot;153&quot;&gt;ls : 현재 디렉토리의 파일 목록 보기&lt;/li&gt;
&lt;li data-end=&quot;206&quot; data-start=&quot;182&quot;&gt;cd 디렉토리명 : 디렉토리 이동&lt;/li&gt;
&lt;li data-end=&quot;227&quot; data-start=&quot;207&quot;&gt;pwd : 현재 위치 확인&lt;/li&gt;
&lt;li data-end=&quot;257&quot; data-start=&quot;228&quot;&gt;mkdir 디렉토리명 : 새 디렉토리 생성&lt;/li&gt;
&lt;li data-end=&quot;278&quot; data-start=&quot;258&quot;&gt;rm 파일명 : 파일 삭제&lt;/li&gt;
&lt;li data-end=&quot;306&quot; data-start=&quot;279&quot;&gt;rm -r 디렉토리명 : 디렉토리 삭제&lt;/li&gt;
&lt;li data-end=&quot;329&quot; data-start=&quot;307&quot;&gt;cp 원본 대상 : 파일 복사&lt;/li&gt;
&lt;li data-end=&quot;361&quot; data-start=&quot;330&quot;&gt;mv 원본 대상 : 파일 이동 또는 이름 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;390&quot; data-start=&quot;363&quot; data-ke-size=&quot;size20&quot;&gt;2. &lt;b&gt;파일 내용 확인 및 편집&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;569&quot; data-start=&quot;391&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;415&quot; data-start=&quot;391&quot;&gt;cat 파일명 : 파일 내용 출력&lt;/li&gt;
&lt;li data-end=&quot;449&quot; data-start=&quot;416&quot;&gt;less 파일명 : 파일 내용 페이지 단위로 보기&lt;/li&gt;
&lt;li data-end=&quot;478&quot; data-start=&quot;450&quot;&gt;nano 파일명 : 간단한 텍스트 편집기&lt;/li&gt;
&lt;li data-end=&quot;506&quot; data-start=&quot;479&quot;&gt;vim 파일명 : 강력한 텍스트 편집기&lt;/li&gt;
&lt;li data-end=&quot;537&quot; data-start=&quot;507&quot;&gt;head 파일명 : 파일의 처음 몇 줄 보기&lt;/li&gt;
&lt;li data-end=&quot;569&quot; data-start=&quot;538&quot;&gt;tail 파일명 : 파일의 마지막 몇 줄 보기&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;596&quot; data-start=&quot;571&quot; data-ke-size=&quot;size20&quot;&gt;3. &lt;b&gt;사용자 및 권한 관리&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;755&quot; data-start=&quot;597&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;626&quot; data-start=&quot;597&quot;&gt;whoami : 현재 로그인한 사용자 확인&lt;/li&gt;
&lt;li data-end=&quot;656&quot; data-start=&quot;627&quot;&gt;who : 현재 로그인한 모든 사용자 확인&lt;/li&gt;
&lt;li data-end=&quot;688&quot; data-start=&quot;657&quot;&gt;chmod 권한설정 파일명 : 파일 권한 변경&lt;/li&gt;
&lt;li data-end=&quot;723&quot; data-start=&quot;689&quot;&gt;chown 사용자:그룹 파일명 : 파일 소유자 변경&lt;/li&gt;
&lt;li data-end=&quot;755&quot; data-start=&quot;724&quot;&gt;sudo 명령어 : 관리자 권한으로 명령 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;784&quot; data-start=&quot;757&quot; data-ke-size=&quot;size20&quot;&gt;4. &lt;b&gt;프로세스 및 시스템 관리&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;914&quot; data-start=&quot;785&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;812&quot; data-start=&quot;785&quot;&gt;ps : 현재 실행 중인 프로세스 확인&lt;/li&gt;
&lt;li data-end=&quot;845&quot; data-start=&quot;813&quot;&gt;top : 실시간 시스템 상태 및 프로세스 확인&lt;/li&gt;
&lt;li data-end=&quot;873&quot; data-start=&quot;846&quot;&gt;kill PID : 특정 프로세스 종료&lt;/li&gt;
&lt;li data-end=&quot;914&quot; data-start=&quot;874&quot;&gt;htop : 인터랙티브한 프로세스 모니터링 도구 (설치 필요)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;941&quot; data-start=&quot;916&quot; data-ke-size=&quot;size20&quot;&gt;5. &lt;b&gt;네트워크 관련 명령어&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1104&quot; data-start=&quot;942&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;985&quot; data-start=&quot;942&quot;&gt;ifconfig 또는 ip a : 네트워크 인터페이스 정보 확인&lt;/li&gt;
&lt;li data-end=&quot;1015&quot; data-start=&quot;986&quot;&gt;ping 주소 : 네트워크 연결 상태 확인&lt;/li&gt;
&lt;li data-end=&quot;1053&quot; data-start=&quot;1016&quot;&gt;netstat -tulnp : 열린 포트 및 서비스 확인&lt;/li&gt;
&lt;li data-end=&quot;1079&quot; data-start=&quot;1054&quot;&gt;curl URL : 웹 요청 보내기&lt;/li&gt;
&lt;li data-end=&quot;1104&quot; data-start=&quot;1080&quot;&gt;wget URL : 파일 다운로드&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>ETC</category>
      <author>codena</author>
      <guid isPermaLink="true">https://codena.tistory.com/51</guid>
      <comments>https://codena.tistory.com/51#entry51comment</comments>
      <pubDate>Tue, 1 Apr 2025 08:55:48 +0900</pubDate>
    </item>
    <item>
      <title>jQuery 전용 선택자 종류</title>
      <link>https://codena.tistory.com/49</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;기본_필터_선택자basic_filter&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;  기본 필터 선택자(Basic Filter)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style9&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;선택자&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;예제&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:odd&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:odd&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;홀수 번째에 위치한 문서 객체를 선택함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:even&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:even&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;짝수 번째에 위치한 문서 객체를 선택함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:first&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:first&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;첫 번째 위치한 문서 객체를 선택함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:last&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:last&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;마지막에 위치한 문서 객체를 선택함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-origin-height=&quot;1099&quot; data-origin-width=&quot;1540&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot; data-lightbox=&quot;lightbox&quot; data-url=&quot;https://blog.kakaocdn.net/dn/O7wHO/btrg0qWllVy/B97kjQe96AcSyTAsQal63k/img.png&quot;&gt;&lt;a class=&quot;preclusion&quot; href=&quot;https://blog.kakaocdn.net/dn/O7wHO/btrg0qWllVy/B97kjQe96AcSyTAsQal63k/img.png&quot; data-fslightbox=&quot;gallery&quot;&gt;&lt;img class=&quot;lazyloaded&quot; src=&quot;https://blog.kakaocdn.net/dn/O7wHO/btrg0qWllVy/B97kjQe96AcSyTAsQal63k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO7wHO%2Fbtrg0qWllVy%2FB97kjQe96AcSyTAsQal63k%2Fimg.png&quot; data-src=&quot;https://blog.kakaocdn.net/dn/O7wHO/btrg0qWllVy/B97kjQe96AcSyTAsQal63k/img.png&quot; data-srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO7wHO%2Fbtrg0qWllVy%2FB97kjQe96AcSyTAsQal63k%2Fimg.png&quot; data-origin-height=&quot;1099&quot; data-origin-width=&quot;1540&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style9&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;선택자&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;예제&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:root&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:root&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;document의 루트 요소 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:target&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:target&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;document의 URL의 flagment 식별자로 지정된 대상 요소를 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:header&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:header&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;h1, h2, h3 등과 같이 헤더인 모든 요소를 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:empty&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:empty&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;자식이 없는 모든 요소(텍스트 노드 포함)를 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:parent&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:parent&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;하나 이상의 하위 노드(요소 또는 텍스트)가 있는 모든 요소를 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;​&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h3 id=&quot;기본_필터_선택자basic_filter&quot; style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;함수 필터 선택자(function Filter)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style9&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;선택자&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;예제&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:eq(index)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:eq(1)&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일치하는 집합 내의 인덱스 n에 있는 요소를 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:gt(index)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:gt(2)&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일치하는 세트 내의 인덱스보다 큰 인덱스에서 모든 요소를 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:lang(language)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:lang(en-us)&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;지정된 언어의 모든 요소를 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:lt(index)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:lt(4)&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일치하는 집합 내의 인덱스보다 작은 인덱스에서 모든 요소를 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:not(selector)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:not(:checked)&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;지정된 선택자와 일치하지 않은 모든 요소를 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:contains(text)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:contains('Hello'&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;지정된 텍스트를 포함하는 모든 요소를 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:has(selector)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:has(p)&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;지정한 선택자와 일치하는 요소를 하나 이상 포함하는 요소를 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:animated&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:animated&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;선택자를 실행할 때 애니메이션 진행 상태에 있는 모든 요소를 선택&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&quot;:not(:animated)&quot; =&amp;gt; 애니메이션중이지 않은것&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;u&gt;&lt;b&gt;​&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h3 id=&quot;기본_필터_선택자basic_filter&quot; style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;입력 양식 &lt;/b&gt;&lt;b&gt;폼(Form) &lt;/b&gt;&lt;b&gt;필터 선택자&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style9&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;선택자&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;예제&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:button&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;:button&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;input 태그중 type 속성이 button인 문서 객체와 button 태그를 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:checkbox&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;:checkbox&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;체크박스 유형의 모든 요소 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:checked&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;:checked&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;체크되거나 선택된 모든 요소와 일치한 요소 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:disabled&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;:disabled&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;비활성화된 모든 요소 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:enabled&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;:enabled&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;활성화된 모든 요소 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:file&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;:file&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;파일 유형의 모든 요소를 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:focus&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;:focus&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;현재 포커스가 있는 요소 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:image&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;:image&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이미지 유형의 모든 요소 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:input&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;:input&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;모든 input, textarea, select, button 요소 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:password&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;:password&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;패스워드 유형의 모든 요소 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:radio&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;:radio&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;라디오 유형의 모든 요소 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:reset&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;:reset&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;reset 유형의 모든 요소 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:selected&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;:selected&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;선택된 모든 요소 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:submit&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;:submit&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;submit 유형의 모든 요소 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;:text&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;:text&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;text 유형의 모든 input 요소 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre id=&quot;code_1709644528639&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;select&amp;gt;
   &amp;lt;option&amp;gt;사과 &amp;lt;/option&amp;gt;
   &amp;lt;option&amp;gt;딸기 &amp;lt;/option&amp;gt;
   &amp;lt;option&amp;gt;수박 &amp;lt;/option&amp;gt;
   &amp;lt;option&amp;gt;멜론  &amp;lt;/option&amp;gt;
&amp;lt;/select&amp;gt;

&amp;lt;script&amp;gt;
	$('select &amp;gt; option:selected').val();   // select 로 선택된 값이 찾기
&amp;lt;/script&amp;gt;
출처: https://inpa.tistory.com/entry/jQuery- -제이쿼리-선택자-Selector- -정리 [Inpa Dev  &amp;zwj; :티스토리]&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;기본_필터_선택자basic_filter&quot; style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;가시성 필터 선택자 (Visibility Fileter)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style9&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;선택자&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;예제&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;color: #ef6f53; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;:hidden&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:hidden&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;hidden 된 모든 요소 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;color: #ef6f53; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;:visible&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$(&quot;div:visible&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;visible인 모든 요소 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>JAVASCRIPT &amp;amp; jQuery</category>
      <author>codena</author>
      <guid isPermaLink="true">https://codena.tistory.com/49</guid>
      <comments>https://codena.tistory.com/49#entry49comment</comments>
      <pubDate>Tue, 5 Mar 2024 22:16:30 +0900</pubDate>
    </item>
    <item>
      <title>jQuery CSS 선택자 종류</title>
      <link>https://codena.tistory.com/48</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;기본_선택자&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  기본 선택자&lt;/b&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style11&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;선택자&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;예제&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;*&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;*&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;모든 요소를 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;.class&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;.class&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;지정한 클래스를 가지는 모든 요소를 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;element&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;element&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;지정된 태그명을 가지는 모든 요소를 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;#id&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;#id&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;지정한 ID 속성을 가지는 하나의 요소를 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;,&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;selector1, selecotr2&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;모든 지정한 선택자들의 결과들을 결합하여 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;기본_선택자&quot; style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;자식 선택자 (child)&lt;/b&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 336px;&quot; border=&quot;1&quot; data-ke-style=&quot;style11&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;선택자&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;예제&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;:first-child&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;div:first-child&quot;)&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;부모의 첫 번째 자식인 모든 요소를 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 34px;&quot;&gt;
&lt;td style=&quot;height: 34px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;:first-of-type&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;div:first-of-type&quot;)&lt;/td&gt;
&lt;td style=&quot;height: 34px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;동일한 요소 이름의 형제 중 첫 번째 요소를 모두 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;:last-child&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;div:last-child&quot;)&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;부모의 마지막 하위 요소인 모든 요소를 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 34px;&quot;&gt;
&lt;td style=&quot;height: 34px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;:last-of-type&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;div:last-of-type&quot;)&lt;/td&gt;
&lt;td style=&quot;height: 34px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;동일한 name 요소의 형제 중 마지막 요소인 모든 요소를 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 34px;&quot;&gt;
&lt;td style=&quot;height: 34px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;:nth-child(index/even/odd/equation)&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;div:nth-child(2)&quot;)&lt;/td&gt;
&lt;td style=&quot;height: 34px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;부모의 n 번째 자식인 모든 요소를 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 40px;&quot;&gt;
&lt;td style=&quot;height: 40px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;:nth-last-child(index/even/odd/equation)&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 40px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;div:last-child(2)&quot;)&lt;/td&gt;
&lt;td style=&quot;height: 40px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;마지막 요소에서 첫 번째 요소까지 계산하여 부모의 n 번째 자식인 모든 요소를 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 40px;&quot;&gt;
&lt;td style=&quot;height: 40px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;:nth-last-of-type(index/even/odd/equation)&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 40px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;div:nth-last-of-type(2)&quot;)&lt;/td&gt;
&lt;td style=&quot;height: 40px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;마지막 요소부터 첫 번째 요소까지 같은 name 요소를 가진 형제와 관련하여 부모의 n 번째 자식인 모든 요소 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 40px;&quot;&gt;
&lt;td style=&quot;height: 40px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;:nth-of-type(index/even/odd/equation)&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 40px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;div:nth-of-type(2)&quot;)&lt;/td&gt;
&lt;td style=&quot;height: 40px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;동일한 name 요소를 갖는 형제와 관련하여 부모의 n번째 자식인 모든 요소 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;:only-child&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;div:only-child&quot;)&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;부모의 유일한 자식인 모든 요소를 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 34px;&quot;&gt;
&lt;td style=&quot;height: 34px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;:only-of-type&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;div:only-of-type&quot;)&lt;/td&gt;
&lt;td style=&quot;height: 34px;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;동일한 name 요소를 갖는 형제 노드가 없는 모든 요소 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;​&lt;/b&gt;&lt;/p&gt;
&lt;h3 id=&quot;기본_선택자&quot; style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;계층 선택자 (Hierarchy)&lt;/b&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style11&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;선택자&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;예제&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&amp;gt; :: parent &amp;gt; child&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;ul &amp;gt; li&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&quot;parent&quot;로 지정된 요소의 &quot;child&quot;로 지정된 모든 직접 자식 요소 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt; (공백) :: ancestor descendant&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;form input&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;지정된 조상의 자손인 모든 요소 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;+ :: prev + next&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;label+input&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;형제 &quot;prev&quot;가 바로 앞에 오는 &quot;next&quot;와 일치하는 다음 요소 모두 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;~ :: prev~siblings&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;#prev~div&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&quot;prev&quot;요소 다음에 오는 모든 형제 요소를 선택하고, 상위 요소가 같으며 필터링 &quot;siblings&quot; 선택자와 일치하는 요소&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;​&lt;/b&gt;&lt;/p&gt;
&lt;h3 id=&quot;기본_선택자&quot; style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;속성 선택자 (Attribute)&lt;/b&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style11&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;선택자&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;예제&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;[attribute|='value']&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;[name|=apple]&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;속성 name값이 &lt;/b&gt;&lt;br /&gt;apple이거나,&lt;br /&gt;&lt;b&gt;apple-&lt;/b&gt; 으로 시작하는 요소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;[attribute*='value']&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;[name*=apple]&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;속성 name값이 &lt;/b&gt;&lt;br /&gt;apple이란 단어를 포함하는 요소 (어느 위치든)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;[attribute~='value']&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;[name~=apple]&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;속성 name값이 &lt;/b&gt;&lt;br /&gt;apple이거나&lt;br /&gt;apple 공백 / 공백 apple 으로 구분된 단어를 포함하는 요소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;[attribute$='value']&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;[name$=apple]&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;속성 name값이 &lt;/b&gt;&lt;br /&gt;apple이거나&lt;br /&gt;apple로 정확히 끝나는 값인 요소&lt;br /&gt;비교는 대소 문자를 구분함.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;[attribute='value']&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;[name=apple]&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;속성 name값이 &lt;/b&gt;&lt;br /&gt;정확히 apple인 요소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;[attribute!='value']&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;[name!=apple]&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;속성 name값이 &lt;/b&gt;&lt;br /&gt;apple을 아예 갖지 않거나,&lt;br /&gt;apple 이외의 값을 갖지 않는 요소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;[attribute^='value']&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;[name^=apple]&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;속성 name값이 &lt;/b&gt;&lt;br /&gt;apple이거나,&lt;br /&gt;apple로 정확히 시작하는 요소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;[attribute]&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;[name]&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;속성 name을 갖고있는 요소 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;[attribute='value'][attribute2='value2']&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;$(&quot;[name=apple][name2=banana]&quot;)&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;&lt;b&gt;각 속성 선택자들이 and로 일치하는 요소&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #d4d4d4; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>JAVASCRIPT &amp;amp; jQuery</category>
      <author>codena</author>
      <guid isPermaLink="true">https://codena.tistory.com/48</guid>
      <comments>https://codena.tistory.com/48#entry48comment</comments>
      <pubDate>Tue, 5 Mar 2024 22:00:25 +0900</pubDate>
    </item>
    <item>
      <title>올리브영 온라인몰 (적응형 PC, Mobile)</title>
      <link>https://codena.tistory.com/46</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1223&quot; data-origin-height=&quot;1819&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwpuco/btsEdMQtZuX/hJu09NBdqFCvdhD4SvfOnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwpuco/btsEdMQtZuX/hJu09NBdqFCvdhD4SvfOnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwpuco/btsEdMQtZuX/hJu09NBdqFCvdhD4SvfOnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbwpuco%2FbtsEdMQtZuX%2FhJu09NBdqFCvdhD4SvfOnk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1223&quot; height=&quot;1819&quot; data-origin-width=&quot;1223&quot; data-origin-height=&quot;1819&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;h2 id=&quot; -올리브영-온라인몰&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  올리브영 온라인몰&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  사이트명 : 올리브영 온라인몰&lt;br /&gt;  작업기간 : PC버전 7일, 모바일 1.5일&lt;br /&gt;  사용언어 : HTML5, CSS3, Jquery, JSON&lt;br /&gt;  라이브러리 : Swiper&lt;br /&gt;  분류 : PC 적응형, Mobile 적응형 웹사이트&lt;br /&gt;  URL :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;PC &amp;gt; &lt;a href=&quot;https://codenablog.github.io/Oliveyoung-pc/&quot;&gt;https://codenablog.github.io/Oliveyoung-pc/&lt;/a&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Mobile &amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/span&gt; &lt;a title=&quot;https://codenablog.github.io/Oliveyoung-mo/&quot; href=&quot;https://codenablog.github.io/Oliveyoung-mo/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://codenablog.github.io/Oliveyoung-mo/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 id=&quot;point-&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;✨ POINT&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✔️ Fetch 비동기 통신을 활용해 JSON 파일의 정보 불러오기&lt;br /&gt;✔️ Filter로 원하는 값의 데이터를 분류&lt;br /&gt;✔️ 3단 카테고리 구성&lt;br /&gt;✔️ 다른상품 추천, 다른 키워드 더보기 버튼 클릭시 새로운 정보 불러오기&lt;br /&gt;✔️ Swiper 커스텀 - 내장 속성 'thumbs' 활용 , 그리드 형태의 슬라이더 구현&lt;br /&gt;✔️ 모바일에서 이미지 height 고정형으로 개선&lt;br /&gt;✔️ Swiper 커스텀 - 실시간 View 랭킹&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 id=&quot;-fetch-비동기통신-활용&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  Fetch 비동기통신 활용&lt;/b&gt;&lt;/h2&gt;
&lt;p id=&quot;-eventjson&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;event.json&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;json 파일을 만들어 불러올 정보들을 담아주었다.&lt;/p&gt;
&lt;pre class=&quot;json&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;{
    &quot;items&quot;:[
        {
            &quot;thumbUrl&quot;:&quot;./assets/images/banner01.jpg&quot;,
            &quot;title&quot;:&quot;팔로우하면 20% 쿠폰 GET&quot;,
            &quot;linkUrl&quot;:&quot;#banner01&quot;
        },
        {
            &quot;thumbUrl&quot;:&quot;./assets/images/banner02.jpg&quot;,
            &quot;title&quot;:&quot;올리브 멤버스 하반기 혜택&quot;,
            &quot;linkUrl&quot;:&quot;#banner03&quot;
        }
    ]
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;-mainjs&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;main.js&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;json파일에 담긴 정보를 불러오기!&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;fetch('./assets/data/event.json')
  .then(res=&amp;gt;res.json())
  .then(json=&amp;gt;{
  	data = json.items // 전체 데이터를 data라는 변수에 담기
  	let html=``; // 데이터 입력을 위한 변수 할당
  
	data.forEach(element=&amp;gt;{
      html+=`${element.title}` // json 파일의 items의 title 정보를 불러온다
    })
  
  })
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 id=&quot;-filter로-원하는-값을-분류&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  Filter로 원하는 값을 분류&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;765&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l3d96/btsEhUTTJzq/ykTq24vLHzuZZ0L00lqSN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l3d96/btsEhUTTJzq/ykTq24vLHzuZZ0L00lqSN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l3d96/btsEhUTTJzq/ykTq24vLHzuZZ0L00lqSN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl3d96%2FbtsEhUTTJzq%2FykTq24vLHzuZZ0L00lqSN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1164&quot; height=&quot;765&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;765&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1047&quot; data-origin-height=&quot;565&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBrdKp/btsEhrkfJ7g/uUGsQwij5fKXVW1VmpLnxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBrdKp/btsEhrkfJ7g/uUGsQwij5fKXVW1VmpLnxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBrdKp/btsEhrkfJ7g/uUGsQwij5fKXVW1VmpLnxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBrdKp%2FbtsEhrkfJ7g%2FuUGsQwij5fKXVW1VmpLnxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1047&quot; height=&quot;565&quot; data-origin-width=&quot;1047&quot; data-origin-height=&quot;565&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;product.json 파일에서 각각 EventId, brand 값이 일치하는 상품만 뽑아왔다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;event.json&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;json&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;{
  &quot;items&quot;:[
    {
      &quot;id&quot;:&quot;prd01&quot;,
      &quot;cate&quot;:&quot;1001&quot;,
      &quot;brand&quot;:&quot;에스트라&quot;,
      &quot;productName&quot;:&quot;에스트라 아토베리어365 로션 150ml 기획 ...&quot;,
      &quot;thumbUrl&quot;:&quot;./assets/images/product01.jpg&quot;,
      &quot;best&quot;:true,
      &quot;cost&quot;:31000,
      &quot;sale&quot;:23560,
      &quot;tag&quot;:[&quot;세일&quot;,&quot;쿠폰&quot;,&quot;증정&quot;,&quot;오늘드림&quot;],
      &quot;eventId&quot;:false,
      &quot;view&quot;:32,
      &quot;linkUrl&quot;:&quot;#product1&quot;
    },
 .
 .
 .&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;main.json&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Filter를 함수로 만들어서 매개변수에 원하는 값을 넣어 호출해주는 방식으로 뽑아왔다.&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;       // 브랜드별 상품 리스트 불러오기
fetch('./assets/data/product.json')
  .then(res=&amp;gt;res.json())
  .then(json=&amp;gt;{
    data = json.items;
    function sortData(brandId,sortId){
               // 브랜드가 일치하는 상품 필터링
      brandData = data.filter(function(parm){
        return parm.brand === sortId;
      })
          
      let html=``;

      brandData.forEach(element=&amp;gt;{
        .
        .
      })
      $(`.sc-brand .brand${brandId}`).html(html);
    }
    sortData(1,&quot;빌리프&quot;);
    sortData(2,&quot;아벤느&quot;);
    sortData(3,&quot;빌리프&quot;);
    sortData(4,&quot;아벤느&quot;);
})&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 id=&quot;-3단-category-구성&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  3단 Category 구성&lt;/b&gt;&lt;/h2&gt;
&lt;p id=&quot;-대분류--중분류--소분류&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;  대분류 &amp;gt; 중분류 &amp;gt; 소분류&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;810&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHoeAt/btsEdD0ovj5/Ec5oi2BqLyPTfDuXxJSiJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHoeAt/btsEdD0ovj5/Ec5oi2BqLyPTfDuXxJSiJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHoeAt/btsEdD0ovj5/Ec5oi2BqLyPTfDuXxJSiJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHoeAt%2FbtsEdD0ovj5%2FEc5oi2BqLyPTfDuXxJSiJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1020&quot; height=&quot;810&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;810&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;전체 카테고리 버튼을 누르면 나오는 영역은&lt;br /&gt;&quot;뷰티 &amp;gt; 스킨케어 &amp;gt; 토너/로션/올인원&quot; 형태의 3단 분류로 되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;categoryjs&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;category.js&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중분류를 기준으로 category.json 파일에 작성하면서&lt;br /&gt;소분류는 submenu라는 key에 배열로 만들어주고,&lt;br /&gt;대분류는 sort라는 key를 만들어서 필터로 분류해주었다.&lt;/p&gt;
&lt;pre class=&quot;json&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;{ 
  &quot;items&quot;:[
  {
    &quot;id&quot;:1,
    &quot;name&quot;:&quot;스킨케어&quot;,
    &quot;sort&quot;:&quot;뷰티&quot;,
    &quot;submenu&quot;:[
      {
        &quot;id&quot;:1001,
        &quot;name&quot;:&quot;토너/로션/올인원&quot;
      },
      {
        &quot;id&quot;:1002,
        &quot;name&quot;:&quot;에센스/크림&quot;
      },
      {
        &quot;id&quot;:1003,
        &quot;name&quot;:&quot;미스트/오일&quot;
      }
    ]
  },
  .
  .
  .&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;mainjs&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;main.js&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;// 전체 카테고리 불러오기
fetch('./assets/data/category.json')
  .then(res=&amp;gt;res.json())
  .then(json=&amp;gt;{
    data=json.items; // 전체 데이터
    let html=``;

    // 카테고리 출력 폼
    function cateAll(sortId){

    cateList = data.filter(function(parm){
      return parm.sort == sortId; // 대분류 필터
    })
      
	// 대분류
    html+=`
    &amp;lt;div class=&quot;group-cate&quot;&amp;gt;
      &amp;lt;h3&amp;gt;${sortId}&amp;lt;/h3&amp;gt; 
      &amp;lt;ul class=&quot;cate-list&quot;&amp;gt;
    `
    //중분류
    cateList.forEach(element =&amp;gt; {
      html+=`&amp;lt;li class=&quot;cate-item&quot;&amp;gt;
               &amp;lt;a href=&quot;#${element.id}&quot;&amp;gt;${element.name}&amp;lt;/a&amp;gt;
               &amp;lt;ul class=&quot;sub-list&quot;&amp;gt;`
      //소분류
      sub = element.submenu;
      sub.forEach(element=&amp;gt;{
        html+=`
                 &amp;lt;li class=&quot;sub-item&quot;&amp;gt;&amp;lt;a href=&quot;#${element.id}&quot;&amp;gt;${element.name}&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
        `
      })
      html+=`
               &amp;lt;/ul&amp;gt;
             &amp;lt;/li&amp;gt;
      `
            });
      html+=`
           &amp;lt;/ul&amp;gt;
         &amp;lt;/div&amp;gt;
      `
      $(&quot;.gnb .cate-wrapper&quot;).html(html);
    }
    // 대분류 값 넣어서 카테고리 출력폼 호출
    cateAll(&quot;뷰티&quot;);
    cateAll(&quot;헬스&amp;amp;푸드&quot;);
    cateAll(&quot;라이프&quot;);
  })&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 id=&quot;-다른상품-추천-다른-키워드-더보기&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  다른상품 추천, 다른 키워드 더보기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;526&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ibgwj/btsEdZvfBv2/fVmKNd8rj9dctxkbACCnk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ibgwj/btsEdZvfBv2/fVmKNd8rj9dctxkbACCnk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ibgwj/btsEdZvfBv2/fVmKNd8rj9dctxkbACCnk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIbgwj%2FbtsEdZvfBv2%2FfVmKNd8rj9dctxkbACCnk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;499&quot; height=&quot;526&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;526&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;522&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l85Dt/btsEizaThHz/y2P4TOJatW7PkqRFK6KF9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l85Dt/btsEizaThHz/y2P4TOJatW7PkqRFK6KF9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l85Dt/btsEizaThHz/y2P4TOJatW7PkqRFK6KF9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl85Dt%2FbtsEizaThHz%2Fy2P4TOJatW7PkqRFK6KF9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;503&quot; height=&quot;522&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;522&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;  추천 상품, 키워드 영역의 버튼을 누르면 다른 상품을 호출해야한다.&lt;br /&gt;  이 부분 역시 함수를 만들어서, 버튼을 누르면 다른 매개변수값을 넣은 함수를 호출하는 방식으로 만들었다.&lt;/p&gt;
&lt;pre class=&quot;arcade&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;current3 = 1; // 현재 값을 저장하기위한 변수
function keywords(i,j){
  fetch('./assets/data/keywords.json')
    .then(res=&amp;gt;res.json())
    .then(json=&amp;gt;{
      data=json.items;
      html=``;

      while(i &amp;lt; j){
        element = data[i];
                
        html+=`
          &amp;lt;li class=&quot;keyword-item&quot;&amp;gt;
            &amp;lt;a href=&quot;${element.linkUrl}&quot;&amp;gt;
              &amp;lt;figure class=&quot;img-box&quot;&amp;gt;
                &amp;lt;img src=&quot;${element.thumbUrl}&quot; alt&quot;&amp;gt;
              &amp;lt;/figure&amp;gt;
              &amp;lt;div class=&quot;text-box&quot;&amp;gt;
                &amp;lt;h3&amp;gt;${element.title}&amp;lt;/h3&amp;gt;
                &amp;lt;p&amp;gt;${element.subTitle}&amp;lt;/p&amp;gt;
              &amp;lt;/div&amp;gt;
            &amp;lt;/a&amp;gt;
          &amp;lt;/li&amp;gt; 
        `
    
      i++;
    }
    $('.sc-keyword .keyword-list').html(html);
  });
}        
keywords(0,2); //기본으로 보여줄 것

$('.sc-keyword .other-btn').click(function(){
  if(current3 == 1){
    keywords(2,4);
    current3 = 2;
  }else if(current3 == 2){
    keywords(4,6);
    current3 = 3;
  }else{
    keywords(0,2);
    current3 = 1;
  }
  $('.sc-keyword .other-btn .current').html(current3);
}) &lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;forEach 문법을 활용해서 리스트를 뽑아올 경우 return true/false여부에 관계없이 continue 되기 때문에 원하는 갯수만 뽑아오기 위해 while문법을 활용했는데, 이후 더 찾아보니 try catch를 사용하는 방법도 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 id=&quot;-swiper-커스텀&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  Swiper 커스텀&lt;/b&gt;&lt;/h2&gt;
&lt;h3 id=&quot;-탭-메뉴를-슬라이더와-연동&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 탭 메뉴를 슬라이더와 연동&lt;/b&gt;&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;708&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p7t3H/btsEeIAagtd/YDuo9KHaOdSQHpPuaqAkDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p7t3H/btsEeIAagtd/YDuo9KHaOdSQHpPuaqAkDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p7t3H/btsEeIAagtd/YDuo9KHaOdSQHpPuaqAkDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp7t3H%2FbtsEeIAagtd%2FYDuo9KHaOdSQHpPuaqAkDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1070&quot; height=&quot;708&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;708&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Swiper.js Demo 페이지의 Thumbs gallery를 활용했다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;983&quot; data-origin-height=&quot;514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbTX3p/btsEhBG0YSq/A4JR8x16GHPpPfaACmU2g1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbTX3p/btsEhBG0YSq/A4JR8x16GHPpPfaACmU2g1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbTX3p/btsEhBG0YSq/A4JR8x16GHPpPfaACmU2g1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbTX3p%2FbtsEhBG0YSq%2FA4JR8x16GHPpPfaACmU2g1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;983&quot; height=&quot;514&quot; data-origin-width=&quot;983&quot; data-origin-height=&quot;514&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;탭 슬라이더와 내용 슬라이더를 각각 따로 만들어 준 후, 연동해주면 된다.&lt;/p&gt;
&lt;pre class=&quot;dts&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;const brandSlider = new Swiper(&quot;.sc-brand .swiper&quot;,{
  loop:true,
  spaceBetween:30,
  navigation:{
    nextEl:&quot;.sc-brand .next&quot;,
    prevEl:&quot;.sc-brand .prev&quot;
  },
  pagination:{
    el:&quot;.sc-brand .pagination&quot;,
    type: &quot;fraction&quot;
  },
  //이 부분!!
  thumbs: {
    swiper: brandTab, 
  }
})
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;-grid-형태의-슬라이더&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. Grid 형태의 슬라이더&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;462&quot; data-origin-height=&quot;605&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R4ftw/btsEfrx9LaF/oLXBGAFKo8v5UQnyl8s8T1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R4ftw/btsEfrx9LaF/oLXBGAFKo8v5UQnyl8s8T1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R4ftw/btsEfrx9LaF/oLXBGAFKo8v5UQnyl8s8T1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR4ftw%2FbtsEfrx9LaF%2FoLXBGAFKo8v5UQnyl8s8T1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;462&quot; height=&quot;605&quot; data-origin-width=&quot;462&quot; data-origin-height=&quot;605&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p id=&quot;mainjs-1&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;main.js&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;swiper의 grid 속성을 이용해서 만들었다.&lt;/p&gt;
&lt;pre class=&quot;dts&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;$(`.sc-dessert .prd-list`).html(html)
    const dessertSlider = new Swiper(&quot;#dessertSlider&quot;,{
        slidesPerView:3,
        slidesPerGroup:3,
        spaceBetween:8,
        grid:{
            rows:2
        },
        pagination:{
            el:&quot;.sc-dessert .pagination&quot;
        },
    })&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리드 슬라이더를 만들때 주의할 점은, .swiper-slide의 부모 요소인 .swiper-wrapper에 높이값이 꼭 지정되있어야 정상적으로 작동한다.&lt;br /&gt;위에 상품 리스트의 경우 화면 너비에따라 유동적으로 값이 바뀌기때문에, calc()로 정확한 값을 계산해서 높이값을 넣어주었다 !&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CSS&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;css&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;/* swiper-wrapper */
.sc-dessert .prd-list{ 
    gap: 0;
    min-height: 456px;
    height: calc(((100vw - 30px) / 3 + 118px) * 2); 
    /* ((화면너비 - 양옆 margin) / 3열 +textbox의 높이) * 2행*/
}

 /* swiper-slide */
.sc-dessert .prd-item{
    width: 100%;
    margin-top:0 !important;
    min-height: 228px;
    height: calc((100vw - 30px) / 3 + 118px);
    /* (화면너비 - 양옆 margin) / 3열 +textbox의 높이) */
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;-실시간-view-랭킹&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 실시간 View 랭킹&lt;/b&gt;&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;351&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4DuGb/btsEhBUyW3p/xM5N1JEii38LxWsk3LveY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4DuGb/btsEhBUyW3p/xM5N1JEii38LxWsk3LveY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4DuGb/btsEhBUyW3p/xM5N1JEii38LxWsk3LveY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4DuGb%2FbtsEhBUyW3p%2FxM5N1JEii38LxWsk3LveY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1050&quot; height=&quot;351&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;351&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;① 1-5위 상품이 첫번째 슬라이드, 6-10위 상품이 두번째 슬라이드에 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;② 3초에 한번씩 아이템의 포커스가 이동하고, 포커스가 해당 슬라이드의 끝까지 이동하면 다음 슬라이드로 넘어간다.&lt;br /&gt;페이징 혹은 아이템을 클릭하면 초기화하기 위해 함수에 담아준 뒤에 호출했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;// 3초에 한번씩 자동으로 넘어감
    function rankAuto(){
        rankFocus++;
        if(rankFocus == 11){
            rankFocus = 1;
        }
        // rankCurr 값이 바뀌면
        if(rankFocus &amp;lt; 6){  
            rankSlider.slideTo(0);
            $('.ranking-prd a').removeClass('active');
            $(`.sc-ranking .rank${rankFocus}`).addClass('active');
        }else if(rankFocus &amp;lt; 11){  
            rankSlider.slideTo(1);
            $('.ranking-prd a').removeClass('active');
            $(`.sc-ranking .rank${rankFocus}`).addClass('active');
        }
    }

    interval = setInterval(rankAuto, 3000);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;③ 아이템 제목을 클릭하면 포커스가 이동한다. (이때 setInterval의 타이머 초기화)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;// 아이템 클릭시 
    $('.sc-ranking .rank-item').click(function(a){
        a.preventDefault();
        rankFocus = Number($(this).attr('href').charAt(1)*10) + Number($(this).attr('href').charAt(2))
        i = rankFocus ;

        
        $('.ranking-prd a').removeClass('active');
        $(`.sc-ranking .rank${rankFocus}`).addClass('active');
        clearInterval(interval);
        interval = setInterval(rankAuto, 3000);
    
    })&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;④ 페이징 클릭시에 슬라이드가 넘어간다. (setInterval의 타이머 초기화)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;    let rankFocus = 1; //현재 값을 저장하는 변수
    $('.sc-ranking .rank1').addClass('active');//첫번째 아이템에 기본 포커스
    
    // 페이징 클릭시 
    $('.sc-ranking .swiper-pagination-bullet').click(function(a){
        a.preventDefault();
        i = $(this).index();
    
        rankSlider.slideTo(i);
        if(i == 0){
            rankFocus = 1;
        }else{
            rankFocus = 6;
        }
        $('.ranking-prd a').removeClass('active');
        $(`.sc-ranking .rank${rankFocus}`).addClass('active');
      
        clearInterval(interval); //클릭시 인터벌의 타이머 초기화
        interval = setInterval(rankAuto, 3000); // 타이머 다시 시작
    })&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 id=&quot;-모바일에서-이미지-height-고정형으로-개선&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  모바일에서 이미지 height 고정형으로 개선&lt;/b&gt;&lt;/h2&gt;
&lt;p id=&quot;개선-전-기존-올리브영-사이트&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;  개선 전, 기존 올리브영 사이트&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;화면 너비가 줄어들면 배너의 height도 따라서 줄어든다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;741&quot; data-origin-height=&quot;601&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3sS5O/btsEbC1Vupo/nTDeN33wjvaZ5yg7X96Lm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3sS5O/btsEbC1Vupo/nTDeN33wjvaZ5yg7X96Lm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3sS5O/btsEbC1Vupo/nTDeN33wjvaZ5yg7X96Lm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3sS5O%2FbtsEbC1Vupo%2FnTDeN33wjvaZ5yg7X96Lm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;741&quot; height=&quot;601&quot; data-origin-width=&quot;741&quot; data-origin-height=&quot;601&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;개선-후&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;  개선 후&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;화면 너비가 줄어들어도 height는 그대로 유지된다.&lt;br /&gt;이미지에&lt;span&gt;&amp;nbsp;&lt;/span&gt;object-fit:cover를 주어 넘치는 부분은 깔끔하게 잘리도록 했다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;559&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3VJ1n/btsEhsDqXEd/1vIi4V4K1SdOaF1NxNs9kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3VJ1n/btsEhsDqXEd/1vIi4V4K1SdOaF1NxNs9kK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3VJ1n/btsEhsDqXEd/1vIi4V4K1SdOaF1NxNs9kK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3VJ1n%2FbtsEhsDqXEd%2F1vIi4V4K1SdOaF1NxNs9kK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;838&quot; height=&quot;559&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;559&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 id=&quot;-healthy-life-css-개선&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  Healthy life CSS 개선&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QK69G/btsEdVzJQ8Z/IOb66D1CirETjpl5Z4Sv2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QK69G/btsEdVzJQ8Z/IOb66D1CirETjpl5Z4Sv2K/img.png&quot; style=&quot;width: 38.323%; margin-right: 10px;&quot; data-origin-width=&quot;337&quot; data-origin-height=&quot;447&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;38.77&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QK69G/btsEdVzJQ8Z/IOb66D1CirETjpl5Z4Sv2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQK69G%2FbtsEdVzJQ8Z%2FIOb66D1CirETjpl5Z4Sv2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;337&quot; height=&quot;447&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ElrR1/btsEhy4CL3w/O7Ryzgfv3TEphp4dGZwEm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ElrR1/btsEhy4CL3w/O7Ryzgfv3TEphp4dGZwEm0/img.png&quot; style=&quot;width: 60.5142%;&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;420&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;61.23&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ElrR1/btsEhy4CL3w/O7Ryzgfv3TEphp4dGZwEm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FElrR1%2FbtsEhy4CL3w%2FO7Ryzgfv3TEphp4dGZwEm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;기존 올리브영 사이트에서 Healthy 영역의 텍스트 박스 배경이미지까지 통으로 쓰고있다.&lt;br /&gt;그런데 이 부분이 마우스를 hover 하면 scale이 살짝 커지는 모션이 들어가는데, 그때 배경색과 이미지의 경계부분이 좀 뭉개져서 개선하기로 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1084&quot; data-origin-height=&quot;519&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chIVhU/btsEhTAGJt4/kbQm06GM0nYZXfJEdkIXnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chIVhU/btsEhTAGJt4/kbQm06GM0nYZXfJEdkIXnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chIVhU/btsEhTAGJt4/kbQm06GM0nYZXfJEdkIXnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchIVhU%2FbtsEhTAGJt4%2FkbQm06GM0nYZXfJEdkIXnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1084&quot; height=&quot;519&quot; data-origin-width=&quot;1084&quot; data-origin-height=&quot;519&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;클론코딩 작업할 때 필요한 이미지 부분만 잘라서 업로드하고, 색상 배경 부분은 CSS에서 Background로 처리했다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;-issue--슬라이더는-then함수-안쪽에-&quot; data-ke-size=&quot;size23&quot;&gt;(+ ISSUE ) 슬라이더는 then()함수 안쪽에 .. &lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수 바깥쪽에 슬라이더 함수를 쓰게되면 동적으로 생성된 요소를 슬라이더 함수가 감지하지 못해 각 슬라이드마다 인덱스 값이 NaN으로 뜨고 페이징이 제대로 동작하지 않는다.&lt;br /&gt;이거때문에 한참 헤맸다.  오랜 시간을 서칭해본 끝에 해결 완료  &lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Code Review</category>
      <author>codena</author>
      <guid isPermaLink="true">https://codena.tistory.com/46</guid>
      <comments>https://codena.tistory.com/46#entry46comment</comments>
      <pubDate>Wed, 31 Jan 2024 23:41:53 +0900</pubDate>
    </item>
    <item>
      <title>반응형 웹 - 디바이스별 반응형 분기점</title>
      <link>https://codena.tistory.com/44</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;오늘은 반응형 웹 디자인을 제작하기 위한 미디어 쿼리 해상도 분기점 리스트를 공유하려고 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;  기본 설정&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;반응형웹을 적용하기 위해서는 먼저 meta viewport를 설정해주어야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;html &amp;lt;head&amp;gt; 태그에 뷰포트 태그를 선언해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;width=device-width : 화면의 넓이를 디바이스의 넓이로 지정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;initial-scale=1: 기본 사이즈를 1로 지정함.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;디바이스별 분기점&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-origin-height=&quot;0&quot; data-origin-width=&quot;0&quot; data-filename=&quot;2507A93755139A2534.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wda5N/btqzqUEMv57/l04WZ3KKMddlxWX1rteIU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwda5N%2FbtqzqUEMv57%2Fl04WZ3KKMddlxWX1rteIU1%2Fimg.png&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-origin-height=&quot;0&quot; data-origin-width=&quot;0&quot; data-filename=&quot;2507A93755139A2534.png&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;반응형 분기점&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;1. 낮은 해상도의 PC, 태블릿 가로 : ~1024px&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;2. 테블릿 가로 : 768px ~ 1023px&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;3. 모바일 가로, 태블릿 : 480px ~ 767px&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;4. 모바일 : ~ 480px&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1572402085834&quot; class=&quot;css&quot; style=&quot;background-color: #f6f7f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;css&quot;&gt;&lt;code&gt;/* PC , 테블릿 가로 (해상도 768px ~ 1023px)*/
@media all and (min-width:768px) and (max-width:1023px) { /*스타일입력*/}

/* 테블릿 세로 (해상도 768px ~ 1023px)*/
@media all and (min-width:768px) and (max-width:1023px) { /*스타일입력*/}

/* 모바일 가로, 테블릿 세로 (해상도 480px ~ 767px)*/
@media all and (min-width:480px) and (max-width:767px) { /*스타일입력*/}

/* 모바일 가로, 테블릿 세로 (해상도 ~ 479px)*/
@media all and (max-width:479px) { /*스타일입력*/}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt; &amp;nbsp; 3개의 반응형 분기점&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;23203C3A55139DD01F.jpg&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bO4rmK/btsEf2komCW/LB86PlNRbr6MtPVjVsDYWk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bO4rmK/btsEf2komCW/LB86PlNRbr6MtPVjVsDYWk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bO4rmK/btsEf2komCW/LB86PlNRbr6MtPVjVsDYWk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbO4rmK%2FbtsEf2komCW%2FLB86PlNRbr6MtPVjVsDYWk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;796&quot; height=&quot;161&quot; data-filename=&quot;23203C3A55139DD01F.jpg&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;161&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;1. pc : 1024px ~&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;2. 테블릿 가로, 태블릿 세로 : 768px ~ 1023px&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;3. 모바일 가로, 모바일 세로 : ~ 768px&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1572402218968&quot; class=&quot;css&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;css&quot;&gt;&lt;code&gt;/* PC (해상도 1024px)*/
@media all and (min-width:1024px) { /*스타일입력*/}

/* 테블릿 가로, 테블릿 세로 (해상도 768px ~ 1023px)*/
@media all and (min-width:768px) and (max-width:1023px) { /*스타일입력*/}

/* 모바일 가로, 모바일 세로 (해상도 480px ~ 767px)*/
@media all and (max-width:767px) { /*스타일입력*/}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>HTML &amp;amp; SCSS (CSS3)</category>
      <author>codena</author>
      <guid isPermaLink="true">https://codena.tistory.com/44</guid>
      <comments>https://codena.tistory.com/44#entry44comment</comments>
      <pubDate>Fri, 12 Jan 2024 18:02:01 +0900</pubDate>
    </item>
    <item>
      <title>엔터프라이즈블록체인</title>
      <link>https://codena.tistory.com/43</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;396&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/THHci/btsDkTVT0hc/vNMadsHbiqkXl4sezrENa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/THHci/btsDkTVT0hc/vNMadsHbiqkXl4sezrENa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/THHci/btsDkTVT0hc/vNMadsHbiqkXl4sezrENa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTHHci%2FbtsDkTVT0hc%2FvNMadsHbiqkXl4sezrENa1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;396&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;396&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;toc-link-0&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  엔터프라이즈 블록체인&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;  사이트명 : 엔터프라이즈 블록체인&lt;b&gt;&lt;br /&gt;&lt;/b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;작업기간 : 6일&lt;br /&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;사용언어 : HTML5, CSS3, JQuery&lt;br /&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;라이브러리 : GSAP, Swiper&lt;br /&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;분류 : PC 세미 반응형 웹사이트&lt;br /&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;URL : &lt;a href=&quot;https://codenablog.github.io/Enterprise-Blockchain/&quot;&gt;https://codenablog.github.io/Enterprise-Blockchain/&lt;/a&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h2 id=&quot;toc-link-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;✨POINT&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;✔️ 모션의 분석과 이해&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;✔️ GSAP + ScrollTriger를 활용한 애니메리션 구현&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;✔️ Video Background로 사용&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;✔️ Top 버튼 위치 변화&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;✔️ 한 방향으로 계속 흘러가는 텍스트 베너&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 id=&quot;구조-살펴보기-&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  구조 살펴보기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 id=&quot;-전체-태그를-wrapper로-감싸주기&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 전체 태그를 wrapper로 감싸주기&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;세미 반응형이지만 PC만 지원하도록 만들었기 때문에, 최소너비를 1300픽셀로 잡아주었다.&lt;br /&gt;이때, 컨텐츠의 수평 스크롤영역 때문에 가로스크롤이 생길 위험을 낮추기 위해&lt;span&gt;&amp;nbsp;&lt;/span&gt;overflow-x:hidden 을 사용했는데, body와 wrapper에 둘다 각각 1300px의 min-width를 주고, wrapper에&lt;span&gt;&amp;nbsp;&lt;/span&gt;overflow-x:hidden을 사용해서 화면이 1300px보다 작아서 넘치는 영역에만 스크롤이 생길 수 있도록 코딩했다.&lt;/p&gt;
&lt;pre class=&quot;css&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;.wrapper{
  min-width:1300px;
  overflow-x: hidden;
}
body{
  min-width:1300px;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;-시멘틱-태그를-활용해-영역-구성&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 시멘틱 태그를 활용해 영역 구성&lt;/b&gt;&lt;/h3&gt;
&lt;h3 id=&quot;-각각의-section에는-h2태그로-제목-구성&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 각각의 section에는 h2태그로 제목 구성&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;-클래스명에-통일성을-주어-직관적으로-구조를-파악할수있도록-구성&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 클래스명에 통일성을 주어 직관적으로 구조를 파악할수있도록 구성&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;각 섹션 내부 수평으로 스크롤되는 영역은 'group-hori', 수직으로 스크롤되는 영역은 'group-scroll'로 구성하여 컨트롤해서 구조파악하기 용이하게 했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;396&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/svge2/btsDh6WkNpc/d0zkYVIrewhqt68QKkVAtK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/svge2/btsDh6WkNpc/d0zkYVIrewhqt68QKkVAtK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/svge2/btsDh6WkNpc/d0zkYVIrewhqt68QKkVAtK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/svge2/btsDh6WkNpc/d0zkYVIrewhqt68QKkVAtK/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;396&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;396&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;applescript&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;&amp;lt;section class=&quot;sc-data sc-card&quot;&amp;gt;
  &amp;lt;div class=&quot;group-hori&quot;&amp;gt;
  .
  .
  &amp;lt;/div&amp;gt;
  &amp;lt;div class=&quot;group-scroll&quot;&amp;gt;
  .
  .
  &amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;-article&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. article&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;section들을 모은 영역은 독립적으로 존재할수 있는 article 태그로 감쌀 수 있다.&lt;br /&gt;엔터프라이즈블록체인 사이트를 클론코딩하면서 DATA ID 내용이 나열되는 영역은 'DATA ID'라는 공통 내용을 담은 독립적인 컨텐츠기 때문에 article로 구성했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;396&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4u05x/btsDfnka3j5/kzNaAjjkxuMiikgxTxKFA0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4u05x/btsDfnka3j5/kzNaAjjkxuMiikgxTxKFA0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4u05x/btsDfnka3j5/kzNaAjjkxuMiikgxTxKFA0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/b4u05x/btsDfnka3j5/kzNaAjjkxuMiikgxTxKFA0/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;396&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;396&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 id=&quot;-gsap--scrolltrigger&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  GSAP + ScrollTrigger&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;사이트의 모션 효과를 만들 위해 Greensock에서 만든 GSAP이라는 JS 라이브러리를 이용했다.  &lt;br /&gt;GSAP의 플러그인인 ScrollTrigger를 함께 사용하여 스크롤을 이용해 애니메이션이 움직이고 멈추도록 만들었다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;-scrolltrigger-사용법&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. ScrollTrigger 사용법&lt;/b&gt;&lt;/h3&gt;
&lt;p id=&quot;①-timeline-메서드를-이용해-스크롤시-동작할-애니메이션을-만들어준다&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;① timeline 메서드를 이용해 스크롤시 동작할 애니메이션을 만들어준다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로 나열된 순서에 따라 동작하지만, 동시에 동작하고 싶은 애니메이션은 addLabel을 이용해 Label을 선언하고, 중괄호 뒤에 붙여주면 같은 Label이 붙은 애니메이션은 동시에 동작하게 된다.&lt;br /&gt;또 { 중괄호 안 } 의 duration, delay 속성을 활용하여 타이밍을 더 디테일하게 컨트롤할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;groovy&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;const intro = gsap.timeline();
intro
  .addLabel('a')
  .to(&quot;.sc-intro .text-bg&quot;, {backgroundColor:&quot;rgba(0,0,0,0.6)&quot;, duration: 100},'a')
  .from(&quot;.sc-intro .t01&quot;, {autoAlpha: 0, duration: 100},'a')
  .to(&quot;.sc-intro .t01&quot;, {autoAlpha: 0, duration: 100},&quot;+=1&quot;)
  .from(&quot;.sc-intro .t02&quot;, {autoAlpha: 0, duration: 100}, &quot;+=1&quot;)
  .to(&quot;.sc-intro .t02&quot;, {autoAlpha: 0, duration: 100},&quot;+=1&quot;)
  .from(&quot;.sc-intro .t03&quot;, {autoAlpha: 0, duration: 100}, &quot;+=1&quot;)
  .to(&quot;.sc-intro .t03&quot;, {autoAlpha: 0, duration: 100},&quot;+=1&quot;)
  .from(&quot;.sc-intro .t04&quot;, {autoAlpha: 0, duration: 100}, &quot;+=1&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;②-scrolltrigger를-만들어-애니메이션을-적용한다&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;② ScrollTrigger를 만들어 애니메이션을 적용한다.&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;ScrollTrigger.create({
  animation: intro,
  trigger: &quot;.sc-intro&quot;,
  start: &quot;top top&quot;,
  end: &quot;+=7000&quot;,
  scrub: true,
  pin: true,
})&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;animation: 실행할 애니메이션의 이름&lt;br /&gt;trigger: 어떤 요소를 기준으로 할지&lt;br /&gt;start: 시작점 기준. &quot;요소 / 창&quot;&lt;br /&gt;end: 끝점 기준. &quot;요소 / 창&quot; , &quot;+=숫자&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&quot;+=3000&quot;이면 시작점에서 3000px이 스크롤 될때까지 동작)&lt;br /&gt;pin:true: 애니메이션이 동작하는 동안에 영역이 화면에 고정&lt;br /&gt;scrub:true: 스크롤이 중단되거나 뒤로 돌아갈때 애니메이션도 함께 정지되거나 역재생한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;-scrolltrigger을-이용한-class-컨트롤&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. ScrollTrigger을 이용한 Class 컨트롤&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;①&lt;span&gt;&amp;nbsp;&lt;/span&gt;toggleClass&lt;span&gt;&amp;nbsp;&lt;/span&gt;메서드를 이용해 간단하게 클래스를 on/off할 수도 있고,&lt;br /&gt;②&lt;span&gt;&amp;nbsp;&lt;/span&gt;'onEnter','onLeave', 'onEnterBack','onLeaveBack'&lt;span&gt;&amp;nbsp;&lt;/span&gt;메서드를 이용하면 원하는 타이밍에 클래스를 on/off할 수도 있다.&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;// 1
ScrollTrigger.create({
  animation: intro,
  trigger: &quot;.sc-intro&quot;,
  start: &quot;top top&quot;,
  end: &quot;+=7000&quot;,
  scrub: true,
  pin: true,
  markers: false,
  toggleClass:{
    targets:&quot;#topBtn&quot;, className:&quot;hide&quot;
  }
})

// 2
ScrollTrigger.create({
  trigger:'body',
  start:&quot;1000px 0%&quot;,
  end:&quot;100% 100%&quot;,
  onEnter:function(){
    $('.header').addClass('fixed')
  },
  onLeaveBack:function(){
    $('.header').removeClass('fixed')
  }
})&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 id=&quot;-동영상을-background로-사용할-때&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  동영상을 Background로 사용할 때&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;position:absolute로 위치를 영역에 고정시키고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;z-index를 이용하여 뒤로 보냈다.&lt;br /&gt;비디오에&lt;span&gt;&amp;nbsp;&lt;/span&gt;autoplay,&lt;span&gt;&amp;nbsp;&lt;/span&gt;loop도 줬는데 ..! 자동재생이 될때가 있고 안될때가 있음  &lt;br /&gt;왜 그런지 찾아보니까 크롬에서 소리가 있는 동영상은 자동재생이 안된다고, 이럴땐 muted를 써줘야한다고 한다.&lt;/p&gt;
&lt;pre class=&quot;xml&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;&amp;lt;video src=&quot;./videourl&quot; autoplay loop muted&amp;gt;&amp;lt;/video&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 id=&quot;-visual-영역&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  Visual 영역&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;396&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BGteh/btsDhxmj5mU/ZLdwMb224xipfnacJDuCw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BGteh/btsDhxmj5mU/ZLdwMb224xipfnacJDuCw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BGteh/btsDhxmj5mU/ZLdwMb224xipfnacJDuCw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBGteh%2FbtsDhxmj5mU%2FZLdwMb224xipfnacJDuCw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;396&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;396&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;처음엔 각각 영역을 잡고 Background를 주었는데 이미지 영역과 텍스트 영역을 따로 잡고 코딩하는 방법이 더 간단하다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;-markup&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt; &lt;b&gt; &lt;/b&gt; MarkUp&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이미지가 absolute로 붙어서 마지막 이미지부터 보일 것이기 때문에 역순으로 코딩한다.&lt;/p&gt;
&lt;pre class=&quot;xml&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;&amp;lt;section class=&quot;sc-showcase&quot;&amp;gt;
  &amp;lt;h2 class=&quot;blind&quot;&amp;gt;비주얼영역&amp;lt;/h2&amp;gt;
  &amp;lt;div class=&quot;group-visual&quot;&amp;gt;
    &amp;lt;figure class=&quot;img-box&quot;&amp;gt;&amp;lt;img src=&quot;./asset/images/img-showcase03-pc.jpg&quot; alt&amp;gt;&amp;lt;/figure&amp;gt;
    &amp;lt;figure class=&quot;img-box&quot;&amp;gt;&amp;lt;img src=&quot;./asset/images/img-showcase02-pc.jpg&quot; alt&amp;gt;&amp;lt;/figure&amp;gt;
    &amp;lt;figure class=&quot;img-box&quot;&amp;gt;&amp;lt;img src=&quot;./asset/images/img-showcase01-pc.jpg&quot; alt&amp;gt;&amp;lt;/figure&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div class=&quot;group-text&quot;&amp;gt;
    &amp;lt;div class=&quot;text-bg&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;p class=&quot;t01&quot;&amp;gt;기록하고&amp;lt;/p&amp;gt;
    &amp;lt;p class=&quot;t02&quot;&amp;gt;증명하고&amp;lt;/p&amp;gt;
    &amp;lt;p class=&quot;t03&quot;&amp;gt;성장하기&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div class=&quot;desc&quot;&amp;gt;
    &amp;lt;div class=&quot;text-bg&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;p&amp;gt;
      엔터프라이즈블록체인은 블록체인 네트워크&amp;lt;br&amp;gt;
      DATA ID를 활용해 그 문제를 해결하고 새로운 방식을&amp;lt;br&amp;gt;
      제안하고자 합니다.
    &amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;-css&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt; &lt;b&gt; &lt;/b&gt; &amp;nbsp;CSS&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이미지 영역과 텍스트 영역은 absolute로 붙여주고, 각 영역의 너비와 높이를 잡아준다.&lt;br /&gt;포인트는 다른 영역의 높이는 100vh로 잡고, 이미지를 담는 div영역만 100%로 잡기 !&lt;br /&gt;그리고&lt;span&gt;&amp;nbsp;&lt;/span&gt;overflow:hidden;으로 height값이 잘리는 부분에서 넘치는 영역은 안보이게 한다.&lt;/p&gt;
&lt;pre class=&quot;scss&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;.sc-showcase{ 
    position: relative; 
    width: 100%; height: 100vh; 
}
.sc-showcase .group-visual{
    position: absolute; 
    top: 0; left: 0;
    width: 100%; height: 100vh; 
}
.sc-showcase .group-visual .img-box{
    position: absolute; 
    top: 0; left: 0;
    z-index: -2;
    width: 100%; height: 100%; 
    overflow: hidden; 
}
.sc-showcase .group-visual img{
    width: 100%; height: 100vh;
    object-fit:cover;
}
.sc-showcase .group-text{
    position:absolute;
    top: 0; left: 0;
    width: 100%; height: 100vh;
    .
    .
}

.sc-showcase .desc{
    position:absolute;
    top: 0; left: 0;
    width: 100%; height: 100vh;
    .
    .
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;-animation&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt; &lt;b&gt; &lt;/b&gt; &amp;nbsp;Animation&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이미지 넘어가는 타이밍이랑 텍스트 나타나고 사라지는 타이밍을 잘 배치해서 애니메이션을 만들어준다 .&lt;br /&gt;이미지 넘어가는건 100%였던 height값을 0으로 바꿔서 구현함.&lt;/p&gt;
&lt;pre class=&quot;groovy&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;showcase
    .addLabel('a')
    .fromTo(&quot;.sc-showcase .group-text .text-bg&quot;, {backgroundColor:&quot;rgba(0,0,0,0.0)&quot;}, {backgroundColor:&quot;rgba(0,0,0,0.6)&quot;,duration:20},&quot;a&quot;)
    .from(&quot;.sc-showcase .group-text&quot;, {autoAlpha:0,duration:20},&quot;a&quot;)
    

    .addLabel('b')
    .to(&quot;.sc-showcase .group-text .text-bg&quot;, {backgroundColor:&quot;rgba(0,0,0,0.0)&quot;,duration:20},&quot;b&quot;)
    .to(&quot;.sc-showcase .t01&quot;, {xPercent:100,duration:20},'b')
    .to(&quot;.sc-showcase .t03&quot;, {xPercent:-100,duration:20},'b')
    
    .addLabel('c')
    .to(&quot;.sc-showcase .t01&quot;, {autoAlpha:0,duration:20},'c')
    .to(&quot;.sc-showcase .t02&quot;, { autoAlpha:0,duration:20},'c')
    .to(&quot;.sc-showcase .t03&quot;, {autoAlpha:0,duration:20},'c')

    .to(&quot;.sc-showcase .img-box:nth-child(3)&quot;,{height:0,duration:20})
    
    .to(&quot;.sc-showcase .img-box:nth-child(2)&quot;,{height:0,duration:20})
    .to(&quot;.sc-showcase .desc .text-bg&quot;,{backgroundColor:&quot;rgba(0,0,0,0.4)&quot;, duration:20},)
    .from(&quot;.sc-showcase .desc&quot;,{autoAlpha:0,duration:20})&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 id=&quot;-data-영역-모션-분석&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  DATA 영역 모션 분석&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;396&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sKzRH/btsDjV7MyK7/MTtQKDgwgWxnylZJafxpfK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sKzRH/btsDjV7MyK7/MTtQKDgwgWxnylZJafxpfK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sKzRH/btsDjV7MyK7/MTtQKDgwgWxnylZJafxpfK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/sKzRH/btsDjV7MyK7/MTtQKDgwgWxnylZJafxpfK/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;396&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;396&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;①&lt;span&gt;&amp;nbsp;&lt;/span&gt;.group-hori&lt;span&gt;&amp;nbsp;&lt;/span&gt;영역이 수평으로 스크롤 됨, 마지막 카드는 고정&lt;br /&gt;②&lt;span&gt;&amp;nbsp;&lt;/span&gt;.group-scroll&lt;span&gt;&amp;nbsp;&lt;/span&gt;영역이 수직으로 스크롤 됨&lt;br /&gt;③ ②번이 진행되면서 카드 리스트2 의 첫번째 카드가 페이드인되면서 ①에서 고정된 카드를 덮음 (안보이게)&lt;br /&gt;④ 나머지 카드가 스크롤되어 올라오고, ③에서 나타난 카드 뒤로 겹쳐짐&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;시간을 가장 많이 잡아먹은 부분이었다..  &lt;br /&gt;모션자체는 구현할만 했는데 화면 너비나 높이가 줄어들면 자꾸 위치가 바뀌어서 힘들었다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 id=&quot;-컨텐츠-너비에-유동적으로-반응하는-가로-스크롤&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  컨텐츠 너비에 유동적으로 반응하는 가로 스크롤&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;396&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvrdrS/btsDkzpQAsA/0KcjPs4aXKYCqo9HIq2X0k/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvrdrS/btsDkzpQAsA/0KcjPs4aXKYCqo9HIq2X0k/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvrdrS/btsDkzpQAsA/0KcjPs4aXKYCqo9HIq2X0k/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bvrdrS/btsDkzpQAsA/0KcjPs4aXKYCqo9HIq2X0k/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;396&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;396&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;창 크기를 줄이거나 늘릴때도 가로 스크롤 컨텐츠의 끝점이 창 너비 끝점과 맞게 신경썼다.&lt;br /&gt;컨텐츠 너비와 화면너비를 변수에 넣어서 연산해보거나 방법은 여러가지였지만 여러가지 시도를 해본끝에&lt;br /&gt;가장 간단한 코드는 이거였다.&lt;/p&gt;
&lt;pre class=&quot;css&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;.to(&quot;.sc-economy .group-hori&quot;,{xPercent:-100,x:&quot;100vw&quot;,duration:4},&quot;a&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;①&lt;span&gt;&amp;nbsp;&lt;/span&gt;xPercent:-100: 컨텐츠의 너비만큼 왼쪽으로 밀어버린다&lt;br /&gt;②&lt;span&gt;&amp;nbsp;&lt;/span&gt;x:&quot;100vw&quot;: 왼쪽으로 밀었던걸 화면너비만큼 다시 오른쪽으로 땡겨온다&lt;br /&gt;이걸 동시에 실행하면 손쉽게 맞출수있다&lt;br /&gt;이렇게 쉬운걸 헤매다니 ..  &amp;zwj; ️&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 id=&quot;-맨-아래에서-top버튼-position-변화&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  맨 아래에서 Top버튼 Position 변화.&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Top버튼이&lt;span&gt;&amp;nbsp;&lt;/span&gt;position:fixed로 항상 같은 영역에 붙어있다가 푸터까지 스크롤이 내려오면 fixed 속성이 사라진다. 이 부분은 ScrollTrigger와 클래스 컨트롤로 쉽게 구현할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;scss&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;#topBtn a{
    position: fixed;
    bottom: 40px; right: 100px;
    .
    .
}
#topBtn a.fixed{
    position: absolute;
    right: 100px; bottom:100px;
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;ScrollTrigger.create({
    trigger: &quot;.footer&quot;,
    start: &quot;0% 100%&quot;,
    end: &quot;110% 100%&quot;,
    scrub: true,
    onEnter:function(){
        $('#topBtn a').addClass('fixed');
    },
    onLeaveBack:function(){
        $('#topBtn a').removeClass('fixed');
    }
});&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 id=&quot;-한-방향으로-계속-흘러가는-텍스트-배너&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  한 방향으로 계속 흘러가는 텍스트 배너&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;24&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LlgG4/btsDiOBcdYV/LWCu0eFxePUcNDHeTNsmm0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LlgG4/btsDiOBcdYV/LWCu0eFxePUcNDHeTNsmm0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LlgG4/btsDiOBcdYV/LWCu0eFxePUcNDHeTNsmm0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/LlgG4/btsDiOBcdYV/LWCu0eFxePUcNDHeTNsmm0/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;24&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;24&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;한 방향으로 끝없이 흘러가는 배너는 keyframe을 활용해서 구현해주었다.&lt;br /&gt;무한으로 텍스트가 나오는것처럼 보이지만 사실 트릭이다. 한 블럭 가면 다시 되돌아오는 구조로 만들면 됨.&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;&amp;lt;section class=&quot;sc-banner02&quot;&amp;gt;
  &amp;lt;h2 class=&quot;blind&quot;&amp;gt;Join us&amp;lt;/h2&amp;gt;
  &amp;lt;div class=&quot;banner-overflow&quot;&amp;gt;
    &amp;lt;span&amp;gt;JOIN &amp;lt;i&amp;gt;us&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;
    &amp;lt;span&amp;gt;JOIN &amp;lt;i&amp;gt;us&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;
    &amp;lt;span&amp;gt;JOIN &amp;lt;i&amp;gt;us&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;
    &amp;lt;span&amp;gt;JOIN &amp;lt;i&amp;gt;us&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;
    &amp;lt;span&amp;gt;JOIN &amp;lt;i&amp;gt;us&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;
    &amp;lt;span&amp;gt;JOIN &amp;lt;i&amp;gt;us&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;
    &amp;lt;span&amp;gt;JOIN &amp;lt;i&amp;gt;us&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;
    &amp;lt;span&amp;gt;JOIN &amp;lt;i&amp;gt;us&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;
    &amp;lt;span&amp;gt;JOIN &amp;lt;i&amp;gt;us&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;
    &amp;lt;span&amp;gt;JOIN &amp;lt;i&amp;gt;us&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;
    &amp;lt;span&amp;gt;JOIN &amp;lt;i&amp;gt;us&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;
    &amp;lt;span&amp;gt;JOIN &amp;lt;i&amp;gt;us&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Code Review</category>
      <author>codena</author>
      <guid isPermaLink="true">https://codena.tistory.com/43</guid>
      <comments>https://codena.tistory.com/43#entry43comment</comments>
      <pubDate>Wed, 10 Jan 2024 23:54:30 +0900</pubDate>
    </item>
    <item>
      <title>[Github 웹호스팅] 터미널 작성 코드</title>
      <link>https://codena.tistory.com/42</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;  github 업로드를 위한 핵심 코드&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1704884704092&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;1. git init (맨 처음만)
2. git add .
	2-2. git status (생략가능)
3. git commit -m &quot;first commit&quot;
4. git remote add origin https://github.com/CodenaBlog/파일 이름.git
	4-2. git remote -v (생략가능)
5. git push origin master&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;  코드 자세히 살펴보기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;  1. git init&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;init = initialize = 초기화 (git을 쓰기 위해 초기화를 한다는 의미이다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;맨 처음 프로잭트를 올릴때는 git init을 해주어야 함&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;165&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBkavN/btsDhLSeNeV/T9PdzueilhwKKOE00kZ92K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBkavN/btsDhLSeNeV/T9PdzueilhwKKOE00kZ92K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBkavN/btsDhLSeNeV/T9PdzueilhwKKOE00kZ92K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBkavN%2FbtsDhLSeNeV%2FT9PdzueilhwKKOE00kZ92K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;663&quot; height=&quot;165&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;165&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. git add .&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;git add는 git hub에 어떤 파일을 올릴지 선택하는 명령어인데 .(점)은 전부라는 뜻이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;만약에 파일 하나만 올리고 싶다면 -&amp;gt; git add index.html 이런식으로 작성 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; &lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;✔️&lt;/span&gt; Error : &lt;/b&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;LF will be replaced by CRLF in&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;원래는 git add . 를 하면 아무일도 일어나지 않는게 정상이지만, 만약 위와 같은 오류가 떴다면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;git config --global core.autocrlf input&lt;/b&gt; 을 넣어보자&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BClU0/btsDj35Hrto/N0TU3yrUOjWwNk8uIyiv7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BClU0/btsDj35Hrto/N0TU3yrUOjWwNk8uIyiv7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BClU0/btsDj35Hrto/N0TU3yrUOjWwNk8uIyiv7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBClU0%2FbtsDj35Hrto%2FN0TU3yrUOjWwNk8uIyiv7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;714&quot; height=&quot;369&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;451&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2-2. git status&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;git add .를 통해 선택 된 파일을 보여줌 (확인을 위한 과정이니 생략가능)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSgut9/btsDj3Y4MOT/l0rRMb2ez8joLR4qKrtWGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSgut9/btsDj3Y4MOT/l0rRMb2ez8joLR4qKrtWGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSgut9/btsDj3Y4MOT/l0rRMb2ez8joLR4qKrtWGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSgut9%2FbtsDj3Y4MOT%2Fl0rRMb2ez8joLR4qKrtWGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;663&quot; height=&quot;304&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;304&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;3. git&amp;nbsp;commit&amp;nbsp;-m&amp;nbsp;&quot;first&amp;nbsp;commit&quot;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;git commit은 히스토리를 만드는 명령어이고 &quot;first commit&quot;이라는 이름으로 업로딩 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음에 코드를 수하고 다시 덮어쓰기 저장을 해야할때는 second commit, third commit ~ 이런 식으로 저장해서 히스토리를 만들어 나가면 된다. (히스토리 이름은 본인이 원하는데로 써도 무관함. 별로 중요하지 않음)&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;81개 (본인 파일 개수) 파일이 변환되었다라고 뜨면 성공!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;624&quot; data-origin-height=&quot;196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bP78iQ/btsDdBJG2Pb/n6Kxvg3sgPftOgG0iHZwh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bP78iQ/btsDdBJG2Pb/n6Kxvg3sgPftOgG0iHZwh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bP78iQ/btsDdBJG2Pb/n6Kxvg3sgPftOgG0iHZwh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbP78iQ%2FbtsDdBJG2Pb%2Fn6Kxvg3sgPftOgG0iHZwh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;662&quot; height=&quot;208&quot; data-origin-width=&quot;624&quot; data-origin-height=&quot;196&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;4. git&amp;nbsp;remote&amp;nbsp;add&amp;nbsp;origin&amp;nbsp;https://github.com/CodenaBlog/HansumEQL.git&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;959&quot; data-origin-height=&quot;396&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VRM9e/btsDfopK72c/gg9KuGxhBiTxWt922SS9Wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VRM9e/btsDfopK72c/gg9KuGxhBiTxWt922SS9Wk/img.png&quot; data-alt=&quot;github에서 코드를 복붙하면 된다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VRM9e/btsDfopK72c/gg9KuGxhBiTxWt922SS9Wk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVRM9e%2FbtsDfopK72c%2Fgg9KuGxhBiTxWt922SS9Wk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;717&quot; height=&quot;296&quot; data-origin-width=&quot;959&quot; data-origin-height=&quot;396&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;github에서 코드를 복붙하면 된다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;내가 만든 파일을 github에 연결시키는 코드이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;https://github.com/CodenaBlog/HansumEQL.git 의 repositories로 내 소스코드를 보낸다는 뜻이고&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;터미널에서 엔터를 눌렀을때 아무 변화도 없으면 성공!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;✔️&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Error : &lt;/b&gt;git remote origin aleady exists&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;기존에 연결되어 있는 레파지토리가 다시 새로운 레파지토리에 소스코드를 올리려고 하면 발생되는 에러이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;51&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXv47P/btsEigDgnyl/VooBYmhZaHDzUrWEGx2jA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXv47P/btsEigDgnyl/VooBYmhZaHDzUrWEGx2jA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXv47P/btsEigDgnyl/VooBYmhZaHDzUrWEGx2jA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXv47P%2FbtsEigDgnyl%2FVooBYmhZaHDzUrWEGx2jA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;697&quot; height=&quot;51&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;51&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;해결방법은 간단하다. 위와 같이 원격 저장소와의 연결이 되어 있다고 하니 기존의 연결을 끊고 새로 올리고 싶은 곳에 소스코드를 올리면 된다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt; 1.&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;color: #000000;&quot;&gt;기존에 연&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;결되어 있는 원격 저장소와의 연결을 끊어줌&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1706797747203&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git remote remove origin&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt; 2.&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;git remote add origin [새롭게 연결할 깃 레파지토리 주소] 입력&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;3. &lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;git remote -v&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;4.&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;git push origin master&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;4-2. git remote -v&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;연동이 됐는지 확인하는 방법 (선택 사항)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;651&quot; data-origin-height=&quot;145&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wxlZm/btsDkxS9Bzr/SANfniclAa7Xuv09rgijCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wxlZm/btsDkxS9Bzr/SANfniclAa7Xuv09rgijCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wxlZm/btsDkxS9Bzr/SANfniclAa7Xuv09rgijCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwxlZm%2FbtsDkxS9Bzr%2FSANfniclAa7Xuv09rgijCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;651&quot; height=&quot;145&quot; data-origin-width=&quot;651&quot; data-origin-height=&quot;145&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;5. git push origin master&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;github로 소스코드 보내기~&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;마지막에&amp;nbsp; *[new branch]&amp;nbsp; &amp;nbsp; master -.&amp;gt; master 가 나오면 성공!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;658&quot; data-origin-height=&quot;223&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKgxOv/btsDfYRVUft/n3Q1HkUDvjK17bRppHW10K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKgxOv/btsDfYRVUft/n3Q1HkUDvjK17bRppHW10K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKgxOv/btsDfYRVUft/n3Q1HkUDvjK17bRppHW10K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKgxOv%2FbtsDfYRVUft%2Fn3Q1HkUDvjK17bRppHW10K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;658&quot; height=&quot;223&quot; data-origin-width=&quot;658&quot; data-origin-height=&quot;223&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;✔️&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Error : &lt;/b&gt;&lt;span&gt;&lt;span&gt;failed to push some refs to ' ~ '&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #555555; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;git push를 했을때 아래와 같이 error: failed to push some refs to 에러가 발생하는 경우가 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;607&quot; data-origin-height=&quot;137&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLnqGA/btsEjITRTKn/2NvjKpTCESW2xJnN7KMku1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLnqGA/btsEjITRTKn/2NvjKpTCESW2xJnN7KMku1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLnqGA/btsEjITRTKn/2NvjKpTCESW2xJnN7KMku1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLnqGA%2FbtsEjITRTKn%2F2NvjKpTCESW2xJnN7KMku1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;607&quot; height=&quot;137&quot; data-origin-width=&quot;607&quot; data-origin-height=&quot;137&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;원격저장소(github)&lt;/b&gt;에 내&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;로컬(내컴퓨터)&lt;/b&gt;에는 없는 파일이 있을 때 내 파일을 push 할 면 발생하는 오류이다.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이럴땐&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;원격저장소&lt;/b&gt;에서 내&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;로컬&lt;/b&gt;에 저장하지 않은 파일을 pull한 후&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;원격저장소&lt;/b&gt;에 다시 push를 해야한다.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 상황&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;내 컴퓨터(local)에서 f1.py파일을 수정하였다. 이후 github에 수정한 내용을 push하려고 했지만, 팀원이 f2.py 파일을 올려놨다. 이 경우 나의 push가 제한된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_edited_슬라이드1.JPG&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;207&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJ1nSp/btsEftRdX2Z/U0505gPJZQ52RF73kHUsm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJ1nSp/btsEftRdX2Z/U0505gPJZQ52RF73kHUsm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJ1nSp/btsEftRdX2Z/U0505gPJZQ52RF73kHUsm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJ1nSp%2FbtsEftRdX2Z%2FU0505gPJZQ52RF73kHUsm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;519&quot; height=&quot;207&quot; data-filename=&quot;edited_edited_슬라이드1.JPG&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;207&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. pull&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;먼저 원격저장소에 f2.py를 내 로컬로 가져와야된다. 즉 원격저장소를 pull 해야한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_edited_슬라이드2.JPG&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byQzuu/btsEjTueIci/nkQhVFGdIZkBz5gXG4HX60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byQzuu/btsEjTueIci/nkQhVFGdIZkBz5gXG4HX60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byQzuu/btsEjTueIci/nkQhVFGdIZkBz5gXG4HX60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyQzuu%2FbtsEjTueIci%2FnkQhVFGdIZkBz5gXG4HX60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;519&quot; height=&quot;206&quot; data-filename=&quot;edited_edited_슬라이드2.JPG&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;206&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1706797385136&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git pull origin master&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. push&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이후에는 push가 가능해지므로 add,commit,push를 해서 내가 반영하고 싶은 수정사항을 반영하면 완성!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_edited_edited_슬라이드3.JPG&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;209&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmAwWT/btsEf5CGZGD/HRZW0qCoFU57lCOcpiKgzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmAwWT/btsEf5CGZGD/HRZW0qCoFU57lCOcpiKgzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmAwWT/btsEf5CGZGD/HRZW0qCoFU57lCOcpiKgzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdmAwWT%2FbtsEf5CGZGD%2FHRZW0qCoFU57lCOcpiKgzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;522&quot; height=&quot;209&quot; data-filename=&quot;edited_edited_edited_슬라이드3.JPG&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;209&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1706797372379&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git push origin master&lt;/code&gt;&lt;/pre&gt;</description>
      <category>ETC</category>
      <author>codena</author>
      <guid isPermaLink="true">https://codena.tistory.com/42</guid>
      <comments>https://codena.tistory.com/42#entry42comment</comments>
      <pubDate>Wed, 10 Jan 2024 20:11:51 +0900</pubDate>
    </item>
    <item>
      <title>linear-gradient 속성에 transition 적용하기</title>
      <link>https://codena.tistory.com/41</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #2e2e2e; text-align: start;&quot;&gt;CSS&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;transition&lt;span style=&quot;background-color: #ffffff; color: #2e2e2e; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;속성으로 엘레멘트의 위치, 크기, 컬러 등이 변경될 때 부드러운 전환 효과를 넣을 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #2e2e2e; text-align: start;&quot;&gt;하지만 일반적인 백그라운드 컬러와 달리,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;linear-gradient&lt;span&gt;&amp;nbsp;&lt;/span&gt;를 사용한 백그라운드 컬러에는&lt;span&gt;&amp;nbsp;&lt;/span&gt;transition&lt;span&gt;&amp;nbsp;&lt;/span&gt;속성값이 적용되지 않는다&lt;span style=&quot;background-color: #ffffff; color: #2e2e2e; text-align: start;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 여기서 트릭을 사용해야 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 부모 요소에 가상 요소인 ::before 혹은 ::after를 만든다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;변화 하고 싶은 색을 linear-gradient를 사용해 입력한다.&lt;/li&gt;
&lt;li&gt;transition의 time값을 지정한다.&lt;/li&gt;
&lt;li&gt;absolute을 사용해 부모 요소와 포지션이 완전히 겹치도록 만든다.&lt;/li&gt;
&lt;li&gt;opacity&amp;nbsp;값은 0으로 설정한다. (중요!!)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 마지막으로 hover했을때 opacity가 1이되도록 속성을 추가하면 끝이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;gradient1&quot;&gt;
&lt;p class=&quot;gradient-text1&quot;&gt;Smooth gadient&lt;/p&gt;
&lt;/div&gt;

&lt;style&gt;
.gradient1{
    margin: 0 auto;
    position: relative;
    width: 600px;
    height: 150px;
    background: #ccc;
    border-radius: 30px;
    z-index: 0;
    &amp;::after {
        content: '';
        opacity: 0;
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        border-radius: 30px;
        transition: all 0.3s linear;
        background: linear-gradient(180deg, rgba(0,97,255,1) 0%, rgba(141,226,255,1) 100%);         
        z-index: -1;
      }
    &amp;:hover::after{
        opacity: 1;
    }
    .gradient-text1{
        display: flex;
        justify-content: center;
        align-items: center;
        font-size: 3em;
        font-weight: 600;
        width: 100%;
        height: 100%;
        color: rgba(255,255,255,0.4);
        z-index: 1;
    }
}
&lt;/style&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그라디언트를 적용하고자 하는 요소의 가상 요소를 만들어 opacity 0으로 보이지 않게 했다가 hover를 하면 opacity 1로 나타나도록 하는 방법을 이용해 linear-gradient에 부드러운 움직임 효과를 넣는 방법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1703494525768&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.gradient1{
    position: relative;
    width: 600px;
    height: 150px;
    background: #ccc;
    &amp;amp;::after {
        content: '';
        opacity: 0;
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        transition: all 0.3s linear;
        background: linear-gradient(180deg, rgba(0,97,255,1) 0%, rgba(141,226,255,1) 100%);         
      }
    &amp;amp;:hover::after{
        opacity: 1;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>HTML &amp;amp; SCSS (CSS3)</category>
      <author>codena</author>
      <guid isPermaLink="true">https://codena.tistory.com/41</guid>
      <comments>https://codena.tistory.com/41#entry41comment</comments>
      <pubDate>Mon, 25 Dec 2023 18:15:33 +0900</pubDate>
    </item>
    <item>
      <title>CSS로 아이콘과 텍스트를 수평 정렬하기</title>
      <link>https://codena.tistory.com/40</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;웹에서 아이콘(icon)과 텍스트(text)를 함께 배치해야 하는 경우가 있다. 예를 들어, 버튼(button) 안에 아이콘과 텍스트가 같이 있으면 사용자에게 해당 버튼의 용도를 좀 더 빠르게 전달할 수 있고, 뿐만 아니라 같은 버튼인데 데스크탑 화면에서는 텍스트만 모바일 화면에서는 아이콘만 보여주어야 할 때도 있다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이럴 때 사용할 수 있는 CSS 스타일링 요령에 대해서 알아보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 id=&quot;html-마크업&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;1. HTML 마크업&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;아이콘과 텍스트를 나란히 배치하는 HTML 코드를 작성하였다. 아이콘은 SVG를 텍스트는 &amp;lt;span&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;태그를 사용하였다.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #00214d; text-align: start;&quot; data-language=&quot;html&quot;&gt;
&lt;pre class=&quot;html xml&quot; style=&quot;background-color: #2d2d2d; color: #cccccc; text-align: left;&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;&amp;lt;div&amp;gt;
  &amp;lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot;&amp;gt;
    &amp;lt;path d=&quot;M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2&quot; /&amp;gt;
    &amp;lt;circle cx=&quot;12&quot; cy=&quot;7&quot; r=&quot;4&quot; /&amp;gt;&amp;lt;/svg
  &amp;gt;&amp;lt;span&amp;gt; 내 프로필 &amp;lt;/span&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 id=&quot;기본-스타일링&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;2. 기본 스타일링&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;정렬을 하기 전에 중요한건 우선 SVG 이미지와 텍스트의 크기를 비슷하게 맞춰주는 것이다.&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt; 아이콘 크기와 텍스트 크기가 반드시 정확히 동일할 필요는 없고 사용 사례에 따라서 약간의 차이는 있어도 된다.&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #00214d; text-align: start;&quot; data-language=&quot;css&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;background-color: #2d2d2d; color: #cccccc; text-align: left;&quot;&gt;&lt;code&gt;svg {
  width: 4rem;
  height: 4rem;
}

span {
  font-size: 4rem;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;contents-align1&quot;&gt;
  &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot;&gt;
    &lt;path d=&quot;M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2&quot; /&gt;
    &lt;circle cx=&quot;12&quot; cy=&quot;7&quot; r=&quot;4&quot; /&gt;
  &lt;/svg&gt;&lt;span&gt;
    내 프로필
  &lt;/span&gt;
&lt;/div&gt;

&lt;style&gt;
.contents-align1 svg {
  width: 3rem;
  height: 3rem;
}

.contents-align1 span {
  font-size: 3rem;
}

.contents-align1 {
  width: 100%;
  height: auto;
  padding: 30px 0;
  border: 1px solid #ddd;
}
&lt;/style&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;위의 화면을 보면 아이콘과 텍스트의 크기를 맞췄지만 정렬이 약간 틀어져있는 것을 볼 수 있다.&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 id=&quot;vertical-align&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;3. vertical-align&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 어떻게 아이콘과 텍스트를 수평으로 나란히 정렬할 수 있을까?&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로 SVG도 인라인(inline) 요소이고, 텍스트도 인라인 요소이다. 따라서 인라의 요소를 수평 방향으로 정렬을 맞춰주는 CSS의&lt;span&gt;&amp;nbsp;&lt;/span&gt;vertical-align&lt;span&gt;&amp;nbsp;&lt;/span&gt;속성을 사용다면 된다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;두 요소에 동일하게&lt;span&gt;&amp;nbsp;&lt;/span&gt;vertical-align&lt;span&gt;&amp;nbsp;&lt;/span&gt;속성을&lt;span&gt;&amp;nbsp;&lt;/span&gt;middle로 설정해주면 아이콘과 이미지의 정렬이 맞는 것을 볼 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #00214d; text-align: start;&quot; data-language=&quot;css&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;background-color: #2d2d2d; color: #cccccc; text-align: left;&quot;&gt;&lt;code&gt;svg,
span {
  vertical-align: middle;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;contents-align2&quot;&gt;
  &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot;&gt;
    &lt;path d=&quot;M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2&quot; /&gt;
    &lt;circle cx=&quot;12&quot; cy=&quot;7&quot; r=&quot;4&quot; /&gt;
  &lt;/svg&gt;&lt;span&gt;
    내 프로필
  &lt;/span&gt;
&lt;/div&gt;

&lt;style&gt;
.contents-align2 svg {
  width: 3rem;
  height: 3rem;
  vertical-align: middle;
}

.contents-align2 span {
  font-size: 3rem;
  vertical-align: middle;
}

.contents-align2 {
  width: 100%;
  height: auto;
  padding: 30px 0;
  border: 1px solid #ddd;
}
&lt;/style&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 이 스타일 방법의 단점은 아이콘과 텍스트 간의 거리를 정확히 원하는 값으로 설정하기 어렵다. 왜냐하면 인라인 요소 간의 간격은&lt;span&gt;&amp;nbsp;&lt;/span&gt;letter-spacing&lt;span&gt;&amp;nbsp;&lt;/span&gt;속성이 결정하는데 이 속성값을 바꿀 경우 단어 간의 간격에도 영향을 주게 되기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-size: 1.62em; letter-spacing: -1px;&quot;&gt;4. Flexbox&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 번에는 Flexbox(플렉스박스)를 활용해서 아이콘과 텍스트를 수평으로 나란히 정렬해 보았다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;아이콘과 이미지의 부모 요소를 Flexbox로 만들고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;align-items&lt;span&gt;&amp;nbsp;&lt;/span&gt;속성을&lt;span&gt;&amp;nbsp;&lt;/span&gt;center로 설정해주면 되는데 이 방법은&lt;span&gt;&amp;nbsp;&lt;/span&gt;gap&lt;span&gt;&amp;nbsp;&lt;/span&gt;속성을 통해서 아이콘과 이미지 간의 간격을 자유롭게 조정할 수도 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #00214d; text-align: center;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #00214d; text-align: start;&quot; data-language=&quot;css&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;background-color: #2d2d2d; color: #cccccc; text-align: left;&quot;&gt;&lt;code&gt;div {
  display: flex;
  align-items: center;
  gap: 1rem;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;contents-align3&quot;&gt;
  &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot;&gt;
    &lt;path d=&quot;M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2&quot; /&gt;
    &lt;circle cx=&quot;12&quot; cy=&quot;7&quot; r=&quot;4&quot; /&gt;
  &lt;/svg&gt;&lt;span&gt;
    내 프로필
  &lt;/span&gt;
&lt;/div&gt;

&lt;style&gt;
.contents-align3 svg {
  width: 3rem;
  height: 3rem;
  vertical-align: middle;
}

.contents-align3 span {
  font-size: 3rem;
  vertical-align: middle;
}

.contents-align3 {
  display: flex;
  align-items: center;
  gap: 2rem;
  width: 100%;
  height: auto;
  padding: 30px 0;
  border: 1px solid #ddd;
}
&lt;/style&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 스타일 방법은 특히 버튼(button)이나 태그(tag), 레이블(label)과 같은 UI를 구현할 때 유용하다.&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 id=&quot;응용-세로-배치&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;5. 응용: 세로 배치&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Flexbox를 활용하면 아이콘과 텍스트를 가로, 세로 나란히 배치할 수 도 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #00214d; text-align: start;&quot; data-language=&quot;css&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;background-color: #2d2d2d; color: #cccccc; text-align: left;&quot;&gt;&lt;code&gt;svg {
  width: 4rem;
  height: 4rem;
  padding: 8px;  border: 2px solid;  border-radius: 9999px;}

span {
  font-size: 2rem;}

div {
  display: flex;
  flex-direction: column;  align-items: center;
  gap: 1rem;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;contents-align4&quot;&gt;
  &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot;&gt;
    &lt;path d=&quot;M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2&quot; /&gt;
    &lt;circle cx=&quot;12&quot; cy=&quot;7&quot; r=&quot;4&quot; /&gt;
  &lt;/svg&gt;&lt;span&gt;
    내 프로필
  &lt;/span&gt;
&lt;/div&gt;

&lt;style&gt;
.contents-align4 svg {
  width: 3rem;
  height: 3rem;
  vertical-align: middle;
   padding: 8px;
  border: 2px solid;
  border-radius: 9999px;
}

.contents-align4 span {
  font-size: 1.5rem;
  vertical-align: middle;
}

.contents-align4 {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1rem;
  width: 100%;
  height: auto;
  padding: 30px 0;
  border: 1px solid #ddd;
}
&lt;/style&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>HTML &amp;amp; SCSS (CSS3)</category>
      <author>codena</author>
      <guid isPermaLink="true">https://codena.tistory.com/40</guid>
      <comments>https://codena.tistory.com/40#entry40comment</comments>
      <pubDate>Fri, 1 Dec 2023 00:34:15 +0900</pubDate>
    </item>
    <item>
      <title>grid(3)</title>
      <link>https://codena.tistory.com/38</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;grid의 정렬 속성에 대하여 알아보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. auto-fill과 auto-fit&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;auto-fill과 auto-fit은 column의 개수를 미리 정하지 않고 설정된 너비가 허용하는 한 최대한 셀을 채울 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;따라서 반응형을 보다 쉽게 만들 수 있고 repeat() 함수와 minmax() 함수랑 궁합이 잘 맞는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;.container {
	grid-template-columns: repeat(auto-fill, minmax(20%, auto));
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;auto-fil 의 크기를 20%로 설정했으므로, 1개의 row에는 5개의 셀이 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image (19).png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;307&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czQRQZ/btsAJzAA8tt/qRekCuKR8oRvLUprvMhL6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czQRQZ/btsAJzAA8tt/qRekCuKR8oRvLUprvMhL6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czQRQZ/btsAJzAA8tt/qRekCuKR8oRvLUprvMhL6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczQRQZ%2FbtsAJzAA8tt%2FqRekCuKR8oRvLUprvMhL6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;307&quot; data-filename=&quot;image (19).png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;307&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;auto-fill과 auto-fit 의 차이는&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;auto-fil은 크기보다 셀의 개수가 부족하면, 공간이 남게 되고&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image (20).png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Pkb1M/btsAKTLQcfA/NALkzUR7CCCmTfYU5dDvN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Pkb1M/btsAKTLQcfA/NALkzUR7CCCmTfYU5dDvN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Pkb1M/btsAKTLQcfA/NALkzUR7CCCmTfYU5dDvN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPkb1M%2FbtsAKTLQcfA%2FNALkzUR7CCCmTfYU5dDvN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;124&quot; data-filename=&quot;image (20).png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;124&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 auto-fit을 사용하면, 남는 공간을 채운다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image (21).png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;129&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sucjt/btsANNKlk7l/2h03xF6UUG3Y9KhNvX28a1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sucjt/btsANNKlk7l/2h03xF6UUG3Y9KhNvX28a1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sucjt/btsANNKlk7l/2h03xF6UUG3Y9KhNvX28a1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsucjt%2FbtsANNKlk7l%2F2h03xF6UUG3Y9KhNvX28a1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;129&quot; data-filename=&quot;image (21).png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;129&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. row-gap / column-gap / gap&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gap은 행과 행, 열과 열 사이에 간격을 지정해줄 수 있다. 더 정확히는, grid Line의 두께를 지정해주는 것이다.&lt;/p&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;.container {
	display: grid;
	grid-template-columns: repeat(3, 130px);
	grid-template-rows: repeat(2, 130px);
	column-gap: 30px;
	row-gap: 30px;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image (22).png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1421&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xt01H/btsAMU34mKw/MxHU0bW2G6kPKg4a6KFJJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xt01H/btsAMU34mKw/MxHU0bW2G6kPKg4a6KFJJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xt01H/btsAMU34mKw/MxHU0bW2G6kPKg4a6KFJJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxt01H%2FbtsAMU34mKw%2FMxHU0bW2G6kPKg4a6KFJJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1421&quot; data-filename=&quot;image (22).png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1421&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. align-content / justify-content&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;grid의 정렬 또한 flex의 정렬과 같은 테그를 사용한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image (23).png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GA4kx/btsAM0Dali8/2wgjyAOiSvEDwxfKSVKpvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GA4kx/btsAM0Dali8/2wgjyAOiSvEDwxfKSVKpvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GA4kx/btsAM0Dali8/2wgjyAOiSvEDwxfKSVKpvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGA4kx%2FbtsAM0Dali8%2F2wgjyAOiSvEDwxfKSVKpvk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1158&quot; data-filename=&quot;image (23).png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세로축으로 정렬하는 align-content와 가로축으로 정렬하는 justify-content이 있고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용할 수 있는 값도 start, center, end, space-around, space-between, space-evenly, stretch로 똑같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image (24).png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1513&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsEgCo/btsANtynYU2/WrBBAx7weH2DrnKYU7AJ50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsEgCo/btsANtynYU2/WrBBAx7weH2DrnKYU7AJ50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsEgCo/btsANtynYU2/WrBBAx7weH2DrnKYU7AJ50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsEgCo%2FbtsANtynYU2%2FWrBBAx7weH2DrnKYU7AJ50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1513&quot; data-filename=&quot;image (24).png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1513&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>HTML &amp;amp; SCSS (CSS3)</category>
      <author>codena</author>
      <guid isPermaLink="true">https://codena.tistory.com/38</guid>
      <comments>https://codena.tistory.com/38#entry38comment</comments>
      <pubDate>Thu, 23 Nov 2023 01:22:11 +0900</pubDate>
    </item>
  </channel>
</rss>