2012-05-18 37 views
5

Tôi biết bạn có thể thực hiện một số phép toán đơn giản trong Sass/Scss. Nhưng có cách nào để trừ điểm ảnh theo tỷ lệ phần trăm không? Ví dụ:Trừ pixel từ phần trăm trong SASS?

$image-size: 200px; 

.bio { 
    width: 100% - $image-size; 
} 

Trả lời

2

Tôi không thấy điều đó sẽ hoạt động như thế nào, thực tế là SASS không thể biết được kích cỡ hộp của bạn một cách kỳ diệu.

Bây giờ nếu tôi nhận được những gì bạn đang cố gắng làm, giải pháp tốt nhất là để bọc chiều rộng của .box thành một biến và sau đó trừ chiều rộng hình ảnh của bạn vào biến đó - xem xét 100% chiều rộng có nghĩa là nó sẽ nhận được 100% một chiều rộng nhất định.

+7

'calc()' là ma thuật bị mất tích. Câu trả lời này không còn đúng nữa. –

+1

@SethBattin Để nói rằng câu trả lời là "không còn chính xác" là không hoàn toàn đúng: Sass * không thể * trừ đi các pixel từ phần trăm/em/rem/vh/vw/etc. 'calc()' là một tính năng của CSS, không phải là Sass. – cimmanon

+1

@cimmanon Đó là một sự khác biệt vô ích để thực hiện, để nhấn mạnh rằng sass không thể làm một điều, khi mục tiêu là để thực hiện điều đó trong css. Sử dụng sass chỉ là một sự phức tạp thêm cho phong cách, và câu trả lời của Aperçu đề cập đến sự phức tạp đó. –

19

Bạn có thể sử dụng chức năng calc() để nhận được những gì bạn muốn. Đó là thử nghiệm nhưng vẫn còn pretty good supported bởi các trình duyệt khác nhau.

Với Sass, bạn có thể tạo một calc mixin để có được điều này làm việc trên các phiên bản trình duyệt hơn với -webkit-moz tiền tố (không cần của Opera một):

@mixin calc($key, $value) { 
    #{$key}: -webkit-calc(#{$value}); 
    #{$key}: -moz-calc(#{$value}); 
    #{$key}: calc(#{$value}); 
} 

Và gọi nó với một cái gì đó như:

.bio { 
    @include calc("width", "100% - #{$image-size}"); 
} 
Các vấn đề liên quan