HTML에 머문 채로 모던한 웹사이트를 빠르게 구축하세요.

유틸리티 중심 CSS 프레임워크로 flex, pt-4, text-center 그리고 rotate-90 같은 클래스들이 포함되어 있어 마크업 안에서 바로 원하는 디자인을 만들 수 있습니다.

시작하기
<figure class="bg-slate-100 rounded-xl dark:bg-slate-800">
  <img class="w-24 h-24" src="/sarah-dayan.jpg" alt="" width="384" height="512">
  <div class="pt-6 space-y-4">
    <blockquote>
      <p class="text-lg">
        “Tailwind CSS is the only framework that I've seen scale
        on large teams. It’s easy to customize, adapts to any design,
        and the build size is tiny.”
      </p>
    </blockquote>
    <figcaption>
      <div>
        Sarah Dayan
      </div>
      <div>
        Staff Engineer, Algolia
      </div>
    </figcaption>
  </div>
</figure>
"Tailwind CSS는 제가 경험해본 프레임워크 대규모 팀에서도 확장이 가능한 유일한 프레임워크였습니다. 커스터마이징이 쉽고, 어떤 디자인에도 적용할 있으며, 빌드 크기가 매우 작습니다."

Sarah Dayan

Staff Engineer, Algolia

“기존의 'CSS 작성법'은 실제로 효과가 없습니다.“

일반적으로 알려진 CSS 작성법은 실제로 도움이 되지 않습니다. 전통적인 '의미 기반 클래스명'이 왜 CSS 유지보수를 어렵게 만드는지 자세히 설명하는 글 을 작성했습니다만, Tailwind CSS를 직접 사용해보시기 전까지는 제 말을 믿기 어려우실 것 같네요. Tailwind의 유틸리티 클래스 방식이 처음에는 낯설어 보일 수 있지만 한번 사용해보시면, 이전에 CSS를 다른 방식으로 작성했던 것이 오히려 이상하게 느껴지실 거라고 확신합니다.

Adam Wathan
Creator of Tailwind CSS

