Làm cách nào để sử dụng hàm CSS calc bên trong một hàm CSS calc khác? theo bài viết này ("https://developer.mozilla.org/en-US/docs/Web/CSS/calc") có thể nhưng không có ví dụ về điều đó.Hàm Calc() bên trong một hàm calc() khác trong CSS
Trả lời
Có thể sử dụng calc() bên trong một hàm calc() khác.
Một ví dụ:
div{
width: calc(100% - (1% + 30px));/* calc(1% + 30px) is nested inside calc()*/
}
div p{
width: calc(100% - 30px);/*100% is total width of the div*/
}
Cập nhật trên nested calc với các biến css:
.foo {
--widthA: 100px;
--widthB: calc(var(--widthA)/2);
--widthC: calc(var(--widthB)/2);
width: var(--widthC);
}
Sau khi tất cả các biến được mở rộng, giá trị widthC sẽ là calc (calc (100px/2)/2), sau đó khi nó được gán cho thuộc tính chiều rộng của .foo, tất cả calc bên trong() s (không có vấn đề như thế nào de eply lồng nhau) sẽ được làm phẳng thành chỉ dấu ngoặc đơn, do đó, giá trị của thuộc tính chiều rộng sẽ cuối cùng là calc ((100px/2)/2), tức là 25px. Trong ngắn hạn: một calc() bên trong của một calc() là giống hệt nhau chỉ là dấu ngoặc đơn.
Vì vậy, thông số hiện tại cũng chứng minh điều này bằng cách sử dụng dấu ngoặc đơn bên trong calc() là lồng nhau calc.
Tìm hiểu thêm về biến css here.
Thats for the reply. Tôi thấy bạn đang sử dụng chỉ một hàm calc. Câu hỏi của tôi là làm thế nào để sử dụng một calc Bên trong một hàm calc khác. –
(1% + 30px) là calc lồng nhau bên trong calc .... –
Đó không phải là những gì được hỏi. – vsync
Tham chiếu bạn trích dẫn được thừa nhận là hơi khó hiểu.
Đó là không thể sử dụng một hàm calc
bên calc
khác.
Từ thông số kỹ thuật ở đây: http://dev.w3.org/csswg/css-values/#calc-notation
... Các thành phần của một biểu thức calc() có thể là các giá trị văn chương, attr() hoặc calc() biểu thức, hoặc giá trị ..
Bạn có thể có biểu thức calc
bên trong các biểu thức, nhưng không phải là chính hàm calc()
.
Và một ví dụ được đưa ra trong đó ref cho các biểu thức lồng nhau:
width: calc(100%/3 - 2*1em - 2*1px);
Và cũng cho nhiều calc
cho nhiều thuộc tính:
margin: calc(1rem - 2px) calc(1rem - 1px);
Cú pháp từ spec trên:
Cú pháp của hàm calc() là:
<calc()> = calc(<calc-sum>) <calc-sum> = <calc-product> [ [ '+' | '-' ] <calc-product> ]* <calc-product> = <calc-value> [ '*' <calc-value> | '/' <number> ]* <calc-value> = <number> | <dimension> | <percentage> | (<calc-sum>)
Trường hợp kích thước < > là thứ nguyên.
Ngoài ra, khoảng trắng là bắt buộc trên cả hai mặt của toán tử + và - . (* Và/operaters có thể được sử dụng mà không có khoảng trắng xung quanh.)
UAs phải hỗ trợ biểu thức calc() ít nhất 20 cụm, trong đó mỗi NUMBER, DIMENSION hoặc PERCENTAGE là một thuật ngữ. Nếu biểu thức calc() chứa nhiều hơn số lượng cụm từ được hỗ trợ, nó phải được xử lý như thể nó không hợp lệ.
.
Tôi nghĩ nó đã lỗi thời. Bản sửa đổi ngữ pháp năm ngoái đã gợi ý rằng bạn có thể thực sự tổ chức các cuộc gọi hàm 'calc()': http://www.w3.org/TR/css3-values/#calc-syntax Tất nhiên, đó là năm ngoái. Tôi không biết liệu nó có được thực hiện theo cách đó hay không. – BoltClock
@BoltClock: Thông số bạn đã liên kết là từ ngày 30 tháng 7 năm 2013. Thông số mà tôi liên kết là "dev" của ngày 19 tháng 12 năm 2014. Vì vậy, tôi nghĩ rằng các tài liệu tham khảo chính xác sẽ được các spec bạn liên kết đến. Nhưng, ngay cả điều đó không nói rằng 'calc' có thể được lồng nhau. Có lẽ tôi không nhìn chăm chỉ! – Abhitalks
Bạn có thể thấy sản phẩm 'calc' được lồng trong một sản phẩm khác ... được lồng trong sản xuất' calc'. Dù sao, nó chỉ ra rằng việc triển khai thực hiện theo những gì trong ED vì vậy tôi nghĩ rằng họ chỉ thay đổi spec để phù hợp. – BoltClock
Tôi là một trong những người chỉnh sửa Giá trị & Thông số đơn vị, xác định calc().
calc() nên có thể lồng vào bên trong calc(). Có một sự giám sát trong ngữ pháp/định nghĩa trong một thời gian mà về mặt kỹ thuật không cho phép điều đó, nhưng gần đây tôi đã khắc phục điều đó. Triển khai chưa bắt kịp, với kiến thức của tôi (tho nó trông giống như Chrome 51 và Firefox 48 sẽ có sự cố định này, woo!).
Điều đó nói rằng, có không lý do để lồng biểu thức calc() bình thường - chúng là giống hệt nhau chỉ bằng cách sử dụng dấu ngoặc đơn. Lý do duy nhất để làm điều đó là khi sử dụng các thuộc tính/biến tùy chỉnh.
Xin chào Tab! Hãy lưu ý rằng về thời gian bạn đã viết điều này, việc sửa chữa cho điều này đã hạ cánh trong Blink. Nó cũng được sửa trong Gecko trước đó. Tôi đoán bạn đã được tham gia với cả hai bản sửa lỗi, anyway nhờ đó, tôi cần nó (cho các thuộc tính tùy chỉnh;)). Vì vậy, bản sửa lỗi sẽ có trong Chromium 51, Opera 38 và Firefox 48. –
Vẫn không hoạt động trong Safari 10.0. – elliottregan
- 1. Cách sử dụng hàm calc() bên trong một hàm khác
- 2. Calc của max, hoặc tối đa của calc trong CSS
- 3. CSS calc() không hoạt động
- 4. Sử dụng bộ đếm css trong calc
- 5. Kết hợp calc() với attr() trong CSS
- 6. Kết quả của calc() Trong CSS
- 7. jQuery animate() và CSS calc()
- 8. Tự động tải không thể xác định hàm calc-dispatch
- 9. Sử dụng css calc() với bước
- 10. Sử dụng calc() trong bảng
- 11. Có cách nào để có pi trong CSS calc không?
- 12. calc() 100% + #px
- 13. css/Ít calc() phương pháp đang rơi IE10 của tôi
- 14. hiển thị: flex; vs calc(); hiệu suất
- 15. CSS - sử dụng calc làm cho trang có thêm không gian bên phải
- 16. Sử dụng calc() với các bảng
- 17. Đơn vị CSS "vw" trong calc trong Chrome không hoạt động
- 18. gọi hàm tạo bản sao bên trong hàm tạo khác
- 19. Có thể sử dụng các điểm ảnh vh trừ trong CSS calc()?
- 20. Khai báo một hàm bên trong một hàm?
- 21. Lấy tên hàm người gọi bên trong một hàm khác trong Python?
- 22. làm thế nào để calc dãy trong oracle
- 23. Làm thế nào để calc căn bậc hai trong python?
- 24. Có cách nào để làm cho CSS calc() không bao giờ là một giá trị âm?
- 25. Chuyển các đối số hàm tới một hàm bên trong?
- 26. OOo/LibreOffice UNO/Java: Làm cách nào để nhận được ô bảng tính gọi của hàm calc?
- 27. Chức năng jquery bên trong một hàm
- 28. Chiều cao CSS3: calc (100%) không hoạt động
- 29. Định nghĩa hàm bên trong một định nghĩa hàm khác: nó có hợp lệ không?
- 30. Chuyển tiếp khai báo hàm `constexpr` bên trong một hàm khác - Lỗi trình biên dịch?
Phần nào của tài liệu nói rằng 'calc' có thể lồng nhau? – Passerby
@Passerby: Đoạn thứ hai. Thật khó để bỏ lỡ. – BoltClock