2012-04-09 35 views
9

Trong quá khứ, tôi đã trả lời câu hỏi về "người đã sai" liên quan đến hình ảnh SVG không bị "cắt" (overflow: hidden) trong IE9, nơi tất cả các trình duyệt hỗ trợ khác đã làm như vậy. Câu trả lời là here.Nội dung SVG có thể hiển thị bên ngoài một số <svg> được nhúng theo mặc định không?

Hôm nay, khi xem xét HTML5 Boilerplate một lần nữa, tôi nhận thấy rằng họ tuyên bố họ "[correct] overflow not being hidden in IE9" với chút mã này:

svg:not(:root) { overflow: hidden; } 

Tôi đang tìm một ai đó để xác nhận hoặc phủ nhận nghiên cứu ban đầu của tôi bằng cách trỏ đến một số khác lưu ý trong thông số kỹ thuật HTML5 hoặc SVG. Tôi không thể tìm thấy bất cứ điều gì, nhưng tôi muốn chắc chắn rằng tôi không thiếu một cái gì đó. Điều tốt nhất tôi có thể tìm thấy là họ đang cố gắng áp dụng quy tắc 7 here, nhưng điều đó chỉ nên áp dụng cho Tài liệu SVG, như thông qua thẻ img hoặc khi được tải trực tiếp.

+0

Cảm ơn bạn đã chỉnh sửa tiêu đề @Phrogz. Tôi đã gặp một số rắc rối với cách chính xác để tóm tắt câu hỏi. –

+0

@casperOne Làm thế nào để yêu cầu làm rõ về một đặc điểm kỹ thuật không phải là một câu hỏi thực sự? Tôi có thể thấy từ ngữ là người nghèo, nhưng tôi không thấy nó phù hợp với danh mục bạn đã gắn nhãn nó như thế nào. Nó có quá bản địa hóa không? –

+0

Bạn muốn ai đó làm rõ liệu có ai đó đúng hay sai. Tôi có thể mở lại nó, nhưng sau đó tôi chỉ cần đóng nó một lần nữa là "Không xây dựng". – casperOne

Trả lời

4

Đặc tả SVG có này để nói: http://www.w3.org/TR/SVG/styling.html#UAStyleSheet

Có vẻ giống như những gì Firefox và Chrome làm không?

+0

Một cái hay, mặc dù (theo câu trả lời của tôi) cả Chrome và FF đều sử dụng cùng một phiên bản được sửa đổi một chút. (Có lẽ có errata xung quanh này?) Điều này do đó ngụ ý rằng IE đã sai khi không có tờ UA này. Tuy nhiên, nó không hoàn toàn làm rõ cho tôi tại sao 'overflow: visible' không làm cho đường dẫn tràn xuất hiện trong Chrome/FF. Nó có lẽ là một câu hỏi riêng, nhưng kỳ vọng về 'giới hạn' của SVG sẽ được trả lại là gì? Khi nào các giới hạn sẽ vượt quá 'chiều cao' và' chiều rộng' rõ ràng? – Phrogz

+0

[Thảo luận này] (http://lists.w3.org/Archives/Public/public-svg-wg/2008JulSep/0344.html) có liên quan. – Phrogz

+0

Cảm ơn bạn đã chỉ ra điều đó. Dường như có lẽ xung đột trong biểu định kiểu được yêu cầu mặc định cho các phần tử không gian tên SVG xung đột với quy tắc 7 ở trên + http://www.w3.org/TR/SVG/styling.html#Scope? –

4

Câu trả lời ban đầu của bạn có vẻ phù hợp với tôi, sử dụng căn cứ bạn đã chỉ định (cụ thể là các điểm bullet thứ năm và thứ bảy là the spec).

Có vẻ như IE không chính xác và Webkit và Firefox thì không. Tuy nhiên, khi bạn nghi ngờ điểm bullet thứ bảy yếu tố khác biệt.

Nếu bạn tải this test case trong Chrome và sử dụng các công cụ phát triển để kiểm tra việc SVG, bạn sẽ thấy:

(user agent stylesheet)

svg:not(:root), symbol, image, marker, pattern, foreignObject { 
    overflow: hidden; 
} 

Nếu bạn kích hoạt "Show User Agent CSS "trong Firebug bạn thấy quy tắc này trong Firefox:

svg.css (line 49) <System>

svg:not(:root), symbol, image, marker, pattern, foreignObject { 
    overflow: hidden; 
} 

Cuối cùng, nếu bạn chỉnh sửa các trường hợp thử nghiệm để thêm svg { overflow:hidden } sau đó IE trực quan phù hợp với các trình duyệt khác. Vì vậy, có vẻ như với tôi rằng cả ba trình duyệt đều hoạt động theo thông số kỹ thuật, nhưng Chrome/Safari/FF đều có các quy tắc UA phù hợp hơn với hầu hết những gì người dùng mong đợi.

Nếu tôi có thể tự túc đủ, đây là nơi tôi sẽ dừng câu trả lời này.

Tuy nhiên, nếu bạn edit the test case to add svg { overflow:visible }, cả Chrome và Firefox không 'đúng' sẽ hiển thị nội dung bị tràn. Tôi không chắc chắn làm thế nào để giải quyết điểm dữ liệu này với phần còn lại của câu trả lời này. :/

+1

Ý kiến ​​(không trả lời): không có hành vi của Chrome và Firefox, có nghĩa là ' 'sẽ cần phải tìm hộp giới hạn của toàn bộ nội dung và hiển thị toàn bộ nội dung của SVG ở 4px trên mỗi đơn vị thế giới. Điều này trái ngược với những gì tôi muốn từ một SVG, tôi nghĩ rằng phải có một đặc tả xác định độ dài của nội dung SVG để render. Và tôi nghi ngờ rằng IE9 đã bỏ qua hoặc hiểu sai thông số này (mà tôi không thể tìm thấy). – Phrogz

+0

Cảm ơn câu trả lời chi tiết. (Ngoài ra ý kiến) Tôi đồng ý rằng hầu hết mọi người, đặc biệt là những người quen thuộc hơn với hình ảnh nhị phân và thẻ hình ảnh, sẽ không mong đợi một hình ảnh SVG tràn theo mặc định. @ Liên kết của Robert ở trên mang lại một cuộc xung đột thú vị trong phán quyết với ánh sáng khi so sánh UA mặc định ** phải được thực hiện so với quy tắc 7 (tài liệu SVG từ khóa) + http://www.w3.org/TR/SVG/styling .html # Phạm vi –

+0

Sau khi đặt tất cả cùng với liên kết thảo luận của bạn và liên kết biểu định kiểu UA ở trên, tôi thấy IE9 bị lỗi. Quy tắc 7 không áp dụng, không phải là một quy tắc riêng biệt, nhưng kết hợp với tất cả các quy tắc trong 'overflow' như một cảnh báo cho UAs rằng kiểu mặc định cho khung nhìn là' overflow: hidden'. –

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