<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>dmk-dev-team.log</title>
        <link>https://velog.io/</link>
        <description>Datamarketing Dev Team</description>
        <lastBuildDate>Fri, 13 May 2022 08:14:54 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. dmk-dev-team.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/dmk-jongwho" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Tailwind CSS 적용기 2편 - 개발자가 퍼블리싱 하는 방법(Feat.TailwindCSS & Figma)]]></title>
            <link>https://velog.io/@dmk-jongwho/Tailwind-CSS-%EC%A0%81%EC%9A%A9%EA%B8%B0-2%ED%8E%B8-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%ED%8D%BC%EB%B8%94%EB%A6%AC%EC%8B%B1-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95Feat.TailwindCSS-Figma</link>
            <guid>https://velog.io/@dmk-jongwho/Tailwind-CSS-%EC%A0%81%EC%9A%A9%EA%B8%B0-2%ED%8E%B8-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%ED%8D%BC%EB%B8%94%EB%A6%AC%EC%8B%B1-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95Feat.TailwindCSS-Figma</guid>
            <pubDate>Fri, 13 May 2022 08:14:54 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><em>지난 글 보기</em> </p>
</blockquote>
<ol>
<li><strong><a href="https://velog.io/@dmk-jongwho/Tailwind-CSS-%EC%A0%81%EC%9A%A9%EA%B8%B01%ED%8E%B8-%EC%84%A4%EC%B9%98-%EC%82%AC%EC%9A%A9">Tailwind CSS 적용기1편 (설치, 사용)</a></strong><blockquote>
</blockquote>
</li>
</ol>
<h1 id="tailwindfigma">Tailwind&amp;Figma</h1>
<hr>
<p> 지난 포스트에서는 TailwindCSS를 React환경에 적용하는 방법을 소개 했었습니다. 이 포스트에서는 </p>
<p><a href="https://tailwindcss.com/">Tailwind</a>와 <a href="https://www.figma.com/">Figma</a>를 통해 퍼블리싱 작업을 한 과정을 소개하려고 합니다.</p>
<h2 id="😦퍼블리싱을-해라">😦퍼블리싱을 해라!</h2>
<hr>
<p> 이번에 신규 프로젝트의 Front-end개발을 지원하게 되었습니다. 그런데 저에게 주어진 것은 Figma 프로젝트와 화면설계서가 전부였습니다. </p>
<p align="center">
  <img src="https://media4.giphy.com/media/l3q2K5jinAlChoCLS/giphy.gif?cid=ecf05e47lkm8j2nl1771xb1pha7n9jpfb96wsuwngj2k67x0&rid=giphy.gif&ct=g" style="margin-bottom:2px;" alt="Hmm?"/>
  출처 : <a href="https://giphy.com/gifs/mashable-l3q2K5jinAlChoCLS">GIPHY</a>
</p> 

<p> 화면 요소를 일일히 만드는 작업은 해본 적 없었던 저는 Figma에서 각 요소의 Inspect를 보며 Tailwind 클래스를 작성해야 하는구나..하고 생각하고 있었습니다. 그래서 개발자답게 좀 더 쉬운 방법을 찾아보았습니다</p>
<h2 id="😮figma-plugin">😮Figma Plugin</h2>
<hr>
<p>Figma는 굉장히 다양한 무료 Plugin들을 지원합니다.</p>
<p align="center">
  <img src="https://velog.velcdn.com/images/dmk-jongwho/post/b323a6bf-3ed1-4654-bbad-b479a922f6bd/image.png" style="margin-bottom:2px;" alt="Tailwind에 대한 수많은 플러그인들"/>
  Tailwind에 대한 수많은 플러그인들
</p> 

