How to calculate percent minus px in SASS ?

Tính toán sự khác biệt giữa phần trăm và px không đơn giản như 50% - 30px. Chắc chắn bạn sẽ gặp lỗi đơn vị không tương thích. Điều này là do SASS không thể thực hiện các phép toán trên các giá trị khác loại. SASS không biết chính xác một "percentage (%)" rộng bao nhiêu tính bằng pixel. Chỉ trình duyệt mới có khả năng biết được điều này. Vậy nên, chúng ta cần đến hàm calc(). Về calc(): Hàm calc() cho phép chúng ta thực hiện các phép toán trên giá trị thuộc tính. Thay vì khai báo các giá trị pixel tĩnh cho chiều rộng phần tử, ví dụ. Chúng ta có thể dùng calc() để chỉ định chiều rộng là kết quả phép cộng. Phép cộng của hai hoặc nhiều giá trị số.
  • Ví dụ: css
    .class{
        height: calc(30px + 50px);
    } 
    
    File đã biên dịch:
    .class {
      height: calc(30px + 50px);
    }
  • Nhưng tại sao chúng ta cần nó ở đây? Hàm calc() cung cấp giải pháp tốt hơn vì lý do sau. Chúng ta có thể kết hợp các đơn vị khác nhau. Cụ thể, ta có thể trộn các đơn vị tương đối như phần trăm và viewport. Các đơn vị này sẽ được trộn với các đơn vị tuyệt đối như pixel. Ví dụ, ta có thể tạo một biểu thức để trừ giá trị pixel từ phần trăm.
  • Ví dụ: css
    .class {
        width: calc(50% + 30px);
    }
    
    File đã biên dịch:
    .class {
      width: calc(50% + 30px);
    }
  • Hãy xem xét trường hợp của chúng ta, đó là trừ px từ %. Sử dụng hàm calc() trong code SCSS, chúng ta có thể dễ dàng trừ hai đơn vị khác nhau.
  • Ví dụ: css
    .class {
        height: calc(50% - 20px);
    }
    
    File đã biên dịch:
    .class {
      height: calc(50% - 20px);
    }
  • Đôi khi, nếu các giá trị của bạn nằm trong biến, bạn cần sử dụng interpolation. Interpolation để biến chúng thành chuỗi.
  • Ví dụ: html
    $x: 50%;
    $y: 20px;
    
    .class {
      width: calc(#{$x} - #{$y});
    }
    
    File đã biên dịch:
    .class {
      height: calc(50% - 20px);
    }
Lưu ý: Hàm calc() có thể dùng để thực hiện phép cộng, trừ, nhân và chia. Các phép tính này được thực hiện với các giá trị thuộc tính số. Cụ thể, nó có thể dùng với các kiểu dữ liệu length, frequency, angle, time, number hoặc integer. Ví dụ: css
.class {
    width: calc(50vmax + 3rem);
    padding: calc(1vw + 1em);
    transform: rotate( calc(1turn + 28deg));
    background: hsl(100, calc(3 * 20%), 40%);
    font-size: calc(50vw / 3);
}
File đã biên dịch:
.class {
  width: calc(50vmax + 3rem);
  padding: calc(1vw + 1em);
  transform: rotate(calc(1turn + 28deg));
  background: hsl(100, calc(3 * 20%), 40%);
  font-size: calc(50vw / 3);
}

Last Updated : 20/07/2025