Câu trả lời đơn giản là: bạn không thể vì Sass không thể (hoặc sẽ không) soạn bộ chọn cho nó. Bạn không thể ở bên trong truy vấn phương tiện và mở rộng thứ gì đó ra bên ngoài truy vấn phương tiện. Chắc chắn sẽ rất tuyệt nếu nó chỉ cần lấy một bản sao của nó thay vì cố gắng soạn các bộ chọn. Nhưng nó không phải vì vậy bạn không thể.
Sử dụng hỗn hợp
Nếu bạn gặp trường hợp đang sử dụng lại một khối mã bên trong và bên ngoài các truy vấn phương tiện và vẫn muốn nó có thể mở rộng, thì hãy viết cả lớp mixin và lớp mở rộng:
@mixin foo {
}
%foo {
@include foo;
}
.foo {
@extend %foo;
}
@media (min-width: 30em) {
.bar {
@include foo;
}
}
Mở rộng bộ chọn trong một truy vấn phương tiện từ bên ngoài
Điều này sẽ không thực sự giúp ích cho trường hợp sử dụng của bạn, nhưng nó là một tùy chọn khác:
%foo {
@media (min-width: 20em) {
color: red;
}
}
@media (min-width: 30em) {
%bar {
background: yellow;
}
}
.foo {
@extend %foo;
}
.bar {
@extend %bar;
}
Chờ cho đến khi Sass gỡ bỏ hạn chế này (hoặc tự vá nó)
Có một số cuộc thảo luận đang diễn ra liên quan đến vấn đề này (vui lòng không đóng góp vào các chủ đề này trừ khi bạn có điều gì đó có ý nghĩa để thêm vào: những người bảo trì đã biết rằng người dùng mong muốn chức năng này, nó chỉ là một câu hỏi về cách triển khai nó và những gì cú pháp nên).