2014-12-18 16 views
10
<!DOCTYPE html> 
... 
<style scoped> 
/* css */ 
</style> 

Các validator w3.org được đem lại cho tôi lỗi này:kiểu phần tử không được phép là con của cơ thể yếu tố trong bối cảnh này (<style scoped> không xác nhận)

Line 883, Column 17: Element style not allowed as child of element body in this context. 
(Suppressing further errors from this subtree.) 
     <style scoped>... 
Contexts in which element style may be used: 
If the scoped attribute is absent: where metadata content is expected. 
If the scoped attribute is absent: in a noscript element that is a child of a head element. 
If the scoped attribute is present: where flow content is expected, but before any other flow  content other than inter-element whitespace and style elements, and not as the child of an element whose content model is transparent. 
Content model for element body: 
Flow content. 

Đó là sự hiểu biết của tôi rằng Thuộc tính 'scoped' làm cho nó phù hợp với thẻ kiểu nằm ngoài phần đầu của tài liệu. Vậy tại sao người xác nhận không hài lòng với nó?

(Tôi đang sử dụng Wordpress và mã này được sản xuất bởi một plugin, đó là lý do tôi không thể chỉ cần đặt nó trong đầu.)

EDIT: này không xác nhận -

<!DOCTYPE html> 
<head> 
<meta charset="UTF-8"> 
<title>title</title> 
</head> 
<body> 
<script type="text/javascript"></script> 
<style scoped></style> 
</body> 
</html> 

Nhưng điều đó xảy ra nếu thẻ tập lệnh đi sau thẻ kiểu. lý do cho điều đó là gì?

Trả lời

14

W3C Markup Validator, khi hoạt động như một trình kiểm tra HTML5, xử lý vấn đề này theo nhiều dự thảo như HTML 5.1 Nightly, mà ngay bây giờ nói rằng các yếu tố style có thể chỉ xuất hiện bên trong phần tử head, trừ khi thuộc tính scoped hiện diện , trong trường hợp này, nó có thể xuất hiện “nơi mà nội dung luồng được mong đợi, nhưng trước bất kỳ nội dung luồng nào khác ngoài khoảng trắng giữa phần tử và phần tử kiểu và không phải là phần tử con có phần tử nội dung trong suốt”. Trong ví dụ thực tế của bạn, phần tử xuất hiện sau phần tử script (được tính là nội dung luồng). Thay đổi thứ tự của các phần tử do đó thay đổi cú pháp thành hợp lệ, theo định nghĩa đã cho.

Ngoài ra, bạn có thể chỉ cần quấn yếu tố style trong một phần tử div:

<!DOCTYPE html> 
<head> 
<meta charset="UTF-8"> 
<title>title</title> 
</head> 
<body> 
<script type="text/javascript"></script> 
<div> 
    <style scoped></style> 
</div> 
</body> 
</html> 

Thuộc tính scoped là không có giá trị tại tất cả theo khuyến cáo của W3C HTML5. Nó đã có mặt trong bản nháp HTML5, nhưng nó đã bị loại khỏi Khuyến nghị do thiếu triển khai, nhưng nó vẫn nằm trong “track tiêu chuẩn hóa” và có thể chuyển sang HTML 5.1.

Lưu ý rằng các trình duyệt hiện tại thường bỏ qua thuộc tính scoped và cho phép phần tử style hầu như ở bất kỳ đâu và áp dụng nội dung của nó cho toàn bộ tài liệu HTML (ngay cả các phần đứng trước phần tử style).

+3

Hey! Xác nhận W3C hoạt động với điều này nhưng các kiểu trong div không hoạt động nữa: ( – user2718671

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