+4

Đôi nét về Tailwind css

Tailwind là một utility-first CSS framework. Khác so với các framework CSS khác như Bootstrap nó không đi kèm với các thành phần được xác định trước. Thay vào đó, Tailwind CSS hoạt động ở cấp độ thấp hơn và cung cấp cho bạn một tập hợp các class hổ trợ CSS. Bằng cách sử dụng class này bạn có thể nhanh chóng tạo thiết kế tùy chỉnh một cách dễ dàng. Tailwind CSS không những tạo ra các class có sẵn và nó còn để bạn tạo ra thiết kế độc đáo cho riêng mình.

Utility-first

1 ) Utility-first css:

Là một cách tiếp cận mới giúp bạn thiết kế trang web của mình mà không cần viết quá nhiều css.Thay vào đó chúng ta có thể sử dụng những class có sãn trong thư viện đã được xây dựng.Đặc tính hay ho của nó là coi mổi thuộc tính trong css là một class, giúp bạn có thể style trược tiếp trên thẻ. Ngoài ra nó còn giúp chúng ta tránh lập đi lập lại các thuộc tính trong css như cách viết cũ nhờ đó khiến file css nhẹ đi đáng kể và tối ưu việc tránh xung đột css giữa các class.

2 ) Utility-first frameworks:

Utility-first frameworks cung cấp một lớp cấp thấp để tạo ra các thiết kế tùy chỉnh trong tệp HTML. Các lớp được đặt tên theo mục đích dự định của chúng để người bình thường dễ hiểu.

<div class="bg-white"></div>

Mục đích chính của class .bg-white là thêm background-color là màu trắng. Có các class khác nhau cho các mục đích khác nhau, chẳng hạn như thiết lập background-color hoặc thêm border.

Setup Tailwind with React

Tạo project react:

npx create-react-app my-project
cd my-project

Vì Create React App không cho phép bạn ghi đè cấu hình PostCSS , chúng ta cần cài đặt CRACO để có thể định cấu hình Tailwind:

npm install @craco/craco

Sau đó cập nhật lại file package.json:

  {
    "scripts": {
     "start": "craco start",
     "build": "craco build",
     "test": "craco test",
     "eject": "react-scripts eject"
    },
  }

Tạo file craco.config.js với cấu hình sau:

module.exports = {
  style: {
    postcss: {
      plugins: [
        require('tailwindcss'),
        require('autoprefixer'),
      ],
    },
  },
}

Tạo file tailwind.config.js:

npx tailwindcss init

Nó sẽ tự động tạo ra cấu hình như sau:

// tailwind.config.js
module.exports = {
  purge: [],
  darkMode: false, // or 'media' or 'class'
  theme: {
    extend: {},
  },
  variants: {
    extend: {},
  },
  plugins: [],
}

Cấu hình file index.css:

/* ./src/index.css */
@tailwind base;
@tailwind components;
@tailwind utilities;
 // src/index.js
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

  ReactDOM.render(
    <React.StrictMode>
      <App />
    </React.StrictMode>,
    document.getElementById('root')
  );

Ví dụ

import React from "react";

const Card = () => {
  return (
    <div class="max-w-md py-4 px-8 bg-white shadow-lg rounded-lg my-20">
      <div class="flex justify-center md:justify-end -mt-16">
        <img
          class="w-20 h-20 object-cover rounded-full border-2 border-indigo-500"
          src="https://images.unsplash.com/photo-1499714608240-22fc6ad53fb2?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=334&q=80"
        />
      </div>
      <div>
        <h2 class="text-gray-800 text-3xl font-semibold">Design Tools</h2>
        <p class="mt-2 text-gray-600">
          Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae dolores
          deserunt ea doloremque natus error, rerum quas odio quaerat nam ex
          commodi hic, suscipit in a veritatis pariatur minus consequuntur!
        </p>
      </div>
      <div class="flex justify-end mt-4">
        <a href="#" class="text-xl font-medium text-indigo-500">
          John Doe
        </a>
      </div>
    </div>
  );
};