Testimonials

  • Tailwind CSS를 이제서야 사용한 제가 바보 같아요.

    Remix & React Training
  • 오늘 프로그래밍을 시작하는 방법을 추천해야 한다면, HTML + CSS와 함께 Tailwind CSS를 사용하는 것을 추천할 거예요.

  • 디자인 스킬이 전혀 없는데도 Tailwind를 사용하면 쉽게 멋진 웹사이트를 만들 수 있어요. CSS 프레임워크에서 원하던 모든 것을 갖췄어요.

    Sara Vieira
    CodeSandbox
  • Tailwind CSS는 지구상에서 가장 훌륭한 CSS 프레임워크예요.

    전 WWE 챔피언
  • @tailwindcss를 사용하기 시작했어요. 반응형 수정자, 철저한 문서화, 그리고 색상 팔레트를 쉽게 커스터마이징할 수 있는 점에 바로 반했어요.

    소프트웨어 엔지니어
  • 사용한 순간부터 사랑에 빠졌어요.

  • @tailwindcss에 대해 한 가지 단점이 있다면, 몇 개의 프로젝트에서 사용한 후에는 일반 CSS를 다시 작성하는 것이 정말 고통스럽다는 거예요.

    자바스크립트 개발자
  • 좋아요, 이제 공식적으로 @tailwindcss 열차에 올라탔어요. 웹사이트를 이렇게 빠르고 유연하게 만들 수 있을 거라고는 생각도 못 했어요.

    TrendyMinds 프로그래머
  • 좋아요, @tailwindcss가 이제 이해가 되고 나니 내가 바보 같아요.

    React 엔지니어
  • 지난 몇 달 동안 @tailwindcss를 사용하고 있어요. 정말 놀라워요. 이전에도 몇 가지 유틸리티 클래스를 사용했지만, 유틸리티 우선 접근법... 이것이 정답이에요.

    디자이너
  • 지난 2주 동안 실제 클라이언트 프로젝트에서 @tailwindcss를 사용한 후, 다시는 손으로 CSS를 작성하고 싶지 않아요. 회의적이었지만, 이제는 그 열풍이 진짜라는 걸 알겠어요.

    Ruby & iOS 개발자
  • @tailwindcss를 좋아할 줄은 몰랐어요... POC로 하루 동안 사용해보고 사랑에 빠졌어요! 회사 디자인 시스템을 시작할 때 이게 있었으면 좋았을 텐데, 완전히 다시 구축하는 걸 진지하게 고민 중이에요.

    프론트엔드 개발자
  • @tailwindcss는 처음에는 불편해 보였지만, 이제는 완전히 빠져들었어요.

    프론트엔드 개발자
  • Tailwind를 사용하기 시작하면, 돌아갈 수 없어요.

  • 모든 프로젝트에서 @tailwindcss를 사용해요. CSS의 대부분의 불편함을 없애주고 여러 배 더 빠르게 작업할 수 있기 때문이에요.

  • 제 비즈니스의 방향을 완전히 바꿔놓았어요. 더 나은 디자인, 더 나은 성능, 그리고 더 접근성 좋은 컴포넌트를 1/3의 시간으로 만들 수 있어요.

  • 첫 Tailwind 프로젝트는 잘 진행됐지만, 정말 대단했던 건 몇 달 후에 돌아가서 새로운 변경 사항을 적용하는 데 시간을 많이 절약할 수 있었다는 거예요. 모든 것이 어떻게 맞춰지는지 바로 알 수 있었어요.

  • Tailwind는 처음에는 스파게티처럼 보였지만, 실제 프로젝트에서 사용하고 나니 이제는 웹사이트를 만드는 유일한 방법이 됐어요. 간단하고 빠르며 확장 가능해요.

  • Tailwind는 기술을 평가할 때 선입견을 버려야 하는 전형적인 예예요. 경험과 생산성은 오래된 CSS 사고방식에 기반한 믿음보다 훨씬 앞서 있어요!

  • Tailwind CSS는 다른 어떤 프레임워크와도 달라요. 특정 디자인에 제한되지 않고, 원하는 것을 정확히 구축할 수 있는 도구와 표준화를 제공해요.

  • 처음 유틸리티 우선 CSS를 봤을 때는 소름이 끼쳤어요. 하지만 지난 몇 달 동안 점점 더 많은 프로젝트에서 Tailwind를 사용하면서 웹에서 무언가를 구축하는 새로운 즐거운 방법을 찾았어요.

  • @tailwindcss를 사용하기 시작할 때는 회의적이었어요. 하지만 이제는 @sveltejs 컴포넌트를 다른 위치로 복사할 때 스타일이 깨질까 걱정할 필요가 없어요.

  • @tailwindcss는 CSS를 더 잘하게 만들어줘요. 제 생각을 바꿔보세요.

  • 정말 멋져요! 저는 디자이너도 아니고 프론트엔드 개발자도 아니에요. 작년에 Tailwind를 찾기 전까지는 90년대 초반 이후로 CSS를 전혀 하지 않았어요. Tailwind와 Tailwind UI 덕분에 이제는 빠르게 멋진 프론트엔드를 만들 수 있어요. 정말 놀라운 프로젝트예요.

  • 작년까지는 @tailwindcss에 대해 큰 회의론자였어요. "왜 단일 CSS 속성을 추상화한 수많은 클래스를 타이핑해야 하지?"라고 생각했어요. 하지만 이제는 UI를 구축할 때 두 배 더 생산적이라고 느껴요. 정말 놀라워요.

  • 몇 달 동안 진행한 회사 프론트엔드를 TypeScript와 @tailwindcss로 다시 작성하는 작업이 거의 완료됐어요. 여전히 컴포넌트를 다시 구현할 때마다 '와, 이번에는 훨씬 쉬웠다'고 생각해요. Tailwind는 정말 대단해요.

    LaunchPathInc 공동 창립자/CTO
  • 우리가 해야 할 배송량을 고려할 때, 두뇌에서 CSS로 변환하는 과정을 건너뛰고 Tailwind를 사용해 생각의 속도로 구현할 수 있다는 건, 풀스택 개발자로서의 제 삶을 더욱 행복하게 만들어줘요.

  • Tailwind는 새로운 개발자들을 프론트엔드 프로젝트에 쉽게 끌어들일 수 있게 해줘요. 특정 개발자의 클래스 계층 구조와 그 뒤에 숨은 사고 과정을 이해하는 데 드는 정신적 부담을 덜어주죠.

    UI 디자이너/개발자
  • Tailwind는 우리 개발 팀에게 완전히 게임 체인저였어요. 더 빠르게 이동할 수 있게 해주고, UI를 일관되게 유지할 수 있게 해주며, CSS를 작성하는 대신 우리가 하고 싶은 작업에 집중할 수 있게 해줘요.

    풀스택 개발자

디자인 규칙 기반

디자인 시스템을 위한 API.

