Tìm hiểu Sass SCSS là gì: Công cụ tiền xử lý CSS hiệu quả cho phát triển web

Chào bạn, tôi là Bùi Mạnh Đức đây. Trong quá trình làm việc với các dự án website, đặc biệt là với WordPress, tôi nhận thấy rằng việc quản lý CSS là gì ngày càng trở nên thách thức khi quy mô dự án lớn dần. Bạn đã bao giờ cảm thấy “ngột ngạt” khi phải dò tìm trong một file CSS dài hàng ngàn dòng, hay phải lặp đi lặp lại những đoạn mã giống hệt nhau cho các nút bấm và thành phần khác nhau chưa? Đó là lúc những công cụ như Sass và SCSS tỏa sáng. Chúng không chỉ là giải pháp, mà là một cuộc cách mạng trong cách chúng ta viết và quản lý CSS. Bài viết này sẽ là kim chỉ nam, dẫn dắt bạn từ khái niệm cơ bản đến việc ứng dụng Sass/SCSS vào dự án thực tế một cách hiệu quả.

Hình minh họa

Giới thiệu tổng quan về Sass và SCSS

Khi các dự án web ngày càng phức tạp, file CSS của chúng ta cũng phình to theo. Việc duy trì, sửa lỗi và mở rộng một file CSS dài hàng ngàn dòng trở thành một cơn ác mộng. Bạn muốn đổi một mã màu chủ đạo? Bạn phải tìm và thay thế ở hàng chục, thậm chí hàng trăm nơi. Sự lặp lại code không chỉ tốn thời gian mà còn tiềm ẩn nguy cơ gây lỗi và thiếu nhất quán. Đây chính là vấn đề mà CSS thuần túy khó lòng giải quyết triệt để.

Để khắc phục những nhược điểm này, các bộ tiền xử lý CSS (CSS Preprocessor) đã ra đời, và Sass (Syntactically Awesome Style Sheets) chính là một trong những cái tên tiên phong và mạnh mẽ nhất. Sass, cùng với biến thể cú pháp SCSS của nó, cung cấp cho chúng ta những “siêu năng lực” mà CSS thuần không có, như biến, mixin, kế thừa, và các cấu trúc logic. Chúng giúp việc viết CSS trở nên có tổ chức, hiệu quả và dễ dàng bảo trì hơn rất nhiều.

Trong bài viết này, chúng ta sẽ cùng nhau khám phá mọi ngóc ngách của Sass/SCSS. Bắt đầu từ việc tìm hiểu Sass là gì, tiền xử lý CSS là gì, so sánh hai cú pháp Sass và SCSS để xem bạn hợp với loại nào, đi sâu vào các tính năng cốt lõi đã làm nên tên tuổi của chúng, và cuối cùng là hướng dẫn cài đặt và áp dụng vào dự án thực tế. Hãy cùng Bùi Mạnh Đức bắt đầu hành trình nâng cấp kỹ năng CSS của bạn nhé!

Khái niệm về tiền xử lý CSS và vai trò của Sass/SCSS

Để hiểu rõ sức mạnh của Sass/SCSS, trước tiên chúng ta cần làm quen với khái niệm “tiền xử lý CSS“. Đây là nền tảng giúp bạn thấy được tại sao chúng lại là một công cụ không thể thiếu trong quy trình phát triển web hiện đại.

Tiền xử lý CSS là gì?

Tiền xử lý CSS (CSS Preprocessor) là một công cụ cho phép bạn viết CSS bằng một cú pháp nâng cao hơn, mạnh mẽ hơn. Hãy tưởng tượng bạn đang có một bản nháp chi tiết cho một bài viết. Bản nháp này có các ghi chú, các ý tưởng viết tắt, các đoạn tham khảo. Sau đó, bạn dùng một “công cụ” để biên tập, sắp xếp lại và tạo ra bài viết hoàn chỉnh. Tiền xử lý CSS hoạt động tương tự như vậy.

Bạn sẽ viết mã trong một file có cú pháp đặc biệt (ví dụ như .scss hoặc .sass), sau đó một chương trình “biên dịch” (compiler) sẽ đọc file này và chuyển đổi nó thành một file CSS thuần túy mà trình duyệt có thể hiểu được. Quá trình này diễn ra trước khi trang web được tải lên, do đó gọi là “tiền xử lý”.

Lợi ích lớn nhất so với CSS thuần là khả năng sử dụng các tính năng lập trình như biến (variables) để lưu trữ màu sắc, font chữ; mixin để tái sử dụng các cụm thuộc tính; các vòng lặp và câu lệnh điều kiện để tự động hóa việc viết mã. Điều này giúp mã nguồn của bạn trở nên gọn gàng, dễ quản lý và có tính module hóa cao.

Hình minh họa

Sass và SCSS trong hệ thống tiền xử lý CSS

Trong thế giới của các bộ tiền xử lý CSS, Sass là một trong những “người khổng lồ” bên cạnh các đối thủ như LESS hay Stylus. Sass ra đời với mục tiêu làm cho việc viết CSS trở nên thú vị, có cấu trúc và hiệu quả hơn. Nó cung cấp một bộ công cụ phong phú để giải quyết các vấn đề cố hữu của CSS.

Sass thực chất có hai loại cú pháp khác nhau: cú pháp gốc (Sass) và SCSS (Sassy CSS). SCSS ra đời sau và hiện đang là cú pháp phổ biến hơn cả. Vai trò chính của Sass/SCSS trong phát triển front-end là cầu nối giữa tư duy lập trình và việc viết style. Nó cho phép các nhà phát triển xây dựng hệ thống thiết kế (Framework là gì) một cách nhất quán, tổ chức mã nguồn theo từng module nhỏ dễ quản lý, và tăng tốc độ phát triển lên đáng kể. Thay vì viết hàng trăm dòng CSS lặp lại, bạn có thể viết vài dòng SCSS thông minh để tạo ra kết quả tương tự.

So sánh cú pháp Sass và SCSS

Một trong những điều gây bối rối cho người mới bắt đầu là sự tồn tại song song của hai cú pháp: Sass và SCSS. Cả hai đều là Sass, nhưng cách viết lại khác nhau. Lựa chọn cú pháp nào phụ thuộc vào sở thích cá nhân và nền tảng của bạn. Hãy cùng xem chúng khác nhau như thế nào nhé.

Đặc điểm cú pháp Sass

Cú pháp Sass (còn gọi là “indented syntax” – cú pháp thụt đầu dòng) là cú pháp nguyên thủy của Sass. Đặc điểm nhận dạng rõ ràng nhất của nó là việc loại bỏ hoàn toàn dấu ngoặc nhọn {} và dấu chấm phẩy ;. Thay vào đó, cấu trúc lồng nhau được xác định bởi việc thụt lề (indentation). Mỗi dòng mới đại diện cho một thuộc tính mới.

Ví dụ về cú pháp Sass:


nav
  ul
    margin: 0
    padding: 0
    list-style: none
  li
    display: inline-block
  a
    display: block
    padding: 6px 12px
    text-decoration: none

Cú pháp này rất gọn gàng, tối giản và buộc người viết phải tuân thủ quy tắc thụt lề nhất quán, giúp code sạch sẽ hơn. Tuy nhiên, nó khá khác biệt so với CSS truyền thống, có thể gây khó khăn cho những người đã quen với cú pháp của CSS.

Đặc điểm cú pháp SCSS

SCSS (Sassy CSS) được giới thiệu trong phiên bản Sass 3 và nhanh chóng trở thành lựa chọn mặc định của đa số nhà phát triển. Lý do rất đơn giản: SCSS là một tập hợp cha (superset) của CSS. Điều này có nghĩa là mọi đoạn mã CSS hợp lệ cũng là một đoạn mã SCSS hợp lệ. SCSS sử dụng dấu ngoặc nhọn {} và dấu chấm phẩy ; giống hệt như CSS.

Hình minh họa

Ví dụ về cú pháp SCSS tương đương với ví dụ trên:


nav {
  ul {
    margin: 0;
    padding: 0;
    list-style: none;
  }
  li {
    display: inline-block;
  }
  a {
    display: block;
    padding: 6px 12px;
    text-decoration: none;
  }
}

Nhờ sự tương đồng này, việc chuyển đổi từ một dự án CSS thuần sang SCSS cực kỳ dễ dàng. Bạn chỉ cần đổi tên file từ .css thành .scss là đã có thể bắt đầu sử dụng các tính năng của Sass. Đây là lựa chọn thân thiện nhất cho người mới bắt đầu và cũng là cú pháp được khuyên dùng trong hầu hết các trường hợp hiện nay. Trong phần còn lại của bài viết, chúng tôi sẽ sử dụng cú pháp SCSS để minh họa.

Các tính năng chính của Sass/SCSS

Sức mạnh thực sự của Sass/SCSS nằm ở các tính năng mà nó cung cấp. Những tính năng này giúp bạn viết CSS nhanh hơn, thông minh hơn và có tổ chức hơn. Dưới đây là những “vũ khí” lợi hại nhất mà bạn cần nắm vững.

Biến (Variables)

Biến trong SCSS cho phép bạn lưu trữ các giá trị thường dùng và tái sử dụng chúng trong toàn bộ file stylesheet. Các giá trị này có thể là mã màu, kích thước font, giá trị padding, v.v. Cú pháp khai báo biến bắt đầu bằng dấu $.

Hãy tưởng tượng bạn có một màu thương hiệu chính là #3498db. Thay vì gõ lại mã màu này ở 20 nơi khác nhau, bạn chỉ cần định nghĩa nó một lần.

Ví dụ về biến trong SCSS:


// Khai báo biến
$primary-color: #3498db;
$font-stack: 'Helvetica', sans-serif;
$base-padding: 15px;

// Sử dụng biến
body {
  font-family: $font-stack;
  color: $primary-color;
}

.container {
  padding: $base-padding;
}

Khi biên dịch, SCSS sẽ thay thế các biến bằng giá trị thực của chúng. Lợi ích khổng lồ ở đây là khi bạn muốn đổi màu chủ đạo, bạn chỉ cần thay đổi giá trị của biến $primary-color ở một nơi duy nhất. Toàn bộ website sẽ được cập nhật theo.

Hình minh họa

Mixin và vòng lặp (Mixins & Loops)

Mixin giống như một “hàm” trong lập trình. Nó cho phép bạn định nghĩa một nhóm các thuộc tính CSS và tái sử dụng chúng ở bất kỳ đâu bạn muốn. Mixin đặc biệt hữu ích cho các đoạn mã lặp đi lặp lại như tiền tố trình duyệt (vendor prefixes) hoặc các style phức tạp cho một thành phần.

Ví dụ về mixin để tạo hiệu ứng bo góc:


@mixin border-radius($radius) {
  -webkit-border-radius: $radius;
  -moz-border-radius: $radius;
  -ms-border-radius: $radius;
  border-radius: $radius;
}

.box {
  // Gọi mixin và truyền giá trị
  @include border-radius(10px);
}

Vòng lặp (@for, @each, @while) cho phép bạn tự động tạo ra các lớp CSS. Ví dụ, bạn có thể dùng vòng lặp @for để tạo một hệ thống lưới (grid system) 12 cột mà không cần phải viết thủ công từng lớp .col-1, .col-2,…

Hình minh họa

Các tính năng đặc biệt khác như @extend (kế thừa) cho phép một selector kế thừa toàn bộ style của một selector khác, và câu lệnh điều kiện @if/@else giúp bạn viết style tùy biến dựa trên một điều kiện nào đó. Tất cả những công cụ này biến SCSS thành một ngôn ngữ kịch bản mạnh mẽ cho CSS.

Lợi ích khi sử dụng Sass/SCSS trong phát triển CSS

Việc dành thời gian để học và tích hợp Sass/SCSS vào quy trình làm việc không phải là một sự đầu tư vô ích. Những lợi ích mà nó mang lại sẽ giúp bạn tiết kiệm hàng giờ làm việc và nâng cao chất lượng mã nguồn một cách rõ rệt. Hãy cùng điểm qua những ưu điểm vượt trội nhất.

Đầu tiên và quan trọng nhất, Sass/SCSS giúp tăng tốc độ viết mã và bảo trì code. Nhờ vào các tính năng như biến và mixin, bạn không còn phải lặp lại những đoạn mã dài dòng. Việc cập nhật và sửa đổi thiết kế trở nên nhanh chóng và chính xác hơn bao giờ hết. Chỉ cần thay đổi một biến màu sắc hay một mixin định dạng nút bấm, toàn bộ hệ thống sẽ tự động cập nhật theo.

