Ở bài viết này, chúng ta sẽ sử dụng CSS Modules trong React. Nếu bạn sử dụng ứng dụng tạo phản ứng [v2] để thiết lập ứng dụng phản ứng của mình thì các Mô-đun CSS đã được thiết lập sẵn. tạo-react-app [v2] để thiết lập ứng dụng phản ứng của bạn thì CSS Modules đã được thiết lập sẵn
Vì vậy còn chờ gì nữa ?
Sử dụng các Mô-đun CSS trong React
Bắt đầu với 1 thành phần Logo được tạo kiểu bằng SASS và chuyển đổi nó sang kiểu Mô-đun CSS
/* -- Logo.js -- */
import React from "react";
const Logo = [] => {
return [
{`thebao`}
{`dev`}
];
};
export default Logo
Thành phần kiểu với Mô-đun CSS
1. Tạo tệp Mô-đun CSS
Chúng ta sẽ tạo 1 file scss với định dạng là ComponentName.module.scss
cùng thư mục với Logo. js và bắt dầu style component Logo
Lưu ý ở ví dụ này mình sử dụng SCSS, các bạn hoàn toàn có thể sử dụng vanila CSS với
.module.css
/* -- Logo.module.scss -- */
.logo-wrapper {
position: relative;
z-index: 10;
margin: 0 auto;
.logo-text {
font-size: $font-size-large;
padding: 0 .5rem;
@include flexbox[];
@include align-items[center];
@include position[relative];
.content {
font-family: $font-family-logo;
background-color: $white;
color: $primary;
margin: auto 10px;
padding: 5px 10px;
border-radius: $border-radius-base;
transform: skew[-15deg, 0deg];
}
.key {
font-size: $font-size-super-large;
}
.name {
font-size: $font-size-large;
}
.extra {
background-color: $info;
border-radius: $border-radius-base;
opacity: .4;
transform: skew[-15deg, 0deg];
z-index: -1;
@include size[30px, 25px];
&-right {
@include position[absolute, -6px, 2px, null, null];
}
&-left {
@include position[absolute, null, null, -6px, 2px];
}
}
2. Nhập mô-đun CSS
Nhập các kiểu trên Logo. thành phần js. Biến logoStyles là 1 đối tượng chứa các kiểu CSS đã được xác định ở trên. Từ đó chúng ta có thể lấy các tên lớp đã được tạo-phản ứng-ứng dụng mô-đun hóa [*] và sử dụng chúng trong JSX của thành phần Logo. logoStyles là 1 đối tượng chứa các kiểu CSS đã xác định ở trên. Từ đó chúng ta có thể lấy các tên lớp đã được tạo-phản ứng-ứng dụng mô-đun hóa [*] và sử dụng chúng trong JSX của thành phần Logo
/* -- Logo.js -- */
import React from "react";
/* Import logoStyles */
import logoStyles from "./Logo.module.scss";
const Logo = [] => {
return [
{`thebao`}
{`dev`}
];
};
export default Logo
*mô-đun hóa. Khi chúng ta kiểm tra thành phần Logo, các tên lớp còn được thêm vào 1 chuỗi ký tự phía sau nó. Điều này giúp cho tên lớp là duy nhất, chỉ phạm vi trong thành phần nhập nó. Lưu ý là nhập Logo. mô-đun. scss ở 2 thành phần khác nhau thì nó cũng là 2 chuỗi ký tự khác nhau. Giải quyết các vấn đề xung đột, tính đặc hiệu của CSS và xếp tầng. mô-đun hóa. Khi chúng ta kiểm tra thành phần Logo, các tên lớp còn được thêm vào 1 chuỗi ký tự phía sau nó. Điều này giúp cho tên lớp là duy nhất, phạm vi duy nhất trong thành phần nhập nó. Lưu ý là nhập Logo. mô-đun. scss ở 2 thành phần khác nhau thì nó cũng là 2 chuỗi ký tự khác nhau. Giải quyết các vấn đề xung đột, tính đặc hiệu của CSS và xếp tầng