2012-11-15 34 views
20

Đây là dòng đầy đủ của mã Tôi đang nhìn vào, và đây là bối cảnh của nó: http://acidmartin.wordpress.com/2011/02/24/custom-crossbrowser-styling-for-checkboxes-and-radio-buttonsTại sao có hai dấu hai chấm ở đây? khoảng :: trước

input[type="radio"] + span::before { content: ""; display: inline-block; width: 20px; height: 20px; background: url("sprite.png") no-repeat -20px 0; vertical-align: middle; } 

Tôi có một sự hiểu biết phong nha của cách làm việc này, nhưng tôi không hiểu tại sao có hai dấu hai chấm, thay vì một dấu hai chấm và trước.

Bộ chọn trước, từ nội dung tôi đã đọc nên sử dụng một dấu hai chấm.

http://www.w3schools.com/cssref/sel_before.asp

On w3c, tôi không thể tìm thấy bất kỳ selectors có hai dấu hai chấm, cũng không phải tôi có thể tìm ra lý do tại sao khoảng thời gian sẽ có một dấu hai chấm sau nó, ngoài đại tràng trước "trước khi".

http://www.w3.org/TR/CSS2/selector.html

+0

bạn gặp sự cố với mã này và nếu có thì vấn đề gì? –

+2

Tôi sẽ không tin tưởng bất cứ điều gì được công bố trên w3schools. Hướng dẫn SQL đầy lỗi. –

+3

Không có vấn đề gì, chỉ thấy mã mà tôi không hiểu. Tôi không thích sử dụng bất cứ điều gì tôi không hoàn toàn hiểu cho bất cứ điều gì quan trọng. – Eric

Trả lời

33

Đó là một giả yếu tố, theo quy định của CSS Selectors Level 3 spec:

Các ::before::after giả yếu tố có thể được sử dụng để mô tả nội dung được tạo ra trước hoặc sau khi nội dung của một nguyên tố .

Nó có hiệu quả giống như cú pháp một dấu hai chấm được xác định bởi thông số cấp 2. Đặc tả cấp 3 giới thiệu một dấu hai chấm để phân biệt giữa các phần tử giả và các lớp giả (sử dụng một dấu hai chấm đơn).

Cả hai cú pháp sẽ hoạt động trong các trình duyệt mới hơn, nhưng các trình duyệt cũ hơn sẽ không nhận ra kiểu :: mới hơn.


Đối với chi tiết hơn nữa, bạn có thể ghé qua grammar từ cấp 3 spec, trong đó nêu:

'::' bắt đầu một pseudo-element, ':' một pseudo-class

+0

@ Jukka - Cảm ơn bạn đã chỉnh sửa, tôi luôn luôn quản lý để đánh vần "giả" sai! –

4

Bạn có thể đọc một bài viết về nó here

Nhưng về cơ bản nó là để phân biệt giữa các lớp giả và các yếu tố giả. Nó là một tiêu chuẩn css3 để sử dụng hai dấu hai chấm cho một phần tử giả, như trái ngược với tiêu chuẩn CSS2 chỉ là một.

Một hoặc hai dấu hai chấm sẽ hoạt động khi trình duyệt muốn phục vụ cho cả CSS2 và CSS3

+1

Một dấu hai chấm sẽ chỉ hoạt động đối với các phần tử giả CSS1/CSS2, không phải bất kỳ phần tử mới nào. – BoltClock

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