<p> 그 중에 <a href="https://www.figma.com/community/plugin/1049994768493726219">Inspect - Export to HTML, React, TailwindCSS</a> 라는 플러그인을 사용해보았습니다. 이 플러그인은 피그마의 요소를 HTML 이나 JSX로 변환해주고, Tailwind에 적용할 수 있도록 클래스를 작성해주거나, 인라인 스타일을 작성해주는 강력한 플러그인입니다.</p>
<h3 id="사용방법">사용방법</h3>
<p align="center">
  <img src="https://velog.velcdn.com/images/dmk-jongwho/post/dc093026-701a-4c20-90cc-42a964044219/image.png" style="margin-bottom:2px;" alt="플러그인 사용방법"/>
  플러그인 사용방법
</p> 

<p> 사용방법은 Tailwind로 추출하고자 하는 Figma 요소를 우클릭해서 plugins &gt; Inspect - Export to HTML...을 클릭하면 다음과 같은 화면이 나옵니다.</p>
<p align="center">
  <img src="https://velog.velcdn.com/images/dmk-jongwho/post/a9f38027-7dfc-4ec2-aae0-8616a831f5e7/image.png" style="margin-bottom:2px;" alt="HTML + Tailwind"/>
  HTML + Tailwind
</p> 

<p> 선택한 요소가 HTML + Tailwind형태로 출력됩니다. 이 정도로도 놀라운 기능이지만, 우리는 React를 사용하기 때문에 JSX(TSX) 양식이 필요했습니다. 그런데 이 플러그인은 JSX도 지원합니다.</p>
<p align="center">
  <img src="https://velog.velcdn.com/images/dmk-jongwho/post/98247efe-96a5-43c4-a5bb-c8cbc734b647/image.png" style="margin-bottom:2px;" alt="JSX + Tailwind"/>
  JSX + Tailwind
</p> 

<p> 위 추출한 결과를 Preview로 확인할 수 있고, Asset 요소가 있다면 별도로 다운받을 수 있도록 하는 기능도 지원합니다.</p>
<p align="center">
  <img src="https://velog.velcdn.com/images/dmk-jongwho/post/76c1e030-0b88-4bcb-8a5e-edf10f37f90d/image.png" style="margin-bottom:2px;" alt="프리뷰 기능"/>
  프리뷰 기능
</p>
<p align="center">
  <img src="https://velog.velcdn.com/images/dmk-jongwho/post/f5ecf857-d06c-44e5-9935-b34ff947d3f4/image.png" style="margin-bottom:2px;" alt="Asset 추출 기능"/>
  Asset 추출 기능
</p>


<h3 id="프로젝트에-적용">프로젝트에 적용</h3>
<p> 위 코드를 복사해서 프로젝트 코드에 붙여넣기 하면 끝이다. 프로젝트에 적용하면 다음과 같이 나옵니다.</p>
<p align="center" display="flex">
  <img src="https://velog.velcdn.com/images/dmk-jongwho/post/66f7a8b2-3369-4d7f-8978-1c5ab1a8f837/image.png" alt="결과" width="400px" heigh="400px"/>
   <img src="https://velog.velcdn.com/images/dmk-jongwho/post/372a6a10-6c79-4a43-8f54-e7bc406a6f6e/image.png" alt="결과" width="400px" heigh="400px"/>
</p>

<p> 피그마 요소하고 비교해보면 조금씩 차이는 있지만, 손쉽게 화면 요소를 작성할 수 있었습니다. 이제 화면에 맞게 조금씩 스타일을 수정해주고, 이미지 연결하고, 색상은 Tailwind config에 정의해놓은 것으로 변환해주면 다음과 같이 요소가 완성된다.</p>
<p align="center">
  <img src="https://velog.velcdn.com/images/dmk-jongwho/post/eccc467b-713f-4b49-922e-196a47922be6/image.png" style="margin-bottom:2px;" alt="완성된 요소"/>
  완성된 요소
</p>


<h2 id="⚙️피그마-스타일가이드--tailwindcss-config">⚙️피그마 스타일가이드 &amp; TailwindCSS Config</h2>
<hr>
<p> 또한 Figma 파일에 스타일가이드가 있다면, Tailwind config에서 상세하게 프리셋을 설정해줄 수 있습니다.</p>
<p align="center">
  <img src="https://velog.velcdn.com/images/dmk-jongwho/post/e52f8bdf-82e6-44f4-8fcf-0839105fb58b/image.png" style="margin-bottom:2px;" alt="프로젝트 스타일가이드"/>
  프로젝트 스타일가이드
