Tôi muốn thực hiện một cái gì đó giống như mô hình BEM trong thư viện Sass của tôi. Nhưng tôi đang đấu tranh để tìm một cách sạch sẽ để làm điều này.Có thể bao gồm các thuộc tính cha mẹ trong một lớp Sass mở rộng không?
Ví dụ, tôi muốn khai báo một kiểu 'cơ sở' cho một yếu tố chung, và sau đó mở rộng nó với các biến thể hữu ích:
.container {
margin: 10%;
background: #eee;
&-featured {
border: 2px solid #999;
}
}
Vấn đề ở đây là rằng tạo .container-featured
lớp chỉ chứa các thuộc tính border — Sass không bao gồm lề và background từ lớp 'parent' của nó.
Vì vậy, bạn sẽ chỉ phải tăng gấp đôi lên trên lớp học trong đánh dấu của bạn để có được những kết quả mong muốn:
<div class="container container-featured">
...
</div>
Có một số cách để kéo các thuộc tính từ một lớp cha mẹ xuống mà lớp sửa đổi, vì vậy bạn có thể nhận được cùng một kết quả trực quan chỉ cần tham khảo lớp sửa đổi trong đánh dấu của bạn?
<div class="container-featured">
<!-- has margin, background, and border styles via just modifier class -->
</div>
Tôi đã cố gắng sử dụng mixins để làm điều này, nhưng mọi thứ trở nên dài dòng và lặp đi lặp lại rất nhanh:
@mixins container {
margin: 10%;
background: #eee;
}
.container {
@include container;
&-featured {
@include container;
border: 2px solid #999;
}
}
Có một cách sạch sẽ đơn giản để đạt được điều này với Sass?
Đó là sự thật và mã CSS sẽ không lớn. Tôi chỉnh sửa câu trả lời của mình. – Paleo
CSS kết quả không phải là những gì tôi mong đợi, nhưng giải pháp vẫn giữ nguyên. Cảm ơn rất nhiều, điều này là đơn giản, đủ để làm việc cho tôi! – markedup
Vậy làm thế nào một người có thể tham khảo một bộ chọn lồng nhau? tức là 'container__item - mod' khi ít được viết như' .container {& __ item {& - mod {}}} 'Hay có cách nào tốt hơn để lồng ghép? – Plummer