Các hàm toán học CSS cho phép các biểu thức toán học được sử dụng làm giá trị thuộc tính. Ở đây, chúng tôi sẽ giải thích các hàm calc[]
,
max[]
và min[]
.
Hàm calc []
Hàm calc[]
thực hiện tính toán sẽ được sử dụng làm giá trị thuộc tính.
CSS Cú pháp
biểu hiện | Yêu cầu. Một biểu thức toán học. Kết quả sẽ được sử dụng làm giá trị. Các toán tử sau có thể được sử dụng: + - * / / The following operators can be used: + - * / |
Chúng ta hãy xem xét một ví dụ:
Thí dụ
Sử dụng calc [] để tính toán chiều rộng của một phần tử:
#Div1 {& nbsp; Vị trí: Tuyệt đối; & nbsp; Trái: 50px; & nbsp; chiều rộng: calc [100% - 100px]; & nbsp; biên giới: 1px màu đen rắn; & nbsp; màu nền: màu vàng; & nbsp; Đệm: 5px;}
position: absolute;
left: 50px;
width: calc[100% - 100px];
border: 1px solid black;
background-color: yellow;
padding: 5px;
}
Hãy tự mình thử »
Hàm tối đa []
Hàm max[]
sử dụng giá trị lớn nhất, từ danh sách các giá trị được phân tách bằng dấu phẩy, làm giá trị thuộc tính.
CSS Cú pháp
biểu hiện | Yêu cầu. Một biểu thức toán học. Kết quả sẽ được sử dụng làm giá trị. Các toán tử sau có thể được sử dụng: + - * / / |
Chúng ta hãy xem xét một ví dụ:
Thí dụ
Sử dụng calc [] để tính toán chiều rộng của một phần tử:
#Div1 {& nbsp; Vị trí: Tuyệt đối; & nbsp; Trái: 50px; & nbsp; chiều rộng: calc [100% - 100px]; & nbsp; biên giới: 1px màu đen rắn; & nbsp; màu nền: màu vàng; & nbsp; Đệm: 5px;}
background-color: yellow;
height: 100px;
width: max[50%, 300px];
}
Hãy tự mình thử »
Hàm tối đa []
Hàm max[]
sử dụng giá trị lớn nhất, từ danh sách các giá trị được phân tách bằng dấu phẩy, làm giá trị thuộc tính.
CSS Cú pháp
biểu hiện | Yêu cầu. Một biểu thức toán học. Kết quả sẽ được sử dụng làm giá trị. Các toán tử sau có thể được sử dụng: + - * / / |
Chúng ta hãy xem xét một ví dụ:
Thí dụ
Sử dụng calc [] để tính toán chiều rộng của một phần tử:
#Div1 {& nbsp; Vị trí: Tuyệt đối; & nbsp; Trái: 50px; & nbsp; chiều rộng: calc [100% - 100px]; & nbsp; biên giới: 1px màu đen rắn; & nbsp; màu nền: màu vàng; & nbsp; Đệm: 5px;}
background-color: yellow;
height: 100px;
width: min[50%, 300px];
}
Hãy tự mình thử »
Hàm tối đa []
biểu hiện | Yêu cầu. Một biểu thức toán học. Kết quả sẽ được sử dụng làm giá trị. Các toán tử sau có thể được sử dụng: + - * / / |
Chúng ta hãy xem xét một ví dụ: | Thí dụ |
Sử dụng calc [] để tính toán chiều rộng của một phần tử: | #Div1 {& nbsp; Vị trí: Tuyệt đối; & nbsp; Trái: 50px; & nbsp; chiều rộng: calc [100% - 100px]; & nbsp; biên giới: 1px màu đen rắn; & nbsp; màu nền: màu vàng; & nbsp; Đệm: 5px;} |
DigitalOcean cung cấp các sản phẩm đám mây cho mọi giai đoạn của hành trình của bạn. Bắt đầu với $ 200 trong tín dụng miễn phí! Có một tình cảm rằng để lại các tính toán toán học trong CSS của bạn là một ý tưởng tốt mà tôi đồng ý. Điều này là cho toán học mà bạn có thể tính toán tại thời điểm tác giả, nhưng cụ thể là chọn không. Chẳng hạn, nếu bạn cần một lưới dựa trên phao 7 cột [don không hỏi], thì nó sẽ sạch hơn và trực quan hơn: Bạn có thể chứng minh rằng Toán học đó có thể phức tạp hơn một chút khi bạn tiếp tục. Ví dụ, giống như trong bài viết của các trường hợp sử dụng cho calc [], những cột trong lưới 7 cột đó thì sao?.col {
/* groan */
width: 14.2857142857%;
/* oh, I get it */
width: calc[100% / 7];
}
calc[]
mất máy tính lâu hơn 0,0000001%, vì vậy rõ ràng xác định chiều rộng nhanh hơn về mặt kỹ thuật vì lý do hiệu suất - nhưng đó là tương đương với việc không sử dụng dấu câu trong các câu vì nó tiết kiệm trọng lượng HTML.
.column-1-7 {
width: calc[100% / 7];
}
.column-2-7 {
width: calc[100% / 7 * 2];
}
.column-3-7 {
width: calc[100% / 7 * 3];
}
Tôi nói rằng, khá sạch sẽ để đọc và quản lý.
Khả năng đọc của toán học có thể được tăng cường bằng các bình luận nếu nó quá phức tạp. Giả sử bạn đang cố gắng tính đến một máng xối dựa trên lề với phần đệm bên trong một yếu tố:
.parent {
width: 600px;
padding: 18px;
}
.left {
/* base width - 1/2 horizontal padding */
width: calc[400px - 18px];
margin-right: 1rem; /* gutter */
}
.right {
/* base width - 1/2 horizontal padding - gutter */
width: calc[200px - 1rem - 18px];
}
Một lần nữa, tôi đã nói rằng, khá dễ đọc, nhưng nó cũng là một lượng lặp lại tốt. Điều này có thể kêu gọi sử dụng các biến. Chúng tôi sẽ làm điều đó với các thuộc tính tùy chỉnh CSS để giải trí. Bạn phải chọn những gì xứng đáng là một biến và những gì không phải là. Bạn có thể cần ít nhận xét hơn khi mã trở thành phần nào tự ghi chép:
.parent {
--padding: 18px;
--gutter: 1rem;
width: 600px;
padding: var[--padding];
}
.left {
width: calc[400px - var[--padding]];
margin-right: var[--gutter];
}
.right {
width: calc[200px - var[--gutter] - var[--padding]];
}
Đó là một sự cân bằng tốt với tôi. Ở đây, một bước nữa:
.parent {
--padding: 18px;
--gutter: 1rem;
--parentWidth: 600px;
--leftSize: 2/3;
--rightSize: 1/3;
width: var[--parentWidth];
padding: var[--padding];
}
.left {
width: calc[calc[var[--parentWidth] * var[--leftSize]] - var[--padding]];
margin-right: var[--gutter];
}
.right {
width: calc[calc[var[--parentWidth] * var[--rightSize]] - var[--gutter] - var[--padding]];
}
Mỗi số đã được cung cấp một biến trong đó. Quá xa? Có lẽ. Nó chắc chắn làm cho những tuyên bố chiều rộng đó khá khó khăn để quấn đầu bạn một cách nhanh chóng. Ana Tudor thực hiện một số thứ nghiêm túc với calc[]
, như là bằng chứng cho thấy mọi người về mức độ thoải mái với công cụ này là khác nhau.
Một trong những điều khiến tôi nghĩ về tất cả những điều này là một bài viết gần đây từ James Nash - Hard Hardcore CSS calc [] - nơi anh ấy xây dựng điều này:
Mặc dù giải pháp đã đi một con đường toán học nặng nề để đến đó, nhưng cuối cùng nó chỉ là loại tính toán trung bình trên đồng hồ đo độ phức tạp của OL. Và lưu ý rằng không phải mọi thứ đều có một biến số chỉ là các bit được sử dụng lại nhiều nhất:
Xem khối hình thu nhỏ 1 + 2 Pen của James Nash [@cirrus] trên Codepen.