:before
và :after
không bắt buộc phải hoạt động đối với các phần tử được thay thế và các thông số kỹ thuật CSS không chỉ định cách chúng sẽ hoạt động cho chúng và khái niệm về phần tử được thay thế hơi mơ hồ.
Đặc tả CSS 2.1 gợi ý rõ ràng rằng chúng có thể hoạt động cho các phần tử được thay thế, chỉ nói rằng nó không “xác định đầy đủ” cách thức. Điều này liên quan đến vấn đề rằng một phần tử được thay thế dự kiến sẽ có hiển thị hình ảnh riêng của nó, điều này không được CSS kiểm soát, trong khi các phần tử giả phải thêm một cái gì đó vào nội dung của phần tử. Thông số cho biết thêm rằng điều này sẽ được xác định "chi tiết hơn" trong một thông số kỹ thuật trong tương lai, nhưng điều này đã không diễn ra cho đến nay.
Các nhà cung cấp trình duyệt vừa quyết định tránh các vấn đề bằng cách không triển khai các phần tử giả này cho một số phần tử.
Không rõ “phần tử được thay thế” nghĩa là gì, và ý nghĩa dường như đã thay đổi phần nào. Nó thường được hiểu có nghĩa giống như phần tử rỗng (phần tử có EMPTY
nội dung được khai báo, tức là phần tử không thể có bất kỳ nội dung nào), nhưng bản thân CSS 2.1 hiển thị một biểu định kiểu mẫu với bộ chọnbr:before
(mặc dù các trình duyệt đã bỏ qua này, thực hiện br
riêng của họ đường). Có thể lập luận rằng ngày càng nhiều phần tử đã chuyển sang phạm vi hiển thị CSS, ít nhất là một phần. Ví dụ: một input
phần tử (bao gồm phông chữ, màu sắc, v.v.) phần lớn có thể kiểm soát được bằng CSS trong các trình duyệt hiện đại.
Các trình duyệt hiện tại (Firefox, IE, Chrome) dường như không hỗ trợ các phần tử :after
và :before
giả cho các phần tử trống hr
. Đối với hr
, IE và Chrome đặt nội dung được tạo bên trong hộp có viền, đây là việc triển khaihr
; nội dung làm cho hộp cao hơn. Firefox đặt nội dung của cả hai phần tử giả (!) Sau quy tắc ngang mà nó thực hiện hr
. Biến thể này minh họa các loại vấn đề "tương tác" được đề cập trong CSS 2.1.
Người ta thường tuyên bố rằng các phần tử giả này không thể được sử dụng cho các phần tử trống vì các định nghĩa HTML của chúng không cho phép bất kỳ nội dung nào. Đây là một lỗi danh mục. Các quy tắc cú pháp của ngôn ngữ đánh dấu không hạn chế những gì bạn có thể làm trong CSS
Để kết luận, :after
và :before
hiện tại không thể sử dụng được cho các phần tử trống (ngoại trừ một chút cho hr
), nhưng điều này chủ yếu là do triển khai và có thể thay đổi trong tương lai.
<before></before>
" trong nguồn.