Làm cách nào để tạo quy tắc css cho tất cả các phần tử ngoại trừ một lớp?


95

Tôi đã tạo một biểu định kiểu CSS cho dự án của mình. Có cách nào tôi có thể tạo quy tắc css áp dụng cho tất cả các phần tử bảng NGOẠI TRỪ các phần tử bảng thuộc lớp "dojoxGrid" không? Cái gì đó như:

.not(dojoxGrid) table{
    width:100%;
    border-top:1px solid #dddddd;
    border-left:1px solid #dddddd;
    border-right:1px solid #dddddd;
    margin:1em auto;
    border-collapse:collapse;
}

Bạn có cần cái này để hoạt động trên nhiều trình duyệt không? Các trình duyệt có hỗ trợ khác nhau cho các bộ chọn CSS linh hoạt hơn. Đó có thể là điều bạn có thể làm trong tập lệnh nếu nó thực sự bắt buộc và cần được trình duyệt chéo.
kibibu

vâng, tôi cần nó để hoạt động trên các trình duyệt chính. Có cách nào khác tôi có thể đạt được nó hơn là thông qua kịch bản không? cổ vũ
Nick

Cách tiếp cận của Cori sẽ hoạt động trên các trình duyệt trở lại ie4, có thể sớm hơn.
kibibu

Câu trả lời:


181

Lớp giả phủ định dường như là thứ bạn đang tìm kiếm.

table:not(.dojoxGrid) {color:red;}

Tuy nhiên, nó không được hỗ trợ bởi ≤ IE8 .


2
đó là một bộ chọn css3 tốt để biết - hy vọng có thể sử dụng được trong IE9.
cori

4
trong khi nhận xét của tôi không áp dụng trực tiếp cho câu hỏi, cần lưu ý rằng :notCÓ THỂ được sử dụng như một bộ chọn truy vấn. tức là $("[data-name='bob']:not(a)"), đó là tốt đẹp.
Gingerbreadboy

3
Đây nên là câu trả lời được chấp nhận, bởi vì nó là câu trả lời cho hiệu quả mong muốn. Câu trả lời được chấp nhận hiện tại là một cách thay thế để đạt được hiệu quả mong muốn, nhưng không thực sự trả lời câu hỏi. Những người tìm thấy câu hỏi này rất có thể đang tìm kiếm câu trả lời cho những gì được hỏi chính xác, trong hầu hết các trường hợp, một cách thay thế không áp dụng.
Pedro Moreira

Trong ≤IE8, điều này sẽ hoàn toàn bị bỏ qua buộc không có bảng nào nhận được color:red. Điều này có thể tốt đối với một số người nhưng đối với tôi, tôi hy vọng nó sẽ đọc nó như thế nào table {color:red;}và chỉ cần bỏ qua :not().
DutGRIFF

7
@FranciscoCorralesMorales :not(.classOne):not(.classTwo)cf stackoverflow.com/a/5684168/248058
KNU

12

Sẽ không thiết lập quy tắc css cho tất cả các bảng và sau đó là quy tắc tiếp theo cho các bảng mà class = "dojoxGrid" hoạt động? Hay tôi đang thiếu cái gì đó?


3
Vâng, điều đó hoàn toàn có hiệu quả, nhưng bạn sẽ đặt tất cả các thuộc tính đó thành một giá trị. Nếu bạn muốn để chúng "chưa đặt" thì không. Có lẽ Nick đang cố gắng không che lấp các giá trị cho dojoxGrid khi chúng được đặt ở nơi khác.
kibibu

1
Tôi nghĩ rằng nó sẽ. Tuy nhiên, tôi đang thiết lập một loạt các thuộc tính cho tất cả các bảng, tôi có thể ghi đè lại chúng bằng các giá trị mặc định cần thiết cho dojoxGrid. Tuy nhiên, tôi không chắc những giá trị mặc định này là gì vì chúng được tạo bởi thư viện dojo. Vì vậy, tôi đã tìm kiếm một cách khác để đạt được nó.
Nick

4

Đặt cược an toàn nhất là tạo một lớp trên các bảng đó và sử dụng nó. Hiện tại, việc làm cho một cái gì đó như thế này hoạt động trong tất cả các trình duyệt chính là không thể.

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.