Thứ hai, nó cho phép tổ chức CSS dễ dàng hơn qua việc phân chia files. Sass/SCSS có một tính năng gọi là Partials. Bạn có thể chia nhỏ file CSS khổng lồ của mình thành nhiều file SCSS nhỏ hơn, mỗi file quản lý một thành phần cụ thể (ví dụ: _variables.scss, _header.scss, _buttons.scss). Sau đó, bạn có thể dùng lệnh @import để gộp tất cả chúng lại thành một file CSS duy nhất khi biên dịch. Điều này làm cho cấu trúc dự án trở nên cực kỳ rõ ràng và dễ quản lý.

Hình minh họa

Thứ ba, việc sử dụng Sass/SCSS giúp giảm lỗi do việc tái sử dụng và chuẩn hóa mã. Khi mọi người trong nhóm đều sử dụng chung các biến và mixin đã được định nghĩa sẵn, tính nhất quán của giao diện người dùng sẽ được đảm bảo. Điều này hạn chế tối đa các lỗi phát sinh do gõ nhầm mã màu hay quên một thuộc tính nào đó. Cuối cùng, tất cả những điều trên dẫn đến việc hỗ trợ làm việc nhóm hiệu quả hơn, giúp các thành viên dễ dàng đọc, hiểu và đóng góp vào mã nguồn của nhau.

Hướng dẫn cài đặt và sử dụng Sass/SCSS cơ bản

Bây giờ khi bạn đã hiểu rõ về lợi ích của Sass/SCSS, hãy cùng bắt tay vào cài đặt và chạy thử nó. Quá trình này khá đơn giản và chỉ mất vài phút để thiết lập.

Cài đặt Sass qua npm hoặc các công cụ khác

Cách phổ biến và được khuyên dùng nhất để cài đặt Sass hiện nay là thông qua npm là gì (Node Package Manager), công cụ quản lý gói của Node.js. Nếu bạn chưa có Node.js, hãy tải và cài đặt nó từ trang chủ nodejs.org.

Sau khi đã có npm, bạn chỉ cần mở terminal (hoặc Command Prompt trên Windows) và chạy lệnh sau để cài đặt Sass trên toàn bộ máy tính của mình:


npm install -g sass

Cờ -g có nghĩa là “global”, cho phép bạn sử dụng lệnh sass từ bất kỳ thư mục nào trên máy tính. Sau khi cài đặt xong, bạn có thể kiểm tra lại bằng lệnh sass --version để xem phiên bản đã được cài đặt.

Ngoài npm, bạn cũng có thể sử dụng các ứng dụng có giao diện đồ họa như Koala, Prepros, hoặc CodeKit (cho macOS) để biên dịch Sass/SCSS mà không cần dùng dòng lệnh. Các công cụ này thường cung cấp giao diện trực quan hơn cho người mới bắt đầu.

Ví dụ viết file SCSS đơn giản và biên dịch

Hãy thử tạo một dự án nhỏ. Tạo một thư mục tên là my-project. Bên trong, tạo một file tên là style.scss và một file index.html.

Trong file style.scss, hãy viết đoạn mã sau:


$primary-color: #ff6347; // Tomato color

body {
  font-family: sans-serif;
}

.main-title {
  color: $primary-color;
  text-align: center;
  border-bottom: 2px solid $primary-color;
}

Bây giờ, hãy mở terminal, di chuyển vào thư mục my-project và chạy lệnh biên dịch:


sass style.scss style.css

Lệnh này sẽ đọc file style.scss, biên dịch nó và tạo ra một file mới tên là style.css. Nội dung file style.css sẽ như sau:


body {
  font-family: sans-serif;
}

.main-title {
  color: #ff6347;
  text-align: center;
  border-bottom: 2px solid #ff6347;
}

Cuối cùng, trong file index.html, bạn chỉ cần liên kết đến file style.css như bình thường. Để tự động biên dịch mỗi khi bạn lưu file .scss, bạn có thể dùng lệnh sass --watch style.scss:style.css. Đây là cách làm việc hiệu quả nhất trong quá trình phát triển.

Các ví dụ thực tế về ứng dụng Sass/SCSS trong dự án web

Lý thuyết là vậy, nhưng sức mạnh của Sass/SCSS chỉ thực sự bộc lộ khi bạn áp dụng nó vào các tình huống thực tế. Dưới đây là một vài ví dụ điển hình về cách bạn có thể tận dụng chúng để giải quyết các vấn đề thường gặp trong phát triển web.

