2013-10-17 22 views
11

Tôi đang cố gắng để có được một chiều cao trong một div được chính xác ít hơn 55px sau đó div cha mẹ.css/Ít calc() phương pháp đang rơi IE10 của tôi

tôi đã cố gắng để làm điều này: height: calc(~"100% - 55px"); trong ít mà tạo ra này: height: calc(100% - 55px);

này hoạt động tốt trong Chrome và Firefox, nhưng tai nạn trên IE10.

Nó không phải là nó không hoạt động nhưng nó bị treo. Điều này là rất lạ tôi đã cố gắng để tìm thấy một số thông tin trên đường nhưng không thể nhìn thấy bất cứ điều gì.

Ngoài ra, điều này chỉ xảy ra với chiều cao. Nếu tôi đã sử dụng phương pháp calc() trên chiều rộng nó chạy tốt.

Bất kỳ ý tưởng nào về cách tôi có thể truy cập phần dưới của điều này?

+0

Điều đó nghe có vẻ kỳ lạ. Bạn có thể cung cấp một ví dụ jsFiddle minh họa nó trong hành động? – Spudley

+2

Kiểm tra rất cơ bản của tôi fiddle với mã của bạn (http://jsfiddle.net/wyRXp/) không sụp đổ trình duyệt, vì vậy rõ ràng có một cái gì đó phức tạp hơn xảy ra hơn những gì bạn đã nói. Vui lòng chỉ cho chúng tôi một ví dụ kích hoạt lỗi. – Spudley

+0

Ok, do đó, sau ví dụ của bạn tôi đã tạo ra một bản demo jsFiddle cho việc này. Tôi đã đưa vào nhiều mã khác của tôi trong để xem nơi nó phá vỡ và có vẻ như nó có thể là sự kết hợp của kendoUI và calc() phương pháp. Tôi sẽ cố gắng để theo dõi nó với bit chính xác của kendoUI đó là xung đột với phương pháp và mang nó lên với những kẻ ở Telerik, họ hy vọng sẽ có thể làm sáng tỏ một số về điều này. http://fiddle.jshell.net/zawisza/75mtH/ – zawisza

Trả lời

24

Tôi đã tìm thấy sự cố. Có một chiều cao: kế thừa bên trong một trong những div bên trong. Rõ ràng IE bị siêu bối rối về điều này vì giá trị được tính toán và dường như không thể kế thừa. Tất cả đều tốt.

Vì vậy, nói cách khác bạn không có thể làm một cái gì đó như thế này:

<div style="height:100%"> 
    <div style="height: calc(100% - 50px)"> 
    <div style="height:inherit"> 
    </div> 
    </div> 
</div> 

nếu bạn IE10 sẽ sụp đổ, đây là một ví dụ: http://jsfiddle.net/wyRXp/1/

đây tôi lấy ra chiều cao kế thừa : http://jsfiddle.net/wyRXp/2/ và hoạt động tốt.

Cả hai mẫu trên đều hoạt động tốt trong Firefox và Chrome

+0

Thực hiện tốt để tách biệt vấn đề. :) Bạn nên đánh dấu câu trả lời của mình là được chấp nhận để giúp những người khác đang tìm kiếm cùng một vấn đề. BTW, cho những gì nó có giá trị, fiddle của bạn bị treo IE10 nhưng không IE11. – Spudley

+0

công việc thực sự tốt, cảm ơn! – brauliobo

1

Có một vấn đề được biết đến với calc() trong IE10

Internet Explorer (theo spec) không chấp nhận tính toán mà không cần không gian cho bổ sung/bớt (ví dụ. Calc (100% -30px) là không hợp lệ, nhưng calc (100% - 30px) hoạt động tốt).

Tham khảo CanIUse.com.

Lý do có thể xảy ra nhất cho sự cố của bạn là Ít hơn sẽ xóa khoảng trắng khi thoát giá trị.

+2

Ngay cả khi không gian được lấy ra, điều tồi tệ nhất sẽ xảy ra là nó sẽ bỏ qua nó; nó sẽ không làm hỏng trình duyệt (và theo như thử nghiệm của tôi, nó không). – Spudley

+0

Bạn không bao giờ biết.Có lẽ, không có không gian, giá trị cụ thể này được giải thích bằng cách nào đó bởi IE10 nhưng nó được hiểu sai. Vì 'calc()' được thực hiện trên hầu hết mọi sự kiện, nó có thể gây ra việc sử dụng CPU lớn cuối cùng dẫn đến sự cố. – matewka

+0

Tôi đã xem xét và thử thêm mã css bổ sung thông qua một tệp css riêng biệt không được tạo ra từ ít hơn. Nhưng nó không giúp được gì. – zawisza

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