Đăng lúc
22:18 13.01.2022
Let’s get started !
Với cách này bạn chỉ cần viết CSS ngay trong thẻ <style>
và chèn thẻ này ngay trong file html của bạn là được. Bạn có thể đặt thẻ này ở trong cặp thẻ <head>
, trong <body>
trước các thẻ cần style, … Và bạn nên đặt nó trước hoặc trong body.
<head> <!-- ... --> <style type="text/css"> /* Viết CSS bạn ở đây */ div { color: pink; } </style> </head> <body> <!-- ... --> </body>
Ưu điểm:
Nhược điểm:
Đây là các truyền thống thường được sử dụng nhất. Để sử dụng thì bạn cần tách css của mình ra các file khác nhau có đuôi .css
. Sau đó bạn chỉ cần liên kết nó qua thẻ <link rel=”stylesheet”>
<head> <!-- ... --> <link rel="stylesheet" href="your-path-css-file" /> </head> <body> <!-- ... --> </body>
// Trong ReactJS bạn có thể dùng import để nhúng file css vào component import 'your-file.css'; function App(){ // ... }
Ưu điểm:
Nhược điểm:
Là việc bạn viết thẳng các css vào trong các thẻ html.
<body> <div style="color:pink;font-size:15px;"> Hello, world! </div> </body>
const divStyle = { coilor: 'pink', fontSize: '18px' }; function App() ( <div style={divStyle}> <p style={{color:'blue'}}>Hello, world!</p> </div> );
Ưu điểm:
Nhược điểm:
LƯU Ý: Những cách còn lại dưới đây bản chất nó chỉ giúp chúng ta compile ra CSS và style cho component theo 1 trong 3 cách trên. Vì cuối cùng thì trình duyệt vẫn chỉ hiểu được CSS, chỉ là thay vì viết CSS thuần thì các cách dưới này sẽ dùng cách thức khác để viết nhằm linh động và hiệu quả hơn ????
Tiền xử lý CSS (CSS Preprocessors) sẽ giúp chúng ta viết css một cách linh hoạt hơn như có thể dùng biến, hàm, mixin, css lồng nhau, vv…
Một số CSS Preprocessors thường dùng như Sass (Scss), Less, Stylus.
Lưu ý: Trình duyệt chỉ đọc hiểu được CSS, có nghĩa là các CSS Pre chỉ có giúp chúng ta viết code nhanh, gọn hơn thôi. Bản chất nó cũng phải biên dịch ra các file css và nhúng vào trong file html của bạn.
Mình sẽ demo việc dùng Scss nhé. Bạn có thể đọc cách dùng Scss ở đây
Bước 1: Cài đặt sass
# Cài đặt Sass (Nếu chưa có npm thì bạn cần cài Nodejs trước nhé) npm install -g sass
Bước 2: Tạo 1 file style.scss
, file này bạn sẽ dùng để viết scss cho nó.
Bước 3: Build file scss này ra file css. Bạn dùng lệnh sau:
# Build file style.scss thành file style.css sass style.scss style.css # Build file style.scss thành file style.css và tự động build lại nếu thay đổi file scss sass --watch style.scss style.css # Build cả folder chứa file scss ra folder chứa file css và theo dõi sự thay đổi của folder sass <folder_scss>:<folder_css> --watch
Bước 4: Nhúng các file css vào file html của bạn (nhớ là file css nhé)
Note: Nếu bạn dùng ReactJS thì có thể cài sass vào rồi import trực tiếp file scss vào nhé.
Ưu điểm:
Nhược điểm:
Atomic CSS là một kiến trúc hay cách thức với CSS, nó không phải thư viện hay gì cả.
Atomic là nguyên tử, nghĩa là bạn sẽ viết những css cho các class một cách tối giản nhất. Và những class này sẽ là những viên gạch nhỏ để xây dựng lên một ngôi nhà to.
Atomic CSS phải đảm bảo được tính nguyên tử của nó, nghĩa là một class chỉ làm đúng với ngữ nghĩa và tên của nó. Ví dụ:
<-- Cách viết thông thường --> <style> .box{ display: flex; align-items: center; justify-content: center; } </style> <div class="box"></div>
/* Dùng Atomic CSS */ .d-flex{ display: flex; } .align-i-center{ align-items: center; } jus-content-center{ justify-content: center; } /* <div class="d-flex align-i-center jus-content-center"></div> */
Ưu điểm:
Nhược điểm:
Css-in-JS là một kỹ thuật dùng Javascript để tạo ra các css và class tương ứng, sau đó gắn vào DOM.
Chúng ta có thể làm việc này thông qua các thư viện bên ngoài, phổ biến như Styled-component, JSS, Radium, …
import styled from 'styled-components'; const Button = styled.a` display: inline-block; border-radius: 3px; padding: 0.5rem 0; margin: 0.5rem 1rem; width: 11rem; background: transparent; color: white; border: 2px solid white; ${props => props.primary && css` background: white; color: black; `} ` function App(){ return <div> <Button href="https://github.com/styled-components/styled-components" target="_blank" rel="noopener" primary > GitHub </Button> <Button as={Link} href="#docs"> Documentation </Button> </div> }
Ưu điểm:
Khuyết điểm:
Với CSS modules chúng ta sẽ viết các stylesheet thành từng file nhỏ, phục vụ cho từng modules cụ thể. Cũng sử dụng cách thức import để nhúng file css vào component của chúng ta, nhưng điểm khác của nó là nó sẽ tạo ra một biến chứa các class tự tạo, gần như không trùng lắp. Việc này rất hữu ích.
/* file style.module.css */ .button { color: red; } .box { background-color: red; }
import styles from './style.module.css' console.log(styles); function App(){ return <div className={styles.box}> <button className={styles.button}></button> </div> } /* sytles = { button: 'style_button_2Lja', box: 'style_box_3Klq' } */
Ưu điểm:
Nhược điểm:
PostCSS là một Javascript tool cung cấp các API để chúng ta xử lý, biến đổi CSS (A tool for transforming CSS with JavaScript).
Điểm nổi bật của PostCSS là nó mang tính modular với lượng plugin khủng. Tuỳ vào mỗi project của bạn mà chỉ cần cài các plugin cần thiết.
Nếu bạn từng dùng Tailwind thì Tailwind khuyên bạn cài đặt nó như một plugin của PostCSS thay vì dùng CDN. Đều này giúp bạn có thể config được nhiều thứ hay ho hơn.
Ưu điểm:
Nhược điểm:
Trên đó là những gì mà mình biết về các style cho một component. Mong bài viết này hữu ích đến mọi người.
Cảm ơn mọi người đã đọc bài viết ????
Bạn có thể tham thảo thêm: