Trong bài này chúng ta tìm hiểu cách khai báo một Placer Hoder để cho các selector khác kế thừa từ nó, và qua bài này bạn sẽ hiểu khi nào thì nên sử dụng Placer Holder và khi nào thì không nên sử dụng Placer Holder.
1. Place Holder trong SASS
Quay lại bài cũ chút xíu. Trong bài tìm hiểu extend mình có lấy một vi dụ về viết SASS cho các thông báo như sau:
SCSS:
.message{ border: solid 1px; text-align: center; font-size: 16px; padding: 20px 10px; } .error{ @extend .message; background: red; } .success{ @extend .message; background: blue; } .warning{ @extend .message; background: yellow; }
CSS sau khi biên dịch:
Bài viết này được đăng tại [kiso.vn]
.message, .error, .success, .warning { border: solid 1px; text-align: center; font-size: 16px; padding: 20px 10px; } .error { background: red; } .success { background: blue; } .warning { background: yellow; }
Rõ ràng lúc này trong HTML muốn sử dụng thì ta phải khai báo như sau:
<div class="message error"> Lỗi </div> <div class="message success"> Thành công! </div> <div class="message warning"> Cảnh báo! </div>
Hoặc:
<div class="error"> Lỗi </div> <div class="success"> Thành công! </div> <div class="warning"> Cảnh báo! </div>
Như vậy bạn thấy .message
là không cần thiết vì nó dư thừa. Để giải quyết nó thì ta sẽ khai báo .message
là một Place Holder thì SASS sẽ không biên dịch .message
thành selector CSS.
Cú pháp Place Holder:
%placerName{ /// }
Có nghĩa là ta thay dấu .
thành dấu %
.
Quay lại ví dụ trên ta viết lại như sau:
SCSS:
%message{ border: solid 1px; text-align: center; font-size: 16px; padding: 20px 10px; } .error{ @extend %message; background: red; } .success{ @extend %message; background: blue; } .warning{ @extend %message; background: yellow; }
CSS sau khi biên dịch:
.error, .success, .warning { border: solid 1px; text-align: center; font-size: 16px; padding: 20px 10px; } .error { background: red; } .success { background: blue; } .warning { background: yellow; }
Hãy so sánh hai cách trên để rút ra kết luận cho mình nhé.
2. Khi nào thì nên sử dụng Place Holder trong SASS
Tới đây có một câu hỏi đặt ra là khi nào thì chúng ta sư dụng Place Hoder? Câu trả lời chính là khi HTML của bạn không sử dụng selector đó thì ta nên khai báo là Place Holder để tối ưu hơn.
Quay lại ví dụ trên nếu trong HTML ta sử dụng selector .message
mặc định là success và HTML của nó thế này:
<div class="messsage"> Thành công! </div> <div class="messsage error"> Lỗi </div> <div class="messsage warning"> Cảnh báo! </div>
Thì lúc này cấu trúc của chúng ta phải như sau:
SCSS:
.message{ border: solid 1px; text-align: center; font-size: 16px; padding: 20px 10px; background: blue; } .error{ @extend .message; background: red !important; } .warning{ @extend .message; background: yellow !important; }
CSS sau khi biên dịch:
.message, .error, .warning { border: solid 1px; text-align: center; font-size: 16px; padding: 20px 10px; background: blue; } .error { background: red !important; } .warning { background: yellow !important; }
Rõ ràng mỗi cách viết khác nhau cho từng người và từng trường hợp cụ thể.
3. Lời kết
Qua bài này bạn đã hiểu Place Holder trong SASS và cách sử dụng nó để tối ưu CSS. Bài tiếp theo chúng ta sẽ tìm hiểu về cách khai báo biến trong SASS.
Bài viết liên quan
[CSF-2] Một số thiết lập CSF, LFD
Hôm nay mình sẽ thực hiện một số thiết lập trên CSF Mở file config để sửa đổi một số tính năng dưới /etc/csf/csf.conf Nội dung chính1. Place Holder trong SASS2. Khi nào thì nên...
[CSF-1] Tăng bảo mật Server với ConfigServer Firewall (CSF)
Nội dung chính1. Place Holder trong SASS2. Khi nào thì nên sử dụng Place Holder trong SASS3. Lời kết1. Khái niệm CSF: CSF (ConfigServer & Firewall) là một bộ ứng dụng hoạt động trên Linux...
Sử dụng SSH Key với Gitlab và Github
Bài viết này mình sẽ hướng dẫn các bạn tạo ssh key cho Gitlab và Github SSH là gì? Secure Socket Shell là một giao thức mạng dùng để thiết lập kết nối mạng một...
Directory traversal vulnerabilities (phần 4)
Nội dung chính1. Place Holder trong SASS2. Khi nào thì nên sử dụng Place Holder trong SASS3. Lời kếtV. Phân tích và khai thác các lỗ hổng Directory traversal (tiếp) 5. Bypass lỗ hổng khi...
Directory traversal vulnerabilities (phần 3)
Nội dung chính1. Place Holder trong SASS2. Khi nào thì nên sử dụng Place Holder trong SASS3. Lời kếtV. Phân tích và khai thác các lỗ hổng Directory traversal 1. Lỗ hổng xảy ra khi...
Directory traversal vulnerabilities (phần 2)
Nội dung chính1. Place Holder trong SASS2. Khi nào thì nên sử dụng Place Holder trong SASS3. Lời kếtIII. Vì sao lỗ hổng Directory traversal xuất hiện? Với mỗi ngôn ngữ lập trình khác nhau,...