Nếu bạn đang sử dụng SASS trong dự án của mình, tôi đã tạo ra mixin này để làm cho nó hoạt động theo cách mà tất cả chúng ta muốn nó:
@mixin not($ignorList...) {
//if only a single value given
@if (length($ignorList) == 1){
//it is probably a list variable so set ignore list to the variable
$ignorList: nth($ignorList,1);
}
//set up an empty $notOutput variable
$notOutput: '';
//for each item in the list
@each $not in $ignorList {
//generate a :not([ignored_item]) segment for each item in the ignore list and put them back to back
$notOutput: $notOutput + ':not(#{$not})';
}
//output the full :not() rule including all ignored items
&#{$notOutput} {
@content;
}
}
nó có thể được sử dụng theo 2 cách:
Tùy chọn 1: liệt kê các mục bị bỏ qua nội tuyến
input {
/*non-ignored styling goes here*/
@include not('[type="radio"]','[type="checkbox"]'){
/*ignored styling goes here*/
}
}
Tùy chọn 2: liệt kê các mục bị bỏ qua trong một biến đầu tiên
$ignoredItems:
'[type="radio"]',
'[type="checkbox"]'
;
input {
/*non-ignored styling goes here*/
@include not($ignoredItems){
/*ignored styling goes here*/
}
}
CSS xuất ra cho một trong hai tùy chọn
input {
/*non-ignored styling goes here*/
}
input:not([type="radio"]):not([type="checkbox"]) {
/*ignored styling goes here*/
}