유틸리티 클래스는 스타일시트에 임의의 값들을 흩어놓는 대신, 정해진 디자인 규칙 안에서 작업할 수 있도록 도와줍니다. 색상 선택, 간격, 타이포그래피, 그림자 및 잘 설계된 디자인 시스템을 구성하는 모든 요소들에서 일관성을 유지하기 쉽게 만들어줍니다.

더 알아보기, 유틸리티 퍼스트 원칙
  • w-64
  • w-60
  • w-56
  • w-52
  • w-48
  • w-44
  • w-40
  • w-36
<div class="space-y-4">
<div class="w-96 bg-white shadow rounded">
w-96
</div>
<div class="w-80 bg-white shadow rounded">
w-80
</div>
<div class="w-72 bg-white shadow rounded">
w-72
</div>
<div class="w-64 bg-white shadow rounded">
w-64
</div>
<div class="w-60 bg-white shadow rounded">
w-60
</div>
<div class="w-56 bg-white shadow rounded">
w-56
</div>
<div class="w-52 bg-white shadow rounded">
w-52
</div>
<div class="w-48 bg-white shadow rounded">
w-48
</div>
</div>

무엇이든 만들 수 있는

원하는 것은 무엇이든 만들 수 있습니다. 정말이에요.

Tailwind는 로우레벨이기 때문에 같은 사이트를 두 번 디자인하도록 하지 않습니다. 같은 색상 팔레트와 크기 스케일을 사용하더라도 다음 프로젝트에서 완전히 다른 모습으로 같은 컴포넌트를 쉽게 만들 수 있습니다.

시작하기, installation
<div class="flex font-sans">
  <div class="flex-none w-48 relative">
    <img src="/classic-utility-jacket.jpg" alt="" class="absolute inset-0 w-full h-full object-cover" loading="lazy" />
  </div>
  <form class="flex-auto p-6">
    <div class="flex flex-wrap">
      <h1 class="flex-auto text-lg font-semibold text-slate-900">
        Classic Utility Jacket
      </h1>
      <div class="text-lg font-semibold text-slate-500">
        $110.00
      </div>
      <div class="w-full flex-none text-sm font-medium text-slate-700 mt-2">
        In stock
      </div>
    </div>
    <div class="flex items-baseline mt-4 mb-6 pb-6 border-b border-slate-200">
      <div class="space-x-2 flex text-sm">
        <label>
          <input class="sr-only peer" name="size" type="radio" value="xs" checked />
          <div class="w-9 h-9 rounded-lg flex items-center justify-center text-slate-700 peer-checked:font-semibold peer-checked:bg-slate-900 peer-checked:text-white">
            XS
          </div>
        </label>
        <label>
          <input class="sr-only peer" name="size" type="radio" value="s" />
          <div class="w-9 h-9 rounded-lg flex items-center justify-center text-slate-700 peer-checked:font-semibold peer-checked:bg-slate-900 peer-checked:text-white">
            S
          </div>
        </label>
        <label>
          <input class="sr-only peer" name="size" type="radio" value="m" />
          <div class="w-9 h-9 rounded-lg flex items-center justify-center text-slate-700 peer-checked:font-semibold peer-checked:bg-slate-900 peer-checked:text-white">
            M
          </div>
        </label>
        <label>
          <input class="sr-only peer" name="size" type="radio" value="l" />
          <div class="w-9 h-9 rounded-lg flex items-center justify-center text-slate-700 peer-checked:font-semibold peer-checked:bg-slate-900 peer-checked:text-white">
            L
          </div>
        </label>
        <label>
          <input class="sr-only peer" name="size" type="radio" value="xl" />
          <div class="w-9 h-9 rounded-lg flex items-center justify-center text-slate-700 peer-checked:font-semibold peer-checked:bg-slate-900 peer-checked:text-white">
            XL
          </div>
        </label>
      </div>
    </div>
    <div class="flex space-x-4 mb-6 text-sm font-medium">
      <div class="flex-auto flex space-x-4">
        <button class="h-10 px-6 font-semibold rounded-md bg-black text-white" type="submit">
          Buy now
        </button>
        <button class="h-10 px-6 font-semibold rounded-md border border-slate-200 text-slate-900" type="button">
          Add to bag
        </button>
      </div>
      <button class="flex-none flex items-center justify-center w-9 h-9 rounded-md text-slate-300 border border-slate-200" type="button" aria-label="Like">
        <svg width="20" height="20" fill="currentColor" aria-hidden="true">
          <path fill-rule="evenodd" clip-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" />
        </svg>
      </button>
    </div>
    <p class="text-sm text-slate-700">
      Free shipping on all continental US orders.
    </p>
  </form>