</p>

<h3 id="색상">색상</h3>
<pre><code class="language-jsx">// tailwind.config.js
module.exports = {
  ...,
  theme: {
    extend: {
      ...,
      colors: {
        accent: {
          DEFAULT: &#39;#7F43F5&#39;,
          1: &#39;#9364F2&#39;,
          2: &#39;#A884EF&#39;,
          3: &#39;#BCA4EB&#39;,
          4: &#39;#D0C5E8&#39;,
          5: &#39;rgba(0, 0, 0, 0.1)&#39;,
        },
        gray: {
          DEFAULT: &#39;#FFFFFF&#39;,
          1: &#39;#E5E5E5&#39;,
          2: &#39;#AEB0B4&#39;,
          3: &#39;#707885&#39;,
          4: &#39;#353C49&#39;,
        },
        black: &#39;#000000&#39;,
        bg1: &#39;#F6F9FF&#39;,
        line: &#39;#E5E5E5&#39;,
        text: {
          DEFAULT: &#39;#353C49&#39;,
          1: &#39;#707885&#39;,
          2: &#39;#AEB0B4&#39;,
          3: &#39;#7F43F5&#39;,
          4: &#39;#5B75EC&#39;,
          5: &#39;#EC6A65&#39;,
          6: &#39;#399B54&#39;,
        },
        placeholder: &#39;#B5B5B5&#39;,
        googleButton: &#39;#F5F5F5&#39;,
        toast: &#39;#79D1DF&#39;,
      },
      ...,
    },
  },
...,
}</code></pre>
<p> 색상 설정은 <code>colors</code> 로 정의해서 사용합니다. <code>key</code>는 색상 분류이고, <code>value</code>는 색상값입니다. 위 스타일가이드에서 <strong>Gray 0~4, Black</strong>, <strong>Accent 0~4, Black</strong> 과 <strong>Text 0~7</strong> 으로 정의된 색상은 같은 분류에 여러 값이 있는 것이라 value를 <code>object</code>로 하여 세분화를 해주었습니다.</p>
<h3 id="간격">간격</h3>
<pre><code class="language-jsx">// tailwind.config.js
module.exports = {
    ...,
  theme: {
    extend: {
            ...,
      },
      spacing: {
        &#39;1oct&#39;: &#39;8px&#39;,
        &#39;2oct&#39;: &#39;16px&#39;,
        &#39;3oct&#39;: &#39;24px&#39;,
        &#39;4oct&#39;: &#39;32px&#39;,
        &#39;5oct&#39;: &#39;48px&#39;,
        &#39;6oct&#39;: &#39;64px&#39;,
        &#39;7oct&#39;: &#39;80px&#39;,
      },
    },
  },
  ...,
}</code></pre>
<p> 간격 설정은 <code>spacing</code> 로 정의해서 사용합니다. <code>oct</code> 라는 단위는 같이 프로젝트 작업한 동료와 같이 합의해서 설정한 임의의 단위입니다. </p>
<h3 id="활용">활용</h3>
<pre><code class="language-jsx">&lt;p className=&#39;text-[24px] text-left leading-[32px] tracking-[-0.5px]&#39;&gt;
    &lt;span className=&#39;text-[24px] font-bold text-left text-text-3 leading-[32px] tracking-[-0.5px]&#39;&gt;
      키워드,
  &lt;/span&gt;
  &lt;br /&gt;
  &lt;span className=&#39;text-[24px] font-medium text-left text-text leading-[32px] tracking-[-0.5px]&#39;&gt;
      검색량만 보고 계신가요?
  &lt;/span&gt;
