SASS CĂN BẢN
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Bài 08: Tìm hiểu Mixin trong SASS

Mình đã từng code CSS cho nhiều trang và mình cũng phân chia và comment rõ ràng cho từng vị trí, tuy nhiên trong quá trình phát triển và bảo trì thì vấn đề phân chia đó đã bị phá hủy bởi rất khó quản lý. Nhưng từ ngày sử dụng SASS thì mọi chuyện lại khác, ta chỉ quan tâm đến file SCSS thôi nên phải tuân theo nguyên tắc của nó và mọi chuyện không còn như trước nữa.

Và trong bài này chúng ta sẽ tìm hiểu đến Mixin, một chức năng khá hay của SASS mà bạn không thể bỏ qua.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. SASS Mixin là gì?

Mixin có thể hiểu nó như là một directive dùng để gom nhóm CSS lại với nhau, điều này khá giống với Place Holder nhưng không phải vậy, với Mixin thì bạn có thể truyền tham số vào còn Place Holder thì không. Và sau đây là cú pháp tạo Mixin:

Không có tham số:

@mixin mixin_name
{
    // SASS selectors...
}

Có tham số:

@mixin mixin_name(danh_sach_tham_so)
{
    // SASS selectors...
}

Và để gọi sử dụng Mixin thì ta sử dụng cú pháp sau:

@include mixin_name;

Ví dụ: Xây dựng mixin chứa những đoạn mã CSS cho menu

SCSS:

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

@include menu;

CSS sau khi biên dịch:

#menu a {
    background: #333;
    text-decoration: none; 
}

#menu li {
    height: 30px;
    line-height: 30px; 
}

2. Một số ví dụ của Mixin trong SASS

Sau đây là một số trường hợp hay sử dụng của Mixin trong SASS.

Sử dụng biến:

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

SCSS:

$color-blue : blue;

@mixin menu{
    background: $color-blue;
}

.header{
    @include menu;
}

CSS sau khi biên dịch:

.header {
  background: blue; 
}

Sử dụng tham số:

Muốn sử dụng tham số thì bạn phải dùng cú pháp thứ hai ở phần 1. Lưu ý là khi sử dụng bạn phải truyền đầy đủ các tham số.

SCSS:

@mixin nav($backgroud, $color){
    background: $backgroud;
    color: $color;
}

.nav{
    @include nav(red, white);
    border: solid 1px;
}

CSS sau khi biên dịch:

.nav {
    background: red;
    color: white;
    border: solid 1px; 
}

Giá trị mặc định của tham số:

Thường thì ban phải truyền đẩy đủ các tham số, tuy nhiên nếu ban muốn một tham số nào đó nếu người dùng không nhập vào nó lấy giá trị mặc định thì bạn sẽ sử dụng tham số mặc định lúc khai báo. Tuy nhiên có một lưu ý là nếu bạn có nhiều tham số và chỉ có một vài tham số là mặc định thì bắt buộc những tham số đó phải nằm cuối cùng nếu không khi truyền giá trị bạn phải truyền đầy đủ các tham số đấy.

CSCC:

@mixin nav($backgroud, $color : white){
    background: $backgroud;
    color: $color;
}

.nav{
    @include nav(red);
    border: solid 1px;
}

CSS sau khi biên dịch:

.nav {
    background: red;
    color: white;
    border: solid 1px; 
}

Truyền tham số trùng tên biến:

Như các trường hợp trên thì vị trí các tham số lúc truyền vào phải đúng vị trí của nó, tuy nhiên bạn cũng có thể bỏ qua vấn đề đó nếu lúc truyền biến bạn sử dụng dạng tham số trùng tên biến.

SCSS:

@mixin nav($background, $color){
    background: $background;
    color: $color;
}

.nav{
    @include nav($color : blue, $background : red);
    border: solid 1px;
}

CSS lúc biên dịch:

.nav {
    background: red;
    color: blue;
    border: solid 1px; 
}

Giá trị @content:

Nếu ban 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ụ: Sử dụng @content trong Mixin.

SCSS:

@mixin nav($border){
    border: $border;
    @content;
}

.nav{
    @include nav(solid 1px red 1231 ){
        padding: 20px;
    };
}

CSS sau khi biên dịch:

.nav {
    border: solid 1px red 1231;
    padding: 20px; 
}

3. Lời kết

Như vậy là mình đã giới thiệu xong cú pháp, cách sử dụng và một số trường hợp của Mixin trong SASS, hy vọng bài này sẽ giúp bạn bắt đầu máu lửa với SASS. Bài tiếp theo chúng ta sẽ tìm hiểu function trong SASS.

Cùng chuyên mục:

Mở đầu: Sự khác nhau giữa SASS và SCSS

Mở đầu: Sự khác nhau giữa SASS và SCSS

Khi bạn đọc series này bạn sẽ thấy mình giới thiệu và SASS mà lại…

Bài 16: Các hàm xử lý Number trong SASS

Bài 16: Các hàm xử lý Number trong SASS

Tiếp tục tìm hiểu các hàm có sẵn trong SASS và trong bài này chúng…

Bài 15: Các hàm xử lý chuỗi trong SASS

Bài 15: Các hàm xử lý chuỗi trong SASS

SASS cung cấp khá nhiều các hàm có sẵn giúp cho việc lập trình trở…

Bài 14: Function trong SASS

Bài 14: Function trong SASS

Function không còn xa lại gì trong các ngôn ngữ lập trình nhưng với SASS…

Bài 13: Vòng lặp each trong SASS

Bài 13: Vòng lặp each trong SASS

Ta đã biết vòng lặp foreach trong PHP dùng để lặp mảng và mỗi lần…

Bài 12: Vòng lặp while trong SASS

Bài 12: Vòng lặp while trong SASS

Vòng lặp for dùng để lặp cho những trường hợp ta biết trước tổng số…

Bài 11: Các toán tử hay dùng trong SASS

Bài 11: Các toán tử hay dùng trong SASS

SASS hỗ trợ khá nhiều toán tử không kém gì các ngôn ngữ lập trình,…

Bài 10: Vòng lặp for trong SASS

Bài 10: Vòng lặp for trong SASS

Vòng lặp là một khái niệm không còn xa lạ gì nữa với các bạn…

Bài 09: Lệnh if else trong SASS

Bài 09: Lệnh if else trong SASS

Còn khá nhiều kiến thức quan trọng của SASS mà bạn cần phải học và…

Bài 07: Nested Selector trong SASS

Bài 07: Nested Selector trong SASS

Như chúng ta biết hoạt động truy vấn các đối tượng HTML trong CSS sẽ…

Bài 06: Khai báo và sử dụng biến trong SASS

Bài 06: Khai báo và sử dụng biến trong SASS

Như mình đã nói SASS có những chức năng rất giống với một ngôn ngữ…

Bài 05: Tìm hiểu Place Holder trong SASS

Bài 05: Tìm hiểu Place Holder trong SASS

Trong bài này chúng ta tìm hiểu cách khai báo một Placer Hoder để cho…

Bài 04: Kế thừa extend trong SASS

Bài 04: Kế thừa extend trong SASS

Như một ngôn ngữ lập trình, SASS cho phép chúng kế thừa lẫn nhau và…

Bài 03: Các lệnh biên dịch file SASS thành file CSS

Bài 03: Các lệnh biên dịch file SASS thành file CSS

Nếu bạn không muốn sử dụng Netbeans và chức năng tự động generate của nó…

Bài 02: Cấu hình SASS trên Netbeans

Bài 02: Cấu hình SASS trên Netbeans

Sau khi cài đặt SASS xong thì chúng ta cần một editor để lập trình.…

Bài 01: SASS là gì? Cài đặt SASS trên Window

Bài 01: SASS là gì? Cài đặt SASS trên Window

Hôm nay chúng ta sẽ tìm hiểu một công nghệ mới dành cho các frontend…

Top