</div>

성능

아주 작습니다 — 사용하지 않는 CSS를 배포하지 않습니다.

Tailwind는 프로덕션 빌드 시 사용하지 않는 모든 CSS를 자동으로 제거합니다. 따라서 최종 CSS 번들은 가능한 한 가장 작은 크기가 됩니다. 실제로 대부분의 Tailwind 프로젝트는 클라이언트에게 10kB 미만의 CSS를 배포합니다.

프로덕션 최적화 더 알아보기
index.html
tailwind.config.js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="/build.css">
</head>
<body>
<button class=""></button>
</body>
</html>
build.css
Terminal
npx tailwindcss -o build.css --content index.html -w

모바일 퍼스트

모든 것을 반응형으로.

CSS의 복잡한 미디어 쿼리로 고생할 필요 없이, HTML 내에서 바로 반응형 디자인을 만들 수 있습니다.

원하는 유틸리티 클래스 앞에 화면 크기만 명시하면 특정 브레이크포인트에서 마법처럼 적용됩니다.

더 알아보기, 반응형 디자인
workcation.com
Tailwind UI - Official Tailwind CSS Components
Workcation - Find a trip that suits you
Headless UI – Unstyled, fully accessible UI components
<main class="py-6 px-4 sm:p-6 md:py-10 md:px-8">
<div class="max-w-4xl mx-auto grid grid-cols-1 lg:max-w-5xl lg:gap-x-20 lg:grid-cols-2">
<div class="relative p-3 col-start-1 row-start-1 flex flex-col-reverse rounded-lg bg-gradient-to-t from-black/75 via-black/0 sm:bg-none sm:row-start-2 sm:p-0 lg:row-start-1">
<h1 class="mt-1 text-lg font-semibold text-white sm:text-slate-900 md:text-2xl dark:sm:text-white">Beach House in Collingwood</h1>
<p class="text-sm leading-4 font-medium text-white sm:text-slate-500 dark:sm:text-slate-400">Entire house</p>
</div>
<div class="grid gap-4 col-start-1 col-end-3 row-start-1 sm:mb-6 sm:grid-cols-4 lg:gap-6 lg:col-start-2 lg:row-end-6 lg:row-span-6 lg:mb-0">
<img src="/beach-house.jpg" alt="" class="w-full h-60 object-cover rounded-lg sm:h-52 sm:col-span-2 lg:col-span-full" loading="lazy">
<img src="/beach-house-interior-1.jpg" alt="" class="hidden w-full h-52 object-cover rounded-lg sm:block sm:col-span-2 md:col-span-1 lg:row-start-2 lg:col-span-2 lg:h-32" loading="lazy">
<img src="/beach-house-interior-2.jpg" alt="" class="hidden w-full h-52 object-cover rounded-lg md:block lg:row-start-2 lg:col-span-2 lg:h-32" loading="lazy">
</div>
<dl class="mt-4 text-xs font-medium flex items-center row-start-2 sm:mt-1 sm:row-start-3 md:mt-2.5 lg:row-start-2">
<dt class="sr-only">Reviews</dt>
<dd class="text-indigo-600 flex items-center dark:text-indigo-400">
<svg width="24" height="24" fill="none" aria-hidden="true" class="mr-1 stroke-current dark:stroke-indigo-500">
<path d="m12 5 2 5h5l-4 4 2.103 5L12 16l-5.103 3L9 14l-4-4h5l2-5Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
</svg>
<span>4.89 <span class="text-slate-400 font-normal">(128)</span></span>
</dd>
<dt class="sr-only">Location</dt>
<dd class="flex items-center">
<svg width="2" height="2" aria-hidden="true" fill="currentColor" class="mx-3 text-slate-300">
<circle cx="1" cy="1" r="1" />
</svg>
<svg width="24" height="24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="mr-1 text-slate-400 dark:text-slate-500" aria-hidden="true">
<path d="M18 11.034C18 14.897 12 19 12 19s-6-4.103-6-7.966C6 7.655 8.819 5 12 5s6 2.655 6 6.034Z" />
<path d="M14 11a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z" />
</svg>
Collingwood, Ontario
</dd>
</dl>
<div class="mt-4 col-start-1 row-start-3 self-center sm:mt-0 sm:col-start-2 sm:row-start-2 sm:row-span-2 lg:mt-6 lg:col-start-1 lg:row-start-3 lg:row-end-4">
<button type="button" class="bg-indigo-600 text-white text-sm leading-6 font-medium py-2 px-3 rounded-lg">Check availability</button>
</div>
<p class="mt-4 text-sm leading-6 col-start-1 sm:col-span-2 lg:mt-6 lg:row-start-4 lg:col-span-1 dark:text-slate-400">
This sunny and spacious room is for those traveling light and looking for a comfy and cosy place to lay their head for a night or two. This beach house sits in a vibrant neighborhood littered with cafes, pubs, restaurants and supermarkets and is close to all the major attractions such as Edinburgh Castle and Arthur's Seat.
</p>
</div>
</main>

