2013-05-17 29 views
57

Có thể làm một cái gì đó như thế nàyCalc của max, hoặc tối đa của calc trong CSS

max-width: calc(max(500px, 100% - 80px)) 

hoặc

max-width: max(500px, calc(100% - 80px))) 

trong CSS?

+0

Các bạn đã thử chúng ra cho mình? –

+1

Như @ gert-sønderby đã nói, chỉ cần sử dụng hai: chiều rộng tối thiểu: 500px; chiều rộng: calc (100% - 80px); – paulie4

Trả lời

57

Không, bạn không thể. max()min() đã bị xóa khỏi Giá trị và Đơn vị CSS3. Tuy nhiên, chúng có thể là re-introduced in CSS4 Values and Units. Hiện tại không có thông số kỹ thuật cho chúng, và thông số calc() không đề cập đến hoặc là hợp lệ bên trong một hàm calc().

+0

Cảm ơn bạn. Có cách nào khác để có kết quả tương tự không? – Arnaud

+1

Bạn có thể sử dụng JavaScript để có được kiểu tính toán (thực sự là kiểu được sử dụng) của phần tử. Loại bỏ 80px và so sánh nó với 500 để xem cái nào lớn hơn. Một cái gì đó như var val = parseInt (window.getComputedStyle (el, null) .getPropertyValue ("width")) - 80) để lấy width - 80 và el.style.maxWidth để thiết lập độ rộng tối đa. –

+6

Cảm ơn bạn. Tuy nhiên, tôi thích một giải pháp CSS thuần túy hơn. – Arnaud

22

Giải pháp thay thế sẽ là tự sử dụng width.

max-width: 500px; 
width: calc(100% - 80px); 
+2

Đây là một ý tưởng tốt, nhưng nếu tôi hiểu câu hỏi của Arnaud @ chính xác, anh ta muốn độ rộng tối đa của một trong hai '500px' hoặc' 100% - 80px'. Giải pháp của bạn giới hạn chiều rộng tối đa thành '500px' ngay cả khi' 100% - 80px' lớn hơn. – Theophilus

+2

Nhưng nó cũng giống như sử dụng 'min()' do đó có thể hữu ích cho người khác. – Seika85

+9

Dường như với tôi rằng việc sử dụng chiều rộng tối thiểu thay vì chiều rộng tối đa trong ví dụ trên có thể tương đương với hành vi được yêu cầu. –

38

Một giải pháp css 'tinh khiết' thực sự có thể bây giờ sử dụng truy vấn phương tiện truyền thông:

.yourselector { 
    max-width: calc(100% - 80px); 
} 

@media screen and (max-width: 500px) { 
    .yourselector { 
    max-width: 500px; 
    } 
} 
+0

Giải pháp tuyệt vời! Tôi đã sử dụng nó thực sự cho chiều cao tối thiểu, dường như bạn có thể sử dụng truy vấn phương tiện truyền thông cho 'max-height' cũng +1 – avishic

0

@Amaud Có một sự thay thế để có kết quả tương tự?

Có phương pháp tiếp cận css thuần túy không phải js sẽ đạt được kết quả tương tự. Bạn sẽ cần phải điều chỉnh phần tử/vùng chứa của phần tử cha.

.parent { 
 
    padding: 0 50px 0 0; 
 
    width: calc(50%-50px); 
 
    background-color: #000; 
 
} 
 

 
.parent .child { 
 
    max-width:100%; 
 
    height:50px; 
 
    background-color: #999; 
 
}
<div class="parent"> 
 
<div class="child"></div> 
 
</div>

Các vấn đề liên quan