&lt;/p&gt;
&lt;p className=&#39;text-[14px] text-left text-text-1 mt-1oct leading-[20px] tracking-[-0.5px]&#39;&gt;
    &lt;span className=&#39;text-[14px] text-left text-text-1 leading-[20px] tracking-[-0.5px]&#39;&gt;
        버즈량, 긍부정율, 연관어 등 다양한 데이터를 통해
    &lt;/span&gt;
    &lt;br /&gt;
    &lt;span className=&#39;text-[14px] text-left text-text-1 leading-[20px] tracking-[-0.5px]&#39;&gt;
        키워드 영향력을 파악하고 브랜드 키워드를 관리하세요
    &lt;/span&gt;
&lt;/p&gt;
&lt;div className=&#39;w-full h-[172px] relative overflow-hidden bg-white shadow-input mt-2oct p-[6px] rounded-[12px]&#39;&gt;
    &lt;img src=&#39;img1.png&#39; className=&#39;w-full round-[10px]&#39;/&gt;
&lt;/div&gt;
</code></pre>
<pre><code class="language-jsx">&lt;button
    onClick={() =&gt; {}}
  className=&#39;bg-accent px-4 py-2 text-white text-[14px] font-robot rounded-[32px] font-medium&#39;
&gt;Logout&lt;/button&gt;</code></pre>
<p> 스타일가이드에 있는 색상이나 간격 등 세밀하게 사전 정의를 해놓을 수 있는 속성들이 있다면 TailwindCSS config에 정의를 해 두고 사용할 수 있습니다. 이렇게 정의를 해 두면 코드 작성이 수월해지고 가독성도 올라가는 장점이 있었습니다. 자세한 config 설정법은 <a href="https://tailwindcss.com/docs/adding-custom-styles">여기</a>를 참고 해주세요.</p>
<h2 id="👋-퍼블리싱-후기">👋 퍼블리싱 후기</h2>
<hr>
<p> 저는 프론트 작업을 할 때 가장 기피했던 부분이 직접 css파일을 작성해서 화면 요소를 디자인하고 위치시키는 작업이었습니다. 그런데 이번 프로젝트를 진행하면서 TailwindCSS를 처음 접하게 되었고, Figma와 함께 사용하면서 퍼블리셔 없이 퍼블리싱과 프론트 작업을 작업해보니 TailwindCSS의 강력함을 느낄 수 있었습니다. </p>
<blockquote>
</blockquote>
<p>퍼블리싱이 되어있지 않은 프로젝트라 작업 소요 기간을 약 3주~4주 정도로 잡고 진행했는데, TailwindCSS와 Figma 플러그인을 활용하니 약 2주 만에  프로젝트를 완료할 수 있었습니다.</p>
<blockquote>
</blockquote>
<p>만약 프론트 작업할 때 피그마로 디자인 시안이 주어진다면, TailwindCSS와 플러그인을 활용해서 작업 하시면 더 빠른 속도로 작업을 완료하실 수 있을것입니다. 읽어주셔서 감사합니다.</p>
<hr>
<blockquote>
</blockquote>
<p>🚀 <strong>김우주</strong> (<a href="mailto:universpace@datamarketing.co.kr">universpace@datamarketing.co.kr</a>)
Development Team
Back-End Developer</p>
<blockquote>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Tailwind CSS 적용기1편 (설치, 사용)
]]></title>
            <link>https://velog.io/@dmk-jongwho/Tailwind-CSS-%EC%A0%81%EC%9A%A9%EA%B8%B01%ED%8E%B8-%EC%84%A4%EC%B9%98-%EC%82%AC%EC%9A%A9</link>
            <guid>https://velog.io/@dmk-jongwho/Tailwind-CSS-%EC%A0%81%EC%9A%A9%EA%B8%B01%ED%8E%B8-%EC%84%A4%EC%B9%98-%EC%82%AC%EC%9A%A9</guid>
            <pubDate>Thu, 12 May 2022 05:49:50 GMT</pubDate>
            <description><![CDATA[<h1 id="hello-tailwind">Hello Tailwind!</h1>
<hr>
<p>이 포스트에서는 TailwindCSS 를 React 환경에서 사용하는 방법을 소개하려고 합니다.</p>
<h2 id="🤔tailwindcss">🤔TailwindCSS?</h2>
<hr>
<p>새로운 프로젝트를 들어가는데 TailwindCSS를 도입하자는 의견이 나왔고 결정이 되었습니다.</p>
<p>TailwindCss는 Utility-First컨셉을 가진 CSS 프레임워크입니다.</p>
<p>부트스트랩과 비슷하게 <code>m-1</code>, <code>flex</code>, <code>transition-all</code> 등과 같이 프레임워크 내에 정의된 유틸리티 클래스를 이용해서 css를 별도로 작성 할 필요 없이 HTML 안에서 빠르게 스타일링이 가능해집니다.</p>
<h2 id="👉시작">👉시작</h2>
<hr>
<h3 id="프로젝트-생성">프로젝트 생성</h3>
<p>Tailwind를 적용할 리액트 프로젝트가 있어야겠죠 ? <code>create-react-app</code>의 typescript옵션을 이용해 typescript템플릿으로 리액트 앱을 생성합니다.</p>
<pre><code class="language-bash">npx create-react-app [프로젝트 이름] --template typescript</code></pre>
<h3 id="npm으로-tailwindcss-설치">npm으로 TailwindCSS 설치</h3>
<p>Tailwind CSS v2 부터는 IE를 지원하지 않기 때문에 PostCSS의 <a href="https://github.com/postcss/autoprefixer">autoprefixer</a> 등을 함께 사용해야 한다.</p>
<pre><code class="language-bash">npm install --save tailwindcss@latest postcss@latest autoprefixer@latest

또는

yarn add tailwindcss@latest postcss@latest autoprefixer@latest</code></pre>
<h3 id="postcss-플러그인에-tailwindcss-추가하기">postcss 플러그인에 tailwindCss 추가하기</h3>
<pre><code class="language-json">// 루트경로의 postcss.config.js 등 postcss의 설정파일입니다
module.exports = {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
  },
}</code></pre>
<h3 id="tailwindcss-초기화파일-생성">TailwindCss 초기화파일 생성</h3>
<pre><code class="language-json">npx tailwind init -p</code></pre>
<p>명령을 실행하면 아래와 같은 파일이 생성됩니다 !</p>
<p><img src="https://velog.velcdn.com/images/dmk-jongwho/post/341e783c-0afe-4d80-b59e-024ba2a491ae/image.png" alt="테일윈드커스텀파일"></p>
<p>해당 파일을 통해 기본 스타일, 변수 등 웬만한 것을 커스텀 가능</p>
<h3 id="기본-설정-커스텀">기본 설정 커스텀</h3>
<p><code>content</code> 설정에 대한 정보는 <a href="https://tailwindcss.com/docs/content-configuration">여기</a>서 자세히 확인 가능합니다.</p>
<p>설정 커스텀에 대해서는 뒤에서 조금 더 다루어 보겠습니다.</p>
<pre><code class="language-json">module.exports = {
    // Tailwind의 class이름이 포함된 파일에 대한 경로를 구성하는 부분을 추가합니다.
    // src경로 내부에 자바스크립트, 타입스크립트, jsx를 리턴하는 파일들을 모두 작성 해줍니다.
  content: [&#39;./src/**/*.{js,jsx,ts,tsx}&#39;],
  theme: {
    extend: {},
  },
  plugins: [],
}</code></pre>
<h3 id="tailwind-지시어-css파일에-추가하기">Tailwind 지시어 CSS파일에 추가하기</h3>
<p>프로젝트 css초기화파일에 테일윈드 지시어를 추가해줍니다.</p>
<p>CRA로 생성된 프로직트 이므로 <code>src/index.css</code>에 추가 해줍시다.</p>
<p><img src="https://velog.velcdn.com/images/dmk-jongwho/post/2e3946f7-a4d7-4b1b-9150-4bb7275f2eb2/image.png" alt="cssfile"></p>
<h3 id="intellisense-설치-vscode">IntelliSense 설치 (vscode)</h3>
<p><img src="https://velog.velcdn.com/images/dmk-jongwho/post/cc63795e-9b08-4e97-9c0c-4f10a776344b/image.png" alt="Intellisense">      </p>
<blockquote>
<p><strong>Intellisence for VScode</strong></p>
</blockquote>
<p>VS Code Extention인 <a href="https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss">IntelliSense</a>를 설치하면 훨씬 빠르고 쉽게 스타일을 적용 가능하다.</p>
<p>자동완성, 오류, 버그를 강조해주고 클래스 이름에 마우스를 hover시 해당 클래스가 가지는 스타일을 보여주는 편리한 Extention이니 Tailwind를 쓴다면 같이 사용해주자.</p>
<h3 id="사용하기">사용하기</h3>
<p><img src="https://velog.velcdn.com/images/dmk-jongwho/post/6a55ae91-5799-4bb8-b1e1-99ff6b67119f/image.png" alt=""><img src="https://velog.velcdn.com/images/dmk-jongwho/post/80495072-98d4-43c5-9537-f96f1b8ffaa0/image.png" alt=""></p>
<p>위와 같이 클래스명 입력만으로 스타일링이 가능하게 됩니다 !</p>
<p>각 클래스명이 가지는 스타일은은 <a href="https://tailwindcss.com/docs/installation">여기</a>서 자세히 확인이 가능합니다.</p>
<h3 id="tailwind-config-커스텀하기">Tailwind config 커스텀하기</h3>
<p>위에서 말했듯 tailwind.config.js를 통해 기본 스타일 값을 쉽게 커스텀할 수 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/dmk-jongwho/post/300dbe03-524f-4ad7-9ac8-aa3f63741cc8/image.png" alt=""></p>
<p>위와 같이 커스텀 컬러를 정의해둔 후 아까 작성했던 버튼의 클래스명을 아래와 같이 바꿔볼까요 ?</p>
<p><img src="https://velog.velcdn.com/images/dmk-jongwho/post/f7772111-0cd8-4166-aae2-a7b51ca1aa09/image.png" alt=""><img src="https://velog.velcdn.com/images/dmk-jongwho/post/5bcbf9df-9d6a-423d-815a-c4c0ad80b177/image.png" alt=""></p>
<p>tailwind.config.js파일에 작성 한 커스텀 컬러가 잘 적용이 됐습니다.</p>
<p>커스텀 컬러 작성 시 주의할 점은 기존 tailwind에 정의된 클래스 네임과 겹치는 컬러 값을 재정의 할 경우 </p>
<p><code>extend</code> 객체 안에 넣어주지 않으면 tailwind의 기본 스타일이 덮어써지므로  extend객체를 잘 활용해야 합니다.</p>
<h2 id="🤟마치며">🤟마치며</h2>
<hr>
<p>이번에 신규 프로젝트를 Tailwind CSS를 사용하여 개발하면서 클래스 이름을 고민 할 필요가 없어지고, css파일과 html 템플릿 파일을 왔다갔다 하며 작업 할 필요도 없었고, 마크업 개발에 대한 만족도가 매우 높아졌습니다.</p>
<p>특히 피그마를 활용한 <code>디자이너 ↔ 개발자</code> 간 협업에서 Tailwind는 더욱 높은 만족감을 안겨 주었습니다.</p>
<p>다음 편에선 피그마를 활용한 디자인 템플릿이 있을 때 데이터마케팅코리아 Front-End파트에서 어떻게 빠르게 마크업을 진행했는지에 대해서 포스팅을 이어나가겠습니다!</p>
<p><img src="https://velog.velcdn.com/images/dmk-jongwho/post/1d4e3b7d-7c25-4e35-a72b-46a497ffed30/image.png" alt=""></p>
]]></description>
        </item>
    </channel>
</rss>