상태 변형

호버와 포커스 상태? 다 준비되어 있습니다.

호버 상태에서 스타일을 적용하고 싶나요? 원하는 클래스 앞에 hover:를 붙이세요. 이 방법은 focus, active, disabled, focus-within, focus-visible와 같은 상태뿐만 아니라, 우리가 직접 만든 group-hover와 같은 특별한 상태에도 적용됩니다.

호버, 포커스 및 기타 상태 처리 더 알아보기

Projects

New
  • Title
    API Integration
    Category
    Engineering
    Users
  • Title
    New Benefits Plan
    Category
    Human Resources
    Users
  • New project
<section>
<header class="bg-white space-y-4 p-4 sm:px-8 sm:py-6 lg:p-4 xl:px-8 xl:py-6">
<div class="flex items-center justify-between">
<h2 class="font-semibold text-slate-900">Projects</h2>
<a href="/new" class="hover:bg-blue-400 group flex items-center rounded-md bg-blue-500 text-white text-sm font-medium pl-2 pr-3 py-2 shadow-sm">
<svg width="20" height="20" fill="currentColor" class="mr-2" aria-hidden="true">
<path d="M10 5a1 1 0 0 1 1 1v3h3a1 1 0 1 1 0 2h-3v3a1 1 0 1 1-2 0v-3H6a1 1 0 1 1 0-2h3V6a1 1 0 0 1 1-1Z" />
</svg>
New
</a>
</div>
<form class="group relative">
<svg width="20" height="20" fill="currentColor" class="absolute left-3 top-1/2 -mt-2.5 text-slate-400 pointer-events-none group-focus-within:text-blue-500" aria-hidden="true">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" />
</svg>
<input class="focus:ring-2 focus:ring-blue-500 focus:outline-none appearance-none w-full text-sm leading-6 text-slate-900 placeholder-slate-400 rounded-md py-2 pl-10 ring-1 ring-slate-200 shadow-sm" type="text" aria-label="Filter projects" placeholder="Filter projects...">
</form>
</header>
<ul class="bg-slate-50 p-4 sm:px-8 sm:pt-6 sm:pb-8 lg:p-4 xl:px-8 xl:pt-6 xl:pb-8 grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-1 xl:grid-cols-2 gap-4 text-sm leading-6">
<li x-for="project in projects">
<a :href="project.url" class="hover:bg-blue-500 hover:ring-blue-500 hover:shadow-md group rounded-md p-3 bg-white ring-1 ring-slate-200 shadow-sm">
<dl class="grid sm:block lg:grid xl:block grid-cols-2 grid-rows-2 items-center">
<div>
<dt class="sr-only">Title</dt>
<dd class="group-hover:text-white font-semibold text-slate-900">
{project.title}
</dd>
</div>
<div>
<dt class="sr-only">Category</dt>
<dd class="group-hover:text-blue-200">{project.category}</dd>
</div>
<div class="col-start-2 row-start-1 row-end-3 sm:mt-4 lg:mt-0 xl:mt-4">
<dt class="sr-only">Users</dt>
<dd x-for="user in project.users" class="flex justify-end sm:justify-start lg:justify-end xl:justify-start -space-x-1.5">
<img :src="user.avatar" :alt="user.name" class="w-6 h-6 rounded-full bg-slate-100 ring-2 ring-white" loading="lazy">
</dd>
</div>
</dl>
</a>
</li>
<li class="flex">
<a href="/new" class="hover:border-blue-500 hover:border-solid hover:bg-white hover:text-blue-500 group w-full flex flex-col items-center justify-center rounded-md border-2 border-dashed border-slate-300 text-sm leading-6 text-slate-900 font-medium py-3">
<svg class="group-hover:text-blue-500 mb-1 text-slate-400" width="20" height="20" fill="currentColor" aria-hidden="true">
<path d="M10 5a1 1 0 0 1 1 1v3h3a1 1 0 1 1 0 2h-3v3a1 1 0 1 1-2 0v-3H6a1 1 0 1 1 0-2h3V6a1 1 0 0 1 1-1Z" />
</svg>
New project
</a>
</li>
</ul>
</section>

