- vừa được xem lúc

Sử dụng Mixin trong SASS

0 0 18

Người đăng: Thanh Hung

Theo Viblo Asia

Như các bạn đã biết SASS là một công nghệ cực kỳ hữu ích để viết style nó không chỉ ngắn gọn hơn việc viết CSS là lại cực kỳ dễ hiểu và dễ quản lý. Ở bài viết này chúng ta sẽ cùng nhau tìm hiểu về một chức năng khá hay mà các bạn không nên bỏ qua trong SASS. Đó chính là Mixin.

Mixin trong SASS là gì?

Mixin cho phép bạn gom nhóm CSS lại với nhau để có thể tái sử dụng. Điều này giúp bạn tránh việc lặp đi lặp lại một đoạn CSS. Ví dụ:

a:link { color: white; }
a:visited { color: blue; }
a:hover { color: green; }
a:active { color: red; }

Ở ví dụ trên khi chưa sử dụng mixin thì chúng ta có thể sẽ bị rối trí nếu như có nhiều thẻ a. Do đó ta có thể tạo style cho các thẻ a của mình bằng một sass mixin sau:

@mixin linx ($link, $visit, $hover, $active) { a { color: $link; &:visited { color: $visit; } &:hover { color: $hover; } &:active { color: $active; } }
}

Phân loại Mixin

Mixin được phân chia làm 2 loại

  1. Không sử dụng tham số
@mixin mixin_name { // SASS selectors...
}
  1. Có tham số
@mixin mixin_name(param1, param2...)
{ // SASS selectors...
}

Để sử dụng Mixin ta dùng cú pháp sau:

@include mixin_name;

Bây giờ hãy cùng làm quen một ví dụ nha (Xây dựng mixin chứa những đoạn mã CSS cho menu): SCSS:

@mixin menu{ #menu { li { height: 30px; line-height: 30px; a { background: #333; text-decoration: none; } } }
} @include menu;

CSS sau khi được biên dịch

#menu li { height: 30px; line-height: 30px; } #menu li a { background: #333; text-decoration: none; }

Lưu ý: Nếu bạn viết Mixin ở một file khác các bạn nhớ include vào file css của mình.

Một số trường hợp hay sử dụng Mixin

Sử dụng biến

Trong Mixin các bạn vẫn có thể sử dụng biến bình thường.

Ví dụ:

SCSS:

$color-red: red; @mixin link_color_red{ color: $color-red;
} .header a{ @include link_color_red;
}

CSS được biên dịch sẽ là:

.header a{ color: red; }

Sử dụng tham số

Như mình giới thiệu ở trên Mixin cũng có thể truyền được tham số.

Ví dụ:

SCSS:

@mixin header($background){ background: $background;
} .header{ @include header(green); border: solid 1px;
}

CSS sau khi biên dịch

.header { background: green; border: solid 1px; }

Ngoài ra các bạn có thể truyền được nhiều tham số hơn nhé. Ở đây mình lấy ví dụ 1 tham số cho nhanh 😄.

Mixin với tham số có giá trị mặc định

Thông thường khi sử dụng Mixin có tham số bạn sẽ phải truyền đầy đủ các tham số tuy nhiên trong một vài trường hợp tham số đó chỉ thay đổi ở một số chỗ thì chúng ta cũng có thể đặt giá trị mặc định cho chúng. Nhưng có một lưu ý nhỏ là nếu Mixin có nhiều tham số và chỉ có một số ít tham số là có giá trị mặc định thì bắt buộc những tham số có giá trị mặc định này phải nằm ở cuối cùng bằng không các bạn vẫn sẽ phải truyền đầy đủ các tham số đã có trong Mixin. Cùng theo dõi ví dụ sau:

SCSS:

@mixin background($background : blue) { background: $background;
} .header { @include background(green); border: solid 1px;
} .footer { @include background; border: solid 1px;
}

CSS sau khi biên dịch

.header { background: green; border: solid 1px; } .footer { background: blue; border: solid 1px;
}

Sử dụng @content để bổ sung CSS cho Mixin

Nếu bạn muốn trong mixin có thể bổ sung CSS cho nó sau khi khai báo thì bạn sử dụng từ khóa @content đặt trong vị trí muốn bổ sung và khi sử dụng nếu ta khai báo CSS thêm thì nó sẽ tự động điền vào đúng vị trí.

Ví dụ:

SCSS:

@mixin header($background){ background: $background; @content;
} .header{ @include header(red){ padding: 20px; };
}

CSS sau khi biên dịch:

.header { background: red; padding: 20px; }

Kết luận

Như vậy trong bài này mình cùng các bạn đã cùng nhau tìm hiểu về Mixin trong SASS chức năng vô cùng hữu ích để tối giản việc code lặp lại các CSS giống nhau. Cảm ơn các bạn đã theo dõi. Chúc các bạn học tập hiệu quả (bow).

Bình luận

Bài viết tương tự

- vừa được xem lúc

[Front-end Developer] Một vài mẹo để viết code CSS chuyên nghiệp hơn

Để tiếp tục với phần 1 của bài viết [Front-end Developer] Viết CSS sao cho chuẩn không cần chỉnh thì ở bài viết này mình xin chia sẻ một vài bí kíp nữa để chúng ta có thể nâng cao trình độ CSS của bản thân lên một tầm mới =)). 1.

0 0 37

- vừa được xem lúc

[Front-end Developer] Viết CSS sao cho chuẩn không cần chỉnh

Đôi nhời phát biểu. Trong quá trình phát triển các sản phẩm phần mềm, mình thấy việc chú ý đến code conventions(các nguyên tắc chung khi lập trình làm cho code dễ hiểu, dễ đọc và dễ bảo trì) khá là quan trọng.

0 0 29

- vừa được xem lúc

Những lý do khiến mình thích CSS custom properties hơn SASS variables?

Halo các bạn,. Lại là mình với một bài post liên quan tới chủ đề Front-end đây Mình còn nhớ hồi mình bắt đầu tìm hiểu và bị SASS lôi cuốn, mình đã nghĩ rằng mình sẽ chẳng bao giờ cần dùng đụng tới CSS

0 0 86

- vừa được xem lúc

Build Blog Post Card with Animation Using HTML SCSS JavaScript

Build Blog Post Card with Animation Using HTML SCSS JavaScript. . In this video, we will make blog post card with animation using HTML, SCSS and JavaScript. .

0 0 31

- vừa được xem lúc

Giỏi nhanh CSS Flexbox

Giới thiệu. Chào toàn thể Anh Chị Em của cộng đồng Viblo .

0 0 49

- vừa được xem lúc

Cấu trúc thư mục với SASS

Khi một project phát triển và mở rộng, việc mô-đun hoá và cấu trúc là thiết yếu. Vì vậy việc tổ chức tệp tin và folder là việc cần thiết mặc dù không có cấu trúc nào "hoàn toàn chính xác" mà nó phụ th

0 0 72