Một trong những ứng dụng phổ biến nhất là quản lý theme và responsive dễ dàng. Hãy tưởng tượng bạn cần tạo hai giao diện: Sáng (Light mode) và Tối (Dark mode). Thay vì viết hai file CSS riêng biệt, bạn có thể dùng biến và mixin. Bạn định nghĩa các biến màu cho theme sáng và tối, sau đó dùng một mixin để áp dụng chúng.

Ví dụ về quản lý theme:


// _variables.scss
$light-bg: #ffffff;
$light-text: #333333;
$dark-bg: #222222;
$dark-text: #eeeeee;

// _mixins.scss
@mixin themify() {
  body.light-mode & {
    background-color: $light-bg;
    color: $light-text;
  }
  body.dark-mode & {
    background-color: $dark-bg;
    color: $dark-text;
  }
}

// styles.scss
.main-content {
  @include themify();
}

Với cấu trúc này, bạn chỉ cần thay đổi class trên thẻ <body> (ví dụ từ light-mode sang dark-mode bằng JavaScript) là toàn bộ giao diện sẽ thay đổi theo. Tương tự, bạn có thể tạo các mixin cho các điểm ngắt responsive design là gì (breakpoints) để quản lý CSS cho các kích thước màn hình khác nhau một cách tập trung và dễ đọc.

Hình minh họa

Một ví dụ khác là sử dụng vòng lặp để tạo style động. Giả sử bạn cần tạo các lớp tiện ích cho margin. Thay vì viết tay .m-1, .m-2,… bạn có thể dùng vòng lặp @for:


@for $i from 1 through 5 {
  .m-#{$i} {
    margin: #{$i * 4}px;
  }
}

Đoạn mã ngắn gọn trên sẽ tự động tạo ra 5 lớp CSS từ .m-1 (với margin: 4px;) đến .m-5 (với margin: 20px;). Điều này cực kỳ hữu ích khi xây dựng các thư viện UI hoặc hệ thống tiện ích cho dự án.

Common Issues/Troubleshooting

Dù mạnh mẽ, Sass/SCSS cũng có những cạm bẫy và lỗi thường gặp, đặc biệt với người mới. Việc nhận biết và biết cách khắc phục những vấn đề này sẽ giúp quá trình làm việc của bạn trơn tru hơn.

Lỗi biên dịch SCSS phổ biến và cách khắc phục

Lỗi phổ biến nhất là lỗi cú pháp. Với SCSS, lỗi này thường do quên dấu chấm phẩy ; ở cuối một thuộc tính hoặc quên dấu ngoặc nhọn {} đóng một khối. Hầu hết các trình biên dịch sẽ báo lỗi rất rõ ràng, chỉ rõ dòng và vị trí bạn mắc lỗi, vì vậy hãy đọc kỹ thông báo lỗi.

Một lỗi khác là lỗi không tìm thấy file hoặc import sai đường dẫn. Khi bạn sử dụng @import để nạp một file partial (ví dụ: @import 'variables';), hãy chắc chắn rằng tên file và đường dẫn là chính xác. Lưu ý, khi import một file partial có tên bắt đầu bằng dấu gạch dưới (ví dụ _variables.scss), bạn không cần ghi dấu gạch dưới và đuôi file trong lệnh import. Nếu file nằm trong một thư mục khác, bạn phải cung cấp đường dẫn tương đối (ví dụ: @import 'components/buttons';).

Hình minh họa

Vấn đề về hiệu suất và cấu trúc file

Khi dự án lớn lên, file SCSS chính của bạn có thể trở nên quá lớn và khó quản lý. Cách tốt nhất để giải quyết vấn đề này là tách nhỏ file một cách hợp lý. Một cấu trúc phổ biến là mô hình 7-1, nơi bạn chia mã thành 7 thư mục (base, components, layout, pages, themes, abstracts, vendors) và gộp chúng lại trong 1 file chính (thường là main.scss). Điều này giúp bạn dễ dàng tìm kiếm và chỉnh sửa code.

Một vấn đề khác cần lưu ý là tránh lồng ghép selector quá sâu (deep nesting). Mặc dù tính năng lồng ghép rất tiện lợi, việc lồng quá 3-4 cấp có thể tạo ra các selector CSS rất dài và cụ thể, làm tăng kích thước file CSS và khó ghi đè về sau. Ví dụ, thay vì viết .section .list .item a, hãy cân nhắc viết class cụ thể hơn như .section-link để giữ cho selector ngắn gọn và hiệu quả.