컴포넌트 중심

중복이 걱정되시나요? 걱정하지 마세요.

동일한 유틸리티를 계속해서 반복적으로 사용하고 있다면, 이를 컴포넌트나 템플릿으로 추출하기만 하면 됩니다. 이렇게 하면 한 곳에서 모든 것을 관리하고 수정할 수 있습니다.

더 알아보기, reusing styles

Prognosis Negative

Rating
PG-13
Year
2021
Genre
Comedy
Runtime
1h 46m
Cast
Simon Pegg, Zach Galifianakis

Rochelle, Rochelle

Rating
R
Year
2020
Genre
Romance
Runtime
1h 56m
Cast
Emilia Clarke
import Nav from ''
import NavItem from ''
import List from ''
import ListItem from ''

export default function Movies({ movies }) {
  return (
    <div className="divide-y divide-slate-100">
      <Nav>
        <NavItem href="/new" isActive>New Releases</NavItem>
        <NavItem href="/top">Top Rated</NavItem>
        <NavItem href="/picks">Vincent’s Picks</NavItem>
      </Nav>
      <List>
        {movies.map((movie) => (
          <ListItem key={movie.id} movie={movie} />
        ))}
      </List>
    </div>
  )
}

컴포넌트 프레임워크가 익숙하지 않으신가요?

Tailwind의 @apply 지시어를 사용하면 반복되는 유틸리티 패턴을 클래스 이름 목록을 복사하여 붙여넣기만 하면 사용자 정의 CSS 클래스로 추출할 수 있습니다.

더 알아보기, reusing styles

Weekly one-on-one

Date and time
-
Location
Kitchener, ON
Description
No meeting description
Attendees
Andrew McDonald
Decline
Accept

styles.css

.btn {
  @apply text-base font-medium rounded-lg p-3;
}

.btn--primary {
  @apply bg-sky-500 text-white;
}

.btn--secondary {
  @apply bg-slate-100 text-slate-900;
}

index.html

</dd>
</div>
</dl>
<footer class="grid grid-cols-2 gap-x-6">
<button class="btn btn--secondary">Decline</button>
<button class="btn btn--primary">Accept</button>
</footer>
</article>

다크 모드

다크 모드를 지원합니다.

새벽 2시에 휴대폰으로 웹사이트를 열었을 때 사용자의 눈이 편한 웹사이트를 만들고 싶은가요? 설정 파일에서 다크 모드를 활성화한 다음, 색상 유틸리티 앞에 dark:를 붙이기만 하면 다크 모드가 활성화될 때 적용됩니다. 배경색, 텍스트 색상, 테두리 색상, 심지어 그라데이션에도 모두 적용 가능합니다.

더 알아보기, 다크 모드

Ep. 128

Scaling CSS at Heroku with Utility Classes

Full Stack Radio

24:16
75:50
<div class="bg-white border-slate-100 dark:bg-slate-800 dark:border-slate-500 border-b rounded-t-xl p-4 pb-6 sm:p-10 sm:pb-8 lg:p-6 xl:p-10 xl:pb-8 space-y-6 sm:space-y-8 lg:space-y-6 xl:space-y-8">
  <div class="flex items-center space-x-4">
    <img src="/full-stack-radio.png" alt="" width="88" height="88" class="flex-none rounded-lg bg-slate-100" loading="lazy" />
    <div class="min-w-0 flex-auto space-y-1 font-semibold">
      <p class="text-cyan-500 dark:text-cyan-400 text-sm leading-6">
        <abbr title="Episode">Ep.</abbr> 128
      </p>
      <h2 class="text-slate-500 dark:text-slate-400 text-sm leading-6 truncate">
        Scaling CSS at Heroku with Utility Classes
      </h2>
      <p class="text-slate-900 dark:text-slate-50 text-lg">
        Full Stack Radio
      </p>
    </div>
  </div>
  <div class="space-y-2">
    <div class="relative">
      <div class="bg-slate-100 dark:bg-slate-700 rounded-full overflow-hidden">
        <div class="bg-cyan-500 dark:bg-cyan-400 w-1/2 h-2" role="progressbar" aria-label="music progress" aria-valuenow="1456" aria-valuemin="0" aria-valuemax="4550"></div>
      </div>
      <div class="ring-cyan-500 dark:ring-cyan-400 ring-2 absolute left-1/2 top-1/2 w-4 h-4 -mt-2 -ml-2 flex items-center justify-center bg-white rounded-full shadow">
        <div class="w-1.5 h-1.5 bg-cyan-500 dark:bg-cyan-400 rounded-full ring-1 ring-inset ring-slate-900/5"></div>
      </div>
    </div>
    <div class="flex justify-between text-sm leading-6 font-medium tabular-nums">
      <div class="text-cyan-500 dark:text-slate-100">24:16</div>
      <div class="text-slate-500 dark:text-slate-400">75:50</div>
    </div>
  </div>
