Hàm calc()

Frontend SELF VI
Mức độ , Bài học
Có sẵn

6.1 Các tính năng chính của hàm calc()

Hàm calc() cung cấp khả năng thực hiện các phép toán trong CSS, cho phép tạo ra các kiểu dáng linh hoạt và thích ứng hơn. Hàm này đặc biệt hữu ích để kết hợp các đơn vị đo lường khác nhau và tính toán động các giá trị như kích thước, khoảng cách, viền và các thuộc tính khác.

Hàm calc() cho phép thực hiện bốn phép toán cơ bản: cộng, trừ, nhân và chia. Những phép toán này có thể được sử dụng để kết hợp các đơn vị đo lường khác nhau (pixel, phần trăm, em, rem vv.), giúp đơn giản hóa việc tạo các kiểu dáng thích ứng và động.

Cú pháp:

    
      selector {
        property: calc(expression);
      }
    
  

Ví dụ các phép toán

  • Cộng: calc(100% + 20px)
  • Trừ: calc(50% - 10px)
  • Nhân: calc(10px * 2)
  • Chia: calc(100px / 2)

Ví dụ:

HTML
    
      <div>
        Lorem ipsum odor amet, consectetuer adipiscing elit. Montes malesuada pharetra mi suscipit suspendisse ornare.
        Fringilla feugiat cursus finibus commodo, faucibus himenaeos.
      </div>
    
  
CSS
    
      div {
        width: calc(100% - 50px);
        margin: calc(1em + 10px);
        background: lightblue;
      }
    
  

Trong ví dụ này:

  • Chiều rộng phần tử được tính bằng 100% trừ 50px
  • Khoảng cách được tính là tổng của 1em10px

6.2 Ví dụ sử dụng hàm calc()

1. Cộng và trừ

Hàm calc() thường được sử dụng để cộng và trừ các giá trị, cho phép kiểm soát chính xác hơn kích thước và khoảng cách của các phần tử.

Ví dụ 1: Cộng phần trăm và pixel

Trong ví dụ này, chiều rộng của container được tính bằng 100% chiều rộng của phần tử cha trừ đi 40 pixel. Điều này cho phép tính toán khoảng cách và các phần tử khác bên trong container:

HTML
    
      <div class="container">
        Lorem ipsum odor amet, consectetuer adipiscing elit. Montes malesuada pharetra mi suscipit suspendisse ornare.
        Fringilla feugiat cursus finibus commodo, faucibus himenaeos.
      </div>
    
  
CSS
    
      .container {
        width: calc(100% - 40px);
        margin: 20px;
        background: lightgreen;
      }
    
  

Ví dụ 2: Trừ giá trị cố định

Trong ví dụ này, chiều rộng của sidebar được tính bằng 100% chiều rộng của phần tử cha trừ đi 250 pixel, để lại không gian cho nội dung chính:

HTML
    
      <div class="sidebar">
        <ul>
          <li><a href="#"></a>Article 1</li>
          <li><a href="#"></a>Article 2</li>
          <li><a href="#"></a>Article 3</li>
        </ul>
      </div>
    
  
CSS
    
      .sidebar {
        width: calc(100% - 250px);
        background: tomato;
      }
    
  

2. Nhân và chia

Hàm calc() cũng cho phép thực hiện phép nhân và chia, có thể hữu ích để tạo ra kích thước và khoảng cách tỷ lệ.

Ví dụ 3: Nhân

Trong ví dụ này, chiều cao của phần tử được tính bằng 20 pixel nhân với 3, cho ra 60 pixel:

HTML
    
      <div class="element">Element</div>
    
  
CSS
    
      .element {
        height: calc(20px * 3);
        background: lightpink;
      }
    
  

Ví dụ 4: Chia

Trong ví dụ này, chiều rộng của khối được tính là một phần ba chiều rộng của phần tử cha, tạo ra ba cột bằng nhau:

HTML
    
      <div class="box">
        Box
      </div>
    
  
CSS
    
      .box {
        width: calc(100% / 3);
        background: yellow;
      }
    
  

6.3 Kết hợp các đơn vị đo lường khác nhau

Một trong những khả năng chính của hàm calc() là kết hợp các đơn vị đo lường khác nhau, cho phép tạo ra các kiểu dáng linh hoạt và thích ứng.

Ví dụ 5: Kết hợp phần trăm và pixel