Best Practices

Để tận dụng tối đa sức mạnh của Sass/SCSS và đảm bảo mã nguồn của bạn luôn sạch sẽ, dễ bảo trì, hãy tuân thủ một số nguyên tắc thực hành tốt nhất sau đây.

Đầu tiên, tổ chức file SCSS theo module rõ ràng. Như đã đề cập ở trên, hãy áp dụng một cấu trúc thư mục hợp lý như 7-1 pattern. Chia nhỏ các file theo chức năng: biến và mixin vào một nơi, style cơ bản vào một nơi khác, style cho các thành phần (nút, form) vào thư mục riêng. Điều này không chỉ giúp bạn mà còn giúp các thành viên khác trong nhóm dễ dàng nắm bắt cấu trúc dự án.

Hình minh họa

Thứ hai, sử dụng biến và mixin một cách hợp lý, tránh lạm dụng. Biến là công cụ tuyệt vời cho các giá trị cần tái sử dụng như màu sắc, font chữ, khoảng cách. Mixin nên được dùng cho các nhóm thuộc tính lặp đi lặp lại. Tuy nhiên, nếu bạn chỉ muốn kế thừa một nhóm style mà không cần tham số, hãy cân nhắc sử dụng placeholder selectors (%) và @extend. @extend giúp tạo ra CSS gọn hơn bằng cách nhóm các selector lại với nhau, trong khi @mixin sẽ chép toàn bộ khối mã vào mỗi nơi nó được gọi.

Thứ ba, thường xuyên kiểm tra lỗi biên dịch và viết code dễ đọc, dễ bảo trì. Hãy bật chế độ --watch để phát hiện lỗi ngay khi bạn lưu file. Thêm bình luận (comment) vào những đoạn mã phức tạp, đặc biệt là các mixin hoặc hàm. Cuối cùng, không nên viết quá nhiều logic phức tạp trong SCSS. Mặc dù SCSS có vòng lặp và điều kiện, hãy nhớ rằng nó là một ngôn ngữ để viết style, không phải một ngôn ngữ lập trình đa năng. Giữ cho logic trong SCSS đơn giản và tập trung vào việc tạo ra CSS.

Kết luận

Qua hành trình tìm hiểu từ khái niệm cơ bản đến các ví dụ thực tiễn, có thể thấy rằng Sass/SCSS không chỉ là một công cụ, mà là một sự nâng cấp toàn diện cho quy trình làm việc với CSS. Nó giúp giải quyết triệt để các vấn đề về sự lặp lại, khó bảo trì và thiếu tổ chức của CSS thuần. Bằng cách cung cấp các tính năng mạnh mẽ như biến, mixin, lồng ghép và module hóa, Sass/SCSS cho phép chúng ta viết mã nhanh hơn, sạch hơn và thông minh hơn.

Việc áp dụng Sass/SCSS vào dự án có thể ban đầu đòi hỏi một chút thời gian để làm quen, nhưng lợi ích lâu dài mà nó mang lại là vô cùng to lớn. Từ việc tăng năng suất cá nhân đến cải thiện sự hợp tác trong đội nhóm, đây chắc chắn là một kỹ năng mà bất kỳ nhà phát triển front-end nào cũng nên trang bị.

Tôi hy vọng bài viết này của Bùi Mạnh Đức đã cung cấp cho bạn một cái nhìn tổng quan rõ ràng và những kiến thức cần thiết để bắt đầu với Sass/SCSS. Đừng ngần ngại, hãy thử cài đặt và áp dụng nó ngay vào dự án nhỏ tiếp theo của bạn. Bạn sẽ nhanh chóng nhận ra tại sao nó lại được cộng đồng phát triển web yêu thích đến vậy. Chúc bạn thành công trên con đường chinh phục CSS hiện đại!

Đánh giá
Tác giả

Mạnh Đức

Có cao nhân từng nói rằng: "Kiến thức trên thế giới này đầy rẫy trên internet. Tôi chỉ là người lao công cần mẫn đem nó tới cho người cần mà thôi !"

Chia sẻ
Bài viết liên quan