Thời gian dài trước đây đã có bản nháp của đặc tả nội dung tạo CSS3 cho phép thuộc tính content
for any HTML element (không chỉ :: trước/:: sau phần tử giả), không có bất kỳ hạn chế chính thức nào cho các phần tử trống hoặc thay thế. Nó đã từng được hỗ trợ bởi Opera Presto (1, 2) và, ít nhất là ở một mức độ nào đó, bởi WebKit (3). Đến cuối năm 2011, việc triển khai content
của WebKit cho thành phần img
dường như chuyển đổi hiệu quả từ yếu tố thay thế trống sang thành phần không được thay thế như span
(ngay cả menu ngữ cảnh của nó đã thay đổi, xóa các tùy chọn như 'Lưu hình ảnh thành ...'). Nó cũng làm cho nó có thể áp dụng các phần tử giả như img::before
.Thuộc tính CSS `content` hoạt động như thế nào cho phần tử` img` trong WebKit?
Trong triển khai Blink (Chrome v.v.) hiện tại, việc đánh số content
thuộc tính vào thành phần img
không có hiệu lực rõ ràng. Nhưng phần tử img
rõ ràng có cấu trúc khác nhau tùy thuộc vào việc nó được tải đúng hay bị hỏng: nếu được tải, nó được hiển thị bởi DOM Inspector như là một phần tử rỗng đơn giản, nhưng nếu bị hỏng, nó sẽ hiển thị cấu trúc Shadow DOM bên trong như sau:
<div id="alttext-container" style="overflow: hidden; border: 1px solid silver; display: inline-block; box-sizing: border-box; padding: 1px;">
<img id="alttext-image" width="16" height="16" align="left" style="margin: 0px; float: left; display: inline;">
<div id="alttext" style="overflow: hidden; display: block;">Alt text</div>
</div>
Có thể là do img
bị hỏng được hiển thị với sự trợ giúp của bóng div
s, có thể áp dụng các phần tử giả cho nó trong trường hợp này chỉ (4).
WebKit hiện tại không hỗ trợ các phần tử giả cho img
. Nhưng, thú vị, ít nhất iOS 9.2.1 Safari bắt đầu hỗ trợ chúng sau khi thiết lập thuộc tính content
cho rằng img
(5).
Tại sao thuộc tính này thực hiện thay đổi như vậy? Tôi đoán rằng nếu một phần tử trống có bất kỳ nội dung nào (thậm chí được tạo), trình duyệt phải cung cấp nội dung nào đó để thay thế thành phần trống bằng một loại container (như bóng tối của Blink div id="alttext-container"
) và vùng chứa này có thể có pseudos. Liệu tôi có sai? Và hành vi này có bị xóa khỏi phiên bản WebKit mới nhất không?
thú vị .. safari cũng hiển thị các phần tử sau và không hiển thị hình ảnh ngay cả khi nó không bị hỏng. –
Có, có vẻ như trong Safari nó thuộc tính 'content', không được tải/trạng thái bị hỏng, thay đổi mô hình kết xuất của phần tử' img', khác với hành vi của Blink. X Safari? –
đáng ngạc nhiên, không thể tìm thấy tài liệu ở bất cứ nơi nào mặc dù .. –