BEM và cách đặt tên Class cho element
Lập trình CSS và SASS nâng cao với dự án website Landing Page

Danh sách bài học
BEM và cách đặt tên Class cho element
Nội dung bài viết Học nhanh
Dẫn nhập
Ở bài học trước chúng ta đã cùng nhau CONVERT PX SANG REM , từ đó dễ dàng khi tạo responsive webpage hơn nhiều so với việc sử dụng px.
Trong bài này chúng ta sẽ tìm hiểu về BEM và cách đặt tên class cho element.
Nội dung
Để nắm vững bài này các bạn cần:
- Có kiến thức cơ bản về CSS.
- Đã xem qua bài TỔNG QUAN CÁCH HOẠT ĐỘNG CỦA CSS VÀ 3 THỨ ĐỂ TẠO 1 WEBSITE TỐT.
- Đã xem qua bài XỬ LÍ TRÙNG LẶP KHI KHAI BÁO CÁC FEATURES HAY CÁC PROPERTIES CỦA CSS
- Đã xem qua bài TÌM HIỂU QUÁ TRÌNH XỬ LÝ CUỐI CÙNG CỦA CSS
Trong bài này chúng ta sẽ cùng nhau tìm hiểu
- Think – Build – Architect Mindset
- Think (nghĩ về layout trước)
- Build (Đặt tên classes)
- Architect ( Tổ chức folder, sử dụng Sass)
Think – Build – Architect Mindset
Như chúng ta đã nói ở bài TỔNG QUAN CÁCH HOẠT ĐỘNG CỦA CSS VÀ 3 THỨ ĐỂ TẠO 1 WEBSITE TỐT., việc code CSS nên được làm thỏa mãn các tiêu chí: Rõ ràng (Clean), Chia nhỏ thành các phần (Modular), dễ tái sử dụng (Reusable), và dễ mở rộng (Ready for growth).
Để làm được điều đó ta cần 3 bước:
- Bước 1: THINK suy nghĩ về cách tổ chức code, các layout hiển thị lên webpage và thường sẽ sử dụng wireframe.
- Bước 2: BUILD: Xây dựng code HTML dựa trên wireframe và đặt tên class 1 cách có cấu trúc.
- Bước 3: ARCHITECT: Chia nhỏ các phần CSS thành các file và folder 1 các logic
Think about the layout
- Website sẽ xây dựng dựa trên các component nhỏ (Component - Driven design).
- Những component gắn kết với nhau dựa vào layout của webpage.
- Các component này được xây dựng độc lập và có thể tái sử dụng ở các page khác nhau trong cùng 1 project hoặc các project khác nhau.
Build( Đặt tên class)
Ở đây chúng ta làm quen với BEM (Block Element Modifier)
- Block: tên của component, có nghĩa mô tả tổng thể của component đó
- Element: nó dùng để đặt tên các phần từ bổ trợ cho component (Block)
- Modifier: Các dạng khác biến thể của 1 block hoặc element
Chúng ta sẽ hiểu rõ hơn qua ví dụ sau:
Trong đó, chúng ta thấy:
- Block (card) là mô tả toàn bộ component.
- Element (heading, content) chỉ các bộ phận của component này.
- Modifier (sub, main) chỉ ra có 2 loại element (heading) gồm heading chính và heading phụ
Trong Sass sẽ hỗ trợ chúng ta rất nhiều trong việc sử dụng BEM ( chúng ta sẽ tìm hiểu ở những bài học sau)
Vậy qua các phần trên, chúng ta đã thấy được lợi ích của việc sử dụng BEM là giúp tổ chức tốt code CSS, dễ bảo trì, tái sử dụng, tránh tình trạng code chồng chéo lên nhau. Ví dụ như cùng là heading nhưng card heading và header heading khác nhau, …
Architect (Tổ chức folders, Sass)
Sass sẽ hỗ trợ chúng ta trong việc chia code CSS thành các folder và các file chứa các component nhỏ.
Nôm na của mô hình tổ chức chúng ta sẽ chia làm 7 folders và 1 file main.sass chính import tất cả các files trong các folder để compile thành CSS
7 folder ở đây chia thành từng mảng:
- Base/ (chứa các setting ban đầu)
- Components/ ( chứa các bộ phận nhỏ dễ tái sử dụng như button, card, …)
- Layout/ ( chứa footer, navbar,…)
- Pages/ (chứa tên các page nếu project web của bạn có nhiều page khác nhau vd: home, login, …)
- Abstracts/ (chứa animation, các function, mixin khi sử dụng sass sẽ được đề cập kĩ hơn khi chúng ta làm quen với sass)
- Themes/ (các mẫu có sẵn)
- Vendors/ (code CSS bên ngoài như bootstrap, …)
Lưu ý: Không phải lúc nào chúng ta cũng sử dụng hết 7 folders này ( ví dụ themes/ sẽ không được sử dụng trong khóa học của chúng ta) nhưng chúng sẽ đều sẽ được chia thành các phần nhỏ vào 1 trong 7 folders này.
Kết luận
Ở bài học này chúng ta đã cùng nhau tìm hiểu về BEM và cách cấu trúc code CSS.
Ở bài học sau, để hiểu rõ hơn cách sử dụng BEM, chúng ta sẽ ỨNG DỤNG NÓ VÀO PROJECT CỦA CHÚNG TA.
Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận và góp ý của mình để giúp phát triển bài viết tốt hơn. Đừng quên: "Luyện tập – Thử thách – Không ngại khó".
Tải xuống
Tài liệu
Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học BEM và cách đặt tên Class cho element dưới dạng file PDF trong link bên dưới.
Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com
Đừng quên like và share để ủng hộ Kteam và tác giả nhé!

Thảo luận
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
Tác giả/Dịch giả
Khóa học
Lập trình CSS và SASS nâng cao với dự án website Landing Page
Qua khóa FRONT END CƠ BẢN , Kteam đã hướng dẫn các bạn đã có được những kiến thức cơ bản về HTML và CSS.
Trong combo Front End 2019, chúng ta sẽ cùng nhau tìm hiểu và áp dụng những kiến thức chuyên sâu về CSS. Do kiến thức về CSS trong khóa học khá lớn và chi tiết nên Kteam đã chia làm 2 phần.
- Phần 1: CSS và SASS Nâng Cao
- Phần 2: Flexbox và CSS grid layouts
Ở khóa học này chúng ta sẽ cũng nhau tìm hiểu tổng quát về phần 1: CSS và SASS Nâng Cao với dự án Website Landing Page.
Bạn cũng có thể truy cập vào đường link bên dưới để xem bản PRIEVIEW của website landing page Selftaught 2019 mà chúng ta sẽ cùng thực hiện nhé!
Đánh giá
