- vừa được xem lúc

Tailwind CSS is so guud

0 0 15

Người đăng: Sy Phungvan

Theo Viblo Asia

Mở đầu

Tailwind Css là xây dựng dựa trên PostCss - một preprocessor css. Không giống như sass, PostCss là một tool để transform css syntax giúp bạn viết css theo cách của riêng mình ✌✌ và sau đó biên dịch thành file css cuối

Chính vì vậy nên với tailwind chúng ta có thể viết ít, ít đến không tưởng mà vẫn generate ra những đoạn code css phức tạp 👀👀 . Khi sử dụng tailwind trong dự án chúng ta cũng chỉ cần cài dưới dạng dev dependency tiết kiệm được chút effort khi build 👌👌. Thời điểm mình viết là version 3 khi mà JIT mode (just-in-time) đã release

Thinking in tailwind

Với các framework frontend hiện nay, chúng ta thường chia nhỏ ứng dụng thành các component để tái sử dụng. Trong việc viết css cũng không ngoại lệ, tailwind xây dựng các bộ corePlugins ví dụ như margin , padding , float , ... giúp cho việc viết css chỉ còn đơn giản là gọi tên và lắp ghép các plugin lại với nhau 💁💁. Tailwind cũng giới thiệu các layer trong việc viết css của mình với AtRule @layer

  • @layer base : dành cho các plain HTML element
  • @layer components : dành cho các class base ví dụ như card , button , heading , ... và có thể được override bằng utilities layer
  • @layer utilities : dành cho các trường hợp đặc biệt và cần có độ ưu tiên hơn cả

Khi sử dụng @layer những class không dùng đến sẽ không được compile. Và hơn thể nữa mọi thứ trong tailwind là linh hoạt, người dùng có thể dễ dàng cấu hình theo design của bản thân

Cấu hình

Trong thư mục root, tạo file tailwind.config.js để cấu hình

Postcss follow

Content : nơi mà postCss sẽ quét các class names, vậy nên càng quét rộng càng load lâu, càng chỉ định rõ ràng path càng tốt

Content config

Theme : là nơi định nghĩa bộ color pallet , fonts , breakpoint , ... của dự án. Mặc định tailwind đã cung cấp cho chúng ta bộ default theme, do vậy nếu muốn kế thừa các giá trị mặc định hãy viết trong extends, nếu không tailwind hiểu là chúng ta đang ghi đè

extend default theme

override default break point

Plugins : plugin là bộ css cho các mục đích phổ biến nhưng vì một lý do nào đó không được tích hợp trong core, nhưng có thể cài đặt bằng npm và thêm vào trong file config. Hiện tại offical plugin có 5 plugin lần lượt là Typography , Forms , Aspect ratio , Line Clamp , Container queries

offical plugin

Presets : cho phép import mảng các file config khác, không nên dùng nên không viết thêm 😃

Dark mode : xác định strategy toggle dark mode , có hai mode là "media": tương ứng với media mode system của máy và "class" : trigger các element bên trong class "dark"

dark mode

Important : nếu set là true thì mọi class của tailwind sẽ đều là import , không nên dùng! Có nhiều cách để apply import tý mình sẽ giới thiệu ở phần sau

Prefix : add một tiền tố cho các classname của tailwind sau khi compile

Seperator: ký tự sẽ để tailwind hiểu là dấu cách khi compile, mặc định là "_" bạn biết hàm calc() chứ

width: calc(100vw - 100px) // work
height: calc(100vh-100px) // don't work

nên khi viết class để tailwind hiểu sẽ phải là

<div className="w-[calc(100vw_-_100px)]"> A </div>

CorePlugin : cho phép on/off các core plugin trong dự án

disable plugin trong dự án

Tiện lợi mà TailwindCss mang lại

Responsive design : khi đã config breakpoint trong file cấu hình các điều sau đây là tương đương

//config screens : { tablet : {max : 1024px}, mobile : {max : 768px}
}
// <div className = "w-10 tablet:w-8 mobile:w-6"> hello </div> // same with @media (max-width: 1024px){ width : 32px
}
@media (max-width : 768px){ width : 24px
} 

Responsive chưa bao giờ dễ dàng đến thế 😃😃

Arbitrary values ⭐⭐⭐ : bình thường khi design sẽ thường lấy khoảng cách là các bội số của 4, nhưng cũng thường hay xảy ra việc có những phần tử có margin , padding đặc biệt, ... . Đó là lúc sử dụng giá trị tùy ý ( tính năng của JIT mode mình nói ở trên )

<div className="w-[11px] bg-[#a1b2c3]">a</div>
// same with { width : 11px background-color : #a1b2c3
}

Code nhanh hơn gấp 1000 lần đúng không ạ

Dark Mode , pseudo class , hover , focus : tất cả chỉ cần gọi qua classname 😃 quá nhanh quá tiện

Kiểm soát biến :

Refer to theme variable in css file

Thay vì sử dụng biến này kia , thì mình thích dùng kiểu này hơn 😉 . Hàm theme() refer đến các giá trị config của tailwind, cho nên dễ dàng quản lý

Kết bài

Bài viết của mình không có hướng dẫn setup, bạn có thể xem trên trang chủ https://tailwindcss.com/docs/installation.

Bên cạnh việc viết css kiểu truyền thống rồi module hoặc css-in-js đang nổi thì cá nhân mình thấy sử dụng tailwind thích hơn nhiều. Cá nhân mình cũng có một lần đáng nhớ khi dự án đổi design, nguyên một bộ color pallet bị đổi luôn, nhưng may mà dự án đó sử dụng tailwind cho nên mọi việc được xử lý trong phút mốt, đến anh lead của mình cũng phải há hốc mồm. Đó, dị nên không ngoa đâu, bạn nên thử đi 😚😚

Bình luận

Bài viết tương tự

- vừa được xem lúc

Utility-first CSS - Xây dựng giao diện từ những viên gạch nhỏ nhất

Mở đầu. Là một web developer chắc hẳn ai cũng đã từng phải làm việc với CSS.

0 0 45

- vừa được xem lúc

Tailwind CSS v2 có gì mới?

I. Lời mở đầu. . Tailwindcss - một utility-first CSS framework, đang dần trở nên phổ biến trong giới lập trình frontend với 34.

0 0 37

- vừa được xem lúc

TailwindsCSS có gì hay ?

1. Mở đầu. . Đổi với các bạn làm việc bên phía front-end hoặc thậm chí cả back-end thì cái tên Bootstrap không còn xa lạ gì với chúng ta.

0 0 40

- vừa được xem lúc

Hướng Dẫn Tạo Mega Menu Và Dropdown Menu Với Tailwind CSS

Trong video này mình sẽ hướng dẫn các bạn cách tạo mega menu và dropdown menu với Tailwind CSS. . Like và Subscribe ủng hộ mình nhé . .

0 0 165

- vừa được xem lúc

Make Facebook Responsive UI and Dark Mode using TailwindCSS

Make Facebook Home Page with Responsive and Dark Mode using TailwindCSS. . In this video, we will code Facebook UI using TailwindCSS. Responsive and Dark Mode included.

0 0 79

- vừa được xem lúc

Cùng thử tái hiện bố cục Facebook cover picture bằng TailwindCSS

Có bao giờ bạn thắc mắc rằng liệu có khó để tạo ra các bố cục độc đáo, tương tự như phần "ảnh bìa" ở trang cá nhân Facebook, Twitter hay không? Câu trả lời là không hề khó chút nào, với một chút kiến

0 0 32