</div>
<div class="bg-slate-50 text-slate-500 dark:bg-slate-600 dark:text-slate-200 rounded-b-xl flex items-center">
  <div class="flex-auto flex items-center justify-evenly">
    <button type="button" aria-label="Add to favorites">
      <svg width="24" height="24">
        <path d="M7 6.931C7 5.865 7.853 5 8.905 5h6.19C16.147 5 17 5.865 17 6.931V19l-5-4-5 4V6.931Z" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
      </svg>
    </button>
    <button type="button" class="hidden sm:block lg:hidden xl:block" aria-label="Previous">
      <svg width="24" height="24" fill="none">
        <path d="m10 12 8-6v12l-8-6Z" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
        <path d="M6 6v12" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
      </svg>
    </button>
    <button type="button" aria-label="Rewind 10 seconds">
      <svg width="24" height="24" fill="none">
        <path d="M6.492 16.95c2.861 2.733 7.5 2.733 10.362 0 2.861-2.734 2.861-7.166 0-9.9-2.862-2.733-7.501-2.733-10.362 0A7.096 7.096 0 0 0 5.5 8.226" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
        <path d="M5 5v3.111c0 .491.398.889.889.889H9" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
      </svg>
    </button>
  </div>
  <button type="button" class="bg-white text-slate-900 dark:bg-slate-100 dark:text-slate-700 flex-none -my-2 mx-auto w-20 h-20 rounded-full ring-1 ring-slate-900/5 shadow-md flex items-center justify-center" aria-label="Pause">
    <svg width="30" height="32" fill="currentColor">
      <rect x="6" y="4" width="4" height="24" rx="2" />
      <rect x="20" y="4" width="4" height="24" rx="2" />
    </svg>
  </button>
  <div class="flex-auto flex items-center justify-evenly">
    <button type="button" aria-label="Skip 10 seconds">
      <svg width="24" height="24" fill="none">
        <path d="M17.509 16.95c-2.862 2.733-7.501 2.733-10.363 0-2.861-2.734-2.861-7.166 0-9.9 2.862-2.733 7.501-2.733 10.363 0 .38.365.711.759.991 1.176" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
        <path d="M19 5v3.111c0 .491-.398.889-.889.889H15" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
      </svg>
    </button>
    <button type="button" class="hidden sm:block lg:hidden xl:block" aria-label="Next">
      <svg width="24" height="24" fill="none">
        <path d="M14 12 6 6v12l8-6Z" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
        <path d="M18 6v12" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
      </svg>
    </button>
    <button type="button" class="rounded-lg text-xs leading-6 font-semibold px-2 ring-2 ring-inset ring-slate-500 text-slate-500 dark:text-slate-100 dark:ring-0 dark:bg-slate-500">
      1x
    </button>
  </div>
</div>

커스터마이징

원하는 대로 확장하고, 조정하고, 변경하세요.

Tailwind은 기본적으로 전문가 수준으로 설계된 기본값을 제공하지만, 색상 팔레트부터 간격 스케일, 박스 그림자, 마우스 커서에 이르기까지 모든 것을 커스텀할 수 있습니다.

tailwind.config.js 파일을 사용하여 여러분만의 디자인 시스템을 구축하고, Tailwind가 이를 여러분만의 커스텀 CSS 프레임워크로 변환하도록 할 수 있습니다.

더 알아보기, configuration

Typography

  • CSS class
    font-display
    Font name
    Inter
    Sample
    AaBbCc
  • CSS class
    font-body
    Font size
    14pt
    Sample
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut augue gravida cras quis ac duis pretium ullamcorper consequat. Integer pellentesque eu.