export default Card;

Import nó vào trong app . Kết quả thu được

Các đặc tính nổi bật

I) Functions & Directives

1) @tailwind

Sử dụng lệnh @tailwind để chèn thiết lập ban đầu base, components, utilitiesscreens vào css

@tailwind base;
@tailwind components;
@tailwind utilities;
@tailwind screens;

2) @apply

Sử dụng@apply để sử dụng được những class built-in của framework trong một class mới.Giúp code chúng ta gọn hơn.

.btn {
  @apply font-bold py-2 px-4 rounded;
}
.btn-blue {
  @apply bg-blue-500 hover:bg-blue-700 text-white;
}
<button className="btn btn-blue"></button>

Và khi render ra nó củng chỉ được tạo ra dưới dạng atomic

3) @layer

Sử dụng lệnh @layer để cho Tailwind biết tập hợp các kiểu này thuộc về nhóm nào. Các lớp hợp lệ là base, components, và utilities.

@tailwind base;
@tailwind components;
@tailwind utilities;

@layer base {
  h1 {
    @apply text-2xl;
  }
  h2 {
    @apply text-xl;
  }
}

@layer components {
  .btn-blue {
    @apply bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded;
  }
}

@layer utilities {
 .filter-none {
    filter: none;
 }
 .filter-grayscale {
    filter: grayscale(100%);
 }
}

Tailwind sẽ tự động di chuyển bất kỳ CSS nào trong nhóm chỉ định @layer đến với nhóm của nó, vì vậy bạn không phải lo lắng nhiều về việc tạo CSS của mình theo một thứ tự cụ thể để tránh các vấn đề về tính cụ thể.

II) Customizing design

Ngoài việc sử dụng các giá trị mặc định được định nghĩa sẵn bởi Tailwind CSS chúng ta hoàn toàn có thể thiết lập, override lại các giá trị đó bằng cách sửa file tailwind.config.js .

module.exports = {
  important: true,
  theme: {
    borderRadius: {
       sm:'2px',
       md: '5px',
    },
    extend: {
        fontSize: {
         sm: '12px',
         base: '14px',
         m: '16px',
         l: '18px',
         xl: '24px',
         '2xl': '36px',
         '3xl': '48px',
        },
    },
    
  },
  variants: {},
  plugins: []
}
<h6 className="text-sm">Trong</h6>
<h6 className="text-sm">Trong</h6>
<h6 className="text-sm  rounded-md">Trong</h6>

Lưu ý rằng các thuộc tính viết ở ngoài extend thì các thuộc tính có sãn trong tailwind sẽ không sử dụng được

III) Configuring Variants

Phần biến thể của tệp tailwind.config.js là nơi bạn kiểm soát những biến thể nào nên được bật cho mỗi plugin :

// tailwind.config.js
module.exports = {
  variants: {
    extend: {
      backgroundColor: ['active'],
      borderColor: ['focus-visible', 'first'],
      textColor: ['visited'],
    }
  },
}

Lưu ý rằng chỉ có một vài variants được bật sãn. Bạn cần đọc tài liệu để nắm được thông tin đó https://tailwindcss.com/docs/configuring-variants

// tailwind.config.js
module.exports = {
  variants: {
    extend: {
      backgroundColor: ['disabled'],
      borderColor: ['disabled'],
    }
  },
}

Sử dụng như sau:

<button className="disabled:bg-gray disabled:border-gray">Trong</button>

Kết luận

Tailwind CSS giới thiệu một cách khác về cách viết css mới lạ. Nó cung cấp cho bạn một tập hợp các lớp tiện ích có thể được sử dụng để tạo cho bạn thiết kế độc đáo và tùy chỉnh một cách dễ dàng. Tailwind CSS dể tuỳ biến, vì vậy bạn hoàn toàn tự do trong việc lựa chọn thiết kế các yếu tố và thành phần trên trang web của mình.

Tài liệu tham khảo


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí