2012-09-07 26 views
61

Các spec HTML cho phép trong thời gian ở một id (.):CSS selector với kỳ ID

<img id="some.id" />

Tuy nhiên, sử dụng một quy tắc CSS ID selector sẽ không trận đấu một cách chính xác:

#some.id { color: #f00; }

Thông số CSS cho ID Selectors không đề cập đến trường hợp này. Vì vậy, tôi giả sử nó đang sử dụng sự kết hợp của một tên thẻ và class selector? Ví dụ: quy tắc CSS của a.className sẽ áp dụng cho tất cả các thẻ liên kết (<a>) với tên lớp là className, như <a class="className"></a>.

Có thể có quy tắc tệp CSS bên ngoài tham chiếu phần tử HTML theo id của nó có dấu chấm trong đó không?

Tôi mong đợi không phải vì thông số CSS chỉ định rằng CSS "identifier" không bao gồm dấu chấm làm ký tự hợp lệ. Vậy đây có phải là sự không phù hợp cơ bản giữa thông số HTML và CSS không? Là lựa chọn duy nhất của tôi để sử dụng một loại lựa chọn CSS khác? Ai có thể thông minh hơn tôi xác nhận hay phủ nhận điều này?

(tôi sẽ loại bỏ các khoảng thời gian từ thuộc tính id HTML để đơn giản hóa mọi thứ, nhưng nó là một id hệ thống tạo ra, vì vậy tôi không có khả năng để thay đổi nó trong trường hợp này.)

+0

Bạn có thể nói rằng đây là sự không phù hợp cơ bản giữa HTML và CSS. Tuy nhiên, vì chúng là hai ngôn ngữ khác nhau, nên chúng không được cho là phù hợp; một mã định danh HTML là mã định danh HTML trong khi mã định danh CSS là mã định danh CSS. Ngoài ra, CSS cũng có thể tạo kiểu cho các ngôn ngữ khác, không chỉ HTML (mặc dù được cấp, CSS đã được tạo cho HTML ngay từ đầu). – BoltClock

+3

Ngoài ra '# some.id' đang sử dụng kết hợp ID và bộ chọn lớp. – BoltClock

+0

ID có phải là thuộc tính duy nhất mà bạn có làm móc kiểu? Tôi biết đó là một chút chủ đề, nhưng tôi tự hỏi tại sao bạn muốn sử dụng một ID thay vì img hoặc một lớp (nếu có). – Jayx

Trả lời

130

Classic. Ngay sau khi đào qua tất cả các thông số kỹ thuật viết câu hỏi, tôi đọc qua nó một số chi tiết và thấy có một nhân vật trốn thoát. Tôi chưa bao giờ cần nó trước đây, nhưng thông số CSS cho phép backslash (\) escaping giống như hầu hết các ngôn ngữ. Bạn biết gì?

Vì vậy, trong ví dụ của tôi, các quy tắc sau đây sẽ phù hợp:

#some\.id { color: #f00; }

+7

Công việc nghiên cứu tốt. Nên có nhiều Q & A như thế này, không giống như „viết mã của tôi thay vì tôi“. – Pavlo

+2

nghiên cứu hay. Tôi chỉ chạy qua điều này trong một ứng dụng doanh nghiệp lớn im làm việc trên. Tôi đã hoàn toàn bối rối và chưa bao giờ thấy nó trước đây. whats các điểm làm cho một id với một khoảng thời gian trong nó ?? – Anthony

+0

@Anthony: Không có lý do cụ thể để đặt dấu chấm trong thuộc tính id HTML. Tôi đoán đôi khi các tác giả chỉ muốn? Có thể trong một số trường hợp, nó có thể bị tràn ra từ các hệ thống triển khai cơ bản có thể sử dụng các dấu chấm trong mã định danh của mã phía máy chủ để xử lý biểu mẫu?Tôi chắc rằng mọi người đều có lý do riêng của họ; nhưng không có lý do HTML/CSS nào để đưa chúng vào. –

15

Bạn cũng có thể sử dụng img [id = some.id]]

Thông tin thêm ở đây: http://www.w3.org/TR/selectors/#attribute-selectors

+0

Điều này có thể hoạt động trong một số trình duyệt, nhưng tôi cũng đã thấy lỗi được ném cho bộ chọn thuộc tính. Bạn vẫn có thể thoát khỏi '.', như' \ .'. –

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