Cú pháp cho điều kiện if / else trong SCSS mixin


106

Xin chào, tôi đang cố gắng học SASS / SCSS và đang cố gắng cấu trúc lại bản mixin của riêng mình cho clearfix

điều tôi muốn là mixin dựa trên việc tôi có vượt qua chiều rộng của mixin hay không.

suy nghĩ cho đến nay (chỉ mã giả vì tôi sẽ bao gồm các mixin khác)

@mixin clearfix($width) {

   @if !$width {

    // if width is not passed, or empty do this

   } @else {

        display: inline-block;
        width: $width;
   }
}

đây là cách tôi nghĩ tôi có thể gọi nó, nhưng nó không hoạt động.

@include clearfix();

hoặc là

@include clearfix(100%)

hoặc là

@include clearfix(960px)

Tôi đánh giá cao bất kỳ sự trợ giúp nào về cách tốt nhất hoặc đúng để làm điều này!


3
Hãy xem câu trả lời của Ryan James - nó tốt hơn nhiều so với câu trả lời hiện đang được chấp nhận. =)
Quinn Strahl

Câu trả lời:


145

Bạn có thể thử điều này:

$width:auto;
@mixin clearfix($width) {

   @if $width == 'auto' {

    // if width is not passed, or empty do this

   } @else {
        display: inline-block;
        width: $width;
   }
}

Tôi không chắc về kết quả dự kiến ​​của bạn, nhưng việc đặt giá trị mặc định sẽ trả về false.


5
nó, cảm ơn bạn tôi đã có nó sử dụng " "nhưng tôi giống như giá trị tự động tốt hơn :) - không cần phải biến thiết lập mặc dù tôi đặt nó trong cú pháp mixin như vaue mặc định @mixin clearfix($width: auto) {... cảm ơn bạn :)
clairesuzy

Có phải bất kỳ mục đích nào khi cho $ width: auto; làm giá trị mặc định?
Krish

222

Bạn có thể chỉ định nội tuyến các giá trị tham số mặc định khi lần đầu tiên bạn tạo mixin:

@mixin clearfix($width: 'auto') {

  @if $width == 'auto' {

    // if width is not passed, or empty do this

  } @else {

    display: inline-block;
    width: $width;

  }
}

23
Đây phải là câu trả lời được chấp nhận! Tốt hơn / sạch hơn nếu sử dụng một tham số mặc định.
Think Graphical

@hellaFont: Vui lòng không thêm các chỉnh sửa không hợp lệ. Thêm hoặc thay đổi mã sẽ thay đổi ý nghĩa của câu trả lời. Một bình luận sẽ đủ.
Brian

9

Bạn có thể mặc định tham số thành nullhoặc false.
Bằng cách này, sẽ ngắn hơn để kiểm tra xem một giá trị đã được chuyển dưới dạng tham số hay chưa.

@mixin clearfix($width: null) {

  @if not ($width) {

    // if width is not passed, or empty do this

  } @else {

    display: inline-block;
    width: $width;

  }
}

Câu trả lời hợp lý nhất với ít ủng hộ nhất ... Thế giới là phi logic.
CPHPython
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.