Bộ chọn * * CSS làm gì?


97

Gần đây tôi tình cờ gặp * *trong CSS .

Tham khảo trang web - Liên kết trang web .

Đối với một *cách sử dụng duy nhất trong CSS style sheet, Internet và Stack Overflow tràn ngập các ví dụ, nhưng tôi không chắc chắn về việc sử dụng hai * *biểu tượng trong CSS.

Tôi đã truy cập vào nó, nhưng không thể tìm thấy bất kỳ thông tin liên quan nào về điều này, vì một đơn vị *chọn tất cả các phần tử, nhưng tôi không chắc tại sao trang web lại sử dụng nó hai lần. Phần còn thiếu cho điều này là gì, và tại sao bản hack này được sử dụng (nếu nó là một bản hack)?

Câu trả lời:


138

Cũng giống như bất kỳ lần nào bạn đặt hai bộ chọn lần lượt (ví dụ li a), bạn sẽ nhận được bộ tổ hợp con. Vì vậy, * *bất kỳ phần tử nào là con của bất kỳ phần tử nào khác - nói cách khác, bất kỳ phần tử nào không phải là phần tử gốc của toàn bộ tài liệu.


thx for the reply..this là những gì tôi đã suy nghĩ cho nhưng không chắc chắn nên nghĩ đến việc hỏi từ community..will chấp nhận nó sớm 1
swapnesh

1
chỉ cần hỏi một điều nữa - việc sử dụng * * có thực sự phù hợp không? như mặc dù tôi nắm bắt được khái niệm nhưng không hiểu nó trong điều kiện thực tế :(
swapnesh

2
@swapnesh nó trông giống như một bản hack trình duyệt. Có một * { font-size: XXX }quy tắc và một * * { font-size: YYY }quy tắc. Một trong số đó áp dụng cho hầu hết các trình duyệt và một trong số đó áp dụng cho các trình duyệt có một lỗi nhất định, mặc dù tôi không đủ kiên nhẫn để tìm hiểu chi tiết. Nó tương tự như cách * htmlhack thường được sử dụng để phát hiện IE cũ.
hobbs

thx cho thêm khối chi tiết cuối cùng dưới comments..it gần như là một hoàn hảo one..no cần phải làm nhiều hơn nữa động não cho rằng :) thx rất nhiều :)
swapnesh

10
Lưu ý rằng theo cách * html, * * sẽ khớp với phần tử html trong IE6.
Alohci

80

Chỉ là một ví dụ nhỏ:

Cố gắng thêm điều này trên trang web của bạn:

* { outline: 2px dotted red; }
* * { outline: 2px dotted green; }
* * * { outline: 2px dotted orange; }
* * * * { outline: 2px dotted blue; }
* * * * * { outline: 1px solid red; }
* * * * * * { outline: 1px solid green; }
* * * * * * * { outline: 1px solid orange; }
* * * * * * * * { outline: 1px solid blue; }

Demo: http://jsfiddle.net/l2aelba/sFSad/


Ví dụ 2:

Bộ chọn * * CSS làm gì?

Demo: http://jsfiddle.net/l2aelba/sFSad/34/


7
Đây không hoàn toàn là câu trả lời, nhưng thật là một hình dung đáng yêu!
aboy021,

1
@ l2aelba thực sự là một phần giải thích hay :) +1
swapnesh

33

* *Phù hợp với tất cả mọi thứ trừ các yếu tố cấp cao nhất, ví dụ html.


Cảm ơn Joe, thử nghiệm nó ở đây và cũng theo ý kiến trên: các * *selector tương đương với html *cho tất cả các trình duyệt trừ tốt cũ IE6 :-)
Stano

@Stano * *tương đương với html *... đối với tệp HTML. Nhưng CSS có thể được sử dụng để tạo kiểu cho các loại tài liệu khác (đặc biệt là SVG).
Sylvain Leroux

11

* có nghĩa là áp dụng các kiểu đã cho cho tất cả các phần tử.

* *nghĩa là áp dụng các kiểu đã cho cho tất cả các phần tử con của phần tử. Thí dụ:

body > * {
  margin: 0;
}

Điều này áp dụng kiểu lề cho tất cả các phần tử con của body. Cùng một cách,

* * {
  margin: 0;
}

áp dụng margin: 0cho *các phần tử con của. Tóm lại, nó áp dụng margin: 0cho hầu hết mọi yếu tố.

Nói chung, một cái *là đủ. Không cần hai * *.


2
thx cho lời giải thích +1 .. mặc dù ngay cả tôi cũng không chắc chắn về những gì bạn vừa đề cập ở dòng cuối cùng "Nói chung, * là đủ. Không cần thiết phải có * *. Tôi đoán vậy."
swapnesh

3
* *áp dụng kiểu cho các phần tử con , không phải phần tử con. Các phần tử con sẽ >giống như trong ví dụ của bạn, không phải khoảng trắng. Con cháu và đứa trẻ không giống nhau.
BoltClock

7

Điều đó chọn tất cả các phần tử được lồng bên trong một phần tử khác theo cách tương tự div asẽ chọn tất cả các <a>phần tử được lồng ở đâu đó bên trong một <div>phần tử.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.