Colors

  • CSS class prefix
    bg-primary
    Range
    50-900
    Sample
module.exports = {
  theme: {
    fontFamily: {
      display: ['Inter', 'system-ui', 'sans-serif'],
      body: ['Inter', 'system-ui', 'sans-serif'],
    },
    colors: {
      primary: {
        50: '#eff6ff',
        100: '#dbeafe',
        200: '#bfdbfe',
        300: '#93c5fd',
        400: '#60a5fa',
        500: '#3b82f6',
        600: '#2563eb',
        700: '#1d4ed8',
        800: '#1e40af',
        900: '#1e3a8a',
      },
      secondary: {
        50: '#f8fafc',
        100: '#f1f5f9',
        200: '#e2e8f0',
        300: '#cbd5e1',
        400: '#94a3b8',
        500: '#64748b',
        600: '#475569',
        700: '#334155',
        800: '#1e293b',
        900: '#0f172a',
      },
    },
  },
}

모던 기능

최신 기술이 우리의 전문 분야입니다.

Tailwind는 망설임 없이 모던한 방식을 추구하며, 개발자 경험을 최대한 즐겁게 만들기 위해 CSS의 최신 기능들을 모두 활용합니다.

최고 수준의 CSS 그리드 지원, CSS 변수를 활용한 합성 가능한 변형과 그라데이션, :focus-visible과 같은 최신 상태 선택자 지원 등 다양한 기능을 제공합니다.

그리드 템플릿 컬럼 더 알아보기
<div class="grid grid-flow-col grid-rows-2 grid-cols-3 gap-8">
  <div>
    <img src="/mountains-1.jpg" alt="" loading="lazy">
  </div>
  <div class="col-start-3">
    <img src="/mountains-2.jpg" alt="" loading="lazy">
  </div>
  <div>
    <img src="/mountains-3.jpg" alt="" loading="lazy">
  </div>
  <div>
    <img src="/mountains-4.jpg" alt="" loading="lazy">
  </div>
  <div class="row-start-1 col-start-2 col-span-2">
    <img src="/mountains-5.jpg" alt="" loading="lazy">
  </div>
</div>

에디터 도구

세계적 수준의 IDE 통합.

모든 클래스 이름을 기억하는 것이 걱정되시나요? VS Code용 Tailwind CSS IntelliSense 확장 프로그램이 여러분을 도와줍니다.

지능형 자동 완성 제안, 린팅, 클래스 정의 등을 에디터 내에서 바로 사용할 수 있으며, 별도의 설정이 필요하지 않습니다.

에디터 설정, 더 알아보기
<div class="w-full flex items-center justify-between block p-6 space-x-6">
  <div class="flex-1 truncate">
    <div class="flex items-center space-x-3">
      <h3 class="text-slate-900 text-sm font-medium truncate">Jane Cooper</h3>
      <span class="">Admin</span>
    </div>
    <p class="mt-1 text-slate-500 text-sm truncate">Regional Paradigm Technician</p>
  </div>
  <img class="w-10 h-10 bg-slate-300 rounded-full shrink-0" src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=facearea&amp;facepad=4&amp;w=256&amp;h=256&amp;q=60" alt="" loading="lazy">
</div>
<div class="border-t border-slate-200">
  <div class="-mt-px flex">
    <div class="w-0 flex-1 flex border-r border-slate-200">
      <a href="#" class="relative -mr-px w-0 flex-1 inline-flex items-center justify-center py-4 text-sm text-slate-700 font-medium border border-transparent rounded-bl-lg hover:text-slate-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 focus:z-10 transition ease-in-out duration-150">
        <svg class="w-5 h-5 text-slate-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor">
          <path d="M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0016 4H4a2 2 0 00-1.997 1.884z" />
          <path d="M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z" />
        </svg>
        <span class="ml-3">Email</span>
      </a>
    </div>
  </div>
</div>

Problems

  • 'flex' applies the same CSS property as 'block'.

  • 'block' applies the same CSS property as 'flex'.

바로 사용 가능한 컴포넌트들

Tailwind UI로 더욱 빠르게 개발하세요.

Tailwind UI는 Tailwind CSS 제작자들이 직접 디자인하고 개발한 아름답고 완벽하게 반응형인 UI 컴포넌트 모음입니다. 수백 개의 바로 사용 가능한 예제들이 준비되어 있어, 여러분이 만들고자 하는 것의 완벽한 시작점을 찾는 데 도움이 될 것을 보장합니다.

더 알아보기