Trong ví dụ này, chiều cao của tiêu đề được tính bằng 100% chiều cao của cửa sổ xem (viewport height) trừ đi 50 pixel, cho phép tính toán khoảng cách cố định.

HTML
    
      <header class="header">
        <nav>
          <ul>
            <li>Trang chủ</li>
            <li>Về chúng tôi</li>
            <li>Liên hệ</li>
          </ul>
        </nav>
      </header>
    
  
CSS
    
      .header {
        height: calc(100vh - 100px);

        background: lightgreen;
      }

      nav ul {
        list-style: none;
        display: flex;
        justify-content: space-around;
        padding: 10px;
      }
    
  

Tính toán kích thước động

Hàm calc() hữu ích trong việc tạo ra các kích thước động được tính toán, làm cho thiết kế trở nên linh hoạt và thích ứng hơn.

Ví dụ 6: Tính toán chiều rộng động

Trong ví dụ này, chiều rộng của nội dung được tính bằng 100% chiều rộng của phần tử cha trừ đi hai lần khoảng cách 20 pixel mỗi bên:

HTML
    
      <div class="content">
        Lorem ipsum odor amet, consectetuer adipiscing elit. Montes malesuada pharetra mi suscipit suspendisse ornare.
        Fringilla feugiat cursus finibus commodo, faucibus himenaeos.
      </div>
    
  
CSS
    
      .content {
        width: calc(100% - 2 * 20px);
        background: lightgreen;
      }
    
  

6.4 Sử dụng calc() trong media queries

Hàm calc() có thể được sử dụng bên trong media queries để tạo ra các kiểu dáng thích ứng.

Ví dụ 7: Khoảng cách thích ứng trong media queries

Trong ví dụ này, khoảng cách của container tăng lên với độ rộng của cửa sổ khi đạt độ rộng tối thiểu 600 pixel:

HTML
    
      <div class="container">
        Lorem ipsum odor amet, consectetuer adipiscing elit. Montes malesuada pharetra mi suscipit suspendisse ornare.
        Fringilla feugiat cursus finibus commodo, faucibus himenaeos.
      </div>
    
  
CSS
    
      .container {
        padding: 10px;
        background: tomato;
      }

      @media (min-width: 600px) {
        .container {
          padding: calc(10px + 2vw);
        }
      }
    
  

Ví dụ 8: Kích thước thích ứng trong media queries

Trong ví dụ này, khoảng cách của container giảm đi một nửa trên màn hình có độ rộng đến 600 pixel, cải thiện sự thích ứng của thiết kế:

HTML
    
      <div class="container">
        Lorem ipsum odor amet, consectetuer adipiscing elit. Montes malesuada pharetra mi suscipit suspendisse ornare.
        Fringilla feugiat cursus finibus commodo, faucibus himenaeos.
      </div>
    
  
CSS
    
      :root {
        --main-padding: 20px;
      }

      .container {
        padding: var(--main-padding);
        background: yellow;
      }

      @media (max-width: 600px) {
        .container {
          padding: calc(var(--main-padding) / 2);
        }
      }
    
  

6.5 Ưu điểm và hạn chế

Ưu điểm của việc sử dụng hàm calc():

1. Linh hoạt. Hàm calc() cho phép tạo ra những thiết kế linh hoạt và thích ứng hơn, kết hợp nhiều đơn vị đo lường và thực hiện các phép toán.

2. Quản lý phong cách động. Với calc(), bạn có thể thay đổi kích thước và khoảng cách của phần tử một cách động, làm cho thiết kế đáp ứng và thích ứng hơn.

3. Đơn giản hóa các phép toán phức tạp. Hàm calc() đơn giản hóa việc thực hiện các phép toán phức tạp trực tiếp trong CSS, tránh việc cần phải sử dụng JavaScript cho các phép toán cơ bản.

Hạn chế và đặc điểm của hàm calc():

1. Khoảng trắng quanh các toán tử. Trong các biểu thức calc() yêu cầu phải có khoảng trắng quanh các toán tử. Ví dụ, calc(100% - 50px) đúng, còn calc(100%-50px) sẽ dẫn đến lỗi.

2. Tương thích trình duyệt. Hàm calc() được hỗ trợ bởi hầu hết các trình duyệt hiện đại, nhưng đối với các phiên bản cũ có thể cần kiểm tra tính tương thích.

3. Hiệu suất. Sử dụng hàm calc() có thể tăng thêm chút thời gian render của trang, đặc biệt khi có các phép toán phức tạp hoặc thay đổi giá trị thường xuyên.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION