Làm cách nào để vô hiệu hóa thuộc tính css?


109

Về cơ bản, tôi có hai css bên ngoài trong trang của mình.

Quy tắc đầu tiên Main.csschứa tất cả các quy tắc kiểu nhưng tôi không có quyền truy cập vào nó và do đó tôi không thể sửa đổi nó. Tôi có quyền truy cập vào tệp thứ hai Template.css, vì vậy tôi cần ghi đè các Main.cssgiá trị của trong template.css.

Điều này thật dễ dàng mà tôi phải thay đổi giá trị, nhưng làm cách nào để xóa hoàn toàn một thuộc tính?

Giống như một lớp học .c1height: 40px;, làm cách nào để loại bỏ thuộc tính chiều cao này?


Câu trả lời:


175

Bạn phải đặt lại từng thuộc tính riêng lẻ về giá trị mặc định của nó. Nó không tuyệt vời, nhưng đó là cách duy nhất, dựa trên thông tin bạn đã cung cấp cho chúng tôi.

Trong ví dụ của bạn, bạn sẽ làm:

.c1 {
    height: auto;
}

Bạn nên tìm kiếm từng tài sản tại đây:

https://developer.mozilla.org/en-US/docs/Web/CSS/Reference

dụheight :

Giá trị ban đầu : auto

Một ví dụ,max-height :

Giá trị ban đầu : none


Năm 2017, bây giờ có một cách khác, unsettừ khóa:

.c1 {
    height: unset;
}

Một số tài liệu: https://developer.mozilla.org/en-US/docs/Web/CSS/unset

Từ khóa CSS chưa đặt là sự kết hợp của từ khóa ban đầu và từ khóa kế thừa. Giống như hai từ khóa toàn CSS khác, nó có thể được áp dụng cho bất kỳ thuộc tính CSS nào, bao gồm tất cả các từ khóa CSS. Từ khóa này đặt lại thuộc tính về giá trị kế thừa của nó nếu nó được kế thừa từ giá trị gốc của nó hoặc về giá trị ban đầu của nó nếu không. Nói cách khác, nó hoạt động giống như từ khóa kế thừa trong trường hợp đầu tiên và giống như từ khóa ban đầu trong trường hợp thứ hai.

Hỗ trợ trình duyệt tốt: http://caniuse.com/css-unset-value


3
+1 cho câu trả lời hay và tham khảo. Tôi nghĩ rằng liên kết đã thay đổi thành: developer.mozilla.org/en-US/docs/Web/CSS/Reference
Paolo

Đặt giá trị thành tự động dường như không hoạt động khi không có giá trị ban đầu ("giá trị ban đầu: không có"). Ví dụ: khi thực hiện "max-width: auto;" Tôi gặp lỗi giá trị thuộc tính không khớp. Tôi nên làm gì?
user1779563

3
@ user1779563 Bạn đặt nó thành "none".
AndreKR

1
Tôi muốn cảm ơn @simhumileco vì câu trả lời của anh ấy mà tôi đã đánh cắp một cách đáng xấu hổ vì câu trả lời của tôi được chấp nhận và mọi người có thể không cuộn xuống.
ba mươi

10
.c1 {
    height: unset;
}

Các unsetgiá trị gia tăng trong CSS3 cũng giải quyết được vấn đề này và nó thậm chí còn phổ biến hơn phương pháp hơn autohayinitial vì nó đặt cho tất cả các thuộc tính CSS giá trị mặc định của nó và bổ sung mặc định behawior liên quan đến mẹ của mình.

Lưu ý rằng initialgiá trị phá vỡ hành vi nói trên.

Từ MDN :

Giống như hai từ khóa toàn CSS khác, nó có thể được áp dụng cho bất kỳ thuộc tính CSS nào, bao gồm tất cả các từ khóa CSS . Từ khóa này đặt lại thuộc tính về giá trị kế thừa của nó nếu nó được kế thừa từ giá trị gốc của nó hoặc về giá trị ban đầu của nó nếu không.


9

như nói một lớp .c1 có height: 40px; làm cách nào để loại bỏ thuộc tính chiều cao này?

Đáng buồn thay, bạn không thể. CSS không có trình giữ chỗ "mặc định".

Trong trường hợp đó, bạn sẽ đặt lại thuộc tính bằng cách sử dụng

 height: auto;

như @Ben đã chỉ ra một cách chính xác, trong một số trường hợp, inheritlà cách chính xác để đi, chẳng hạn như khi đặt lại màu văn bản của một aphần tử (thuộc tính đó được kế thừa từ phần tử mẹ):

a { color: inherit }

3
Tôi sẽ +1 cho điều đó. Ngoài ra còn có giá trị "kế thừa". Trong một số bối cảnh khác với chiều cao, kế thừa thích hợp hơn.
Ben

1
@meo bạn nói đúng. (Câu hỏi liên quan) dường như có nghĩa là có những thuộc tính không thể được đặt lại về mặc định của chúng trong IE ... thật đáng tiếc
Pekka

7

Một initialtừ khóa đang được thêm vào CSS3 để cho phép các tác giả chỉ định rõ ràng giá trị ban đầu này.


FYI: height:initial;dường như không hoạt động trong IE9.
Kris Hollenbeck

vậy sự khác biệt giữa initialautovà là unsetgì?.
ExillustX

2

Để loại bỏ thuộc tính chiều cao cố định, bạn có thể đặt nó thành giá trị mặc định:

height: auto;

2

Bạn cần cung cấp bộ chọn có độ đặc hiệu cao hơn bộ chọn trong Main.css. Với bộ chọn đó, hãy đặt giá trị của các thuộc tính bạn muốn thành mặc định của chúng, ví dụ:

body .c1 {
    height: auto;
}

Không có giá trị "mặc định" nào hoạt động cho tất cả các thuộc tính, bạn cần phải tra cứu giá trị mặc định cho từng thuộc tính và sử dụng giá trị đó.


1

Tôi gặp sự cố mà ngay cả khi tôi đã ghi đè "chiều cao" thành "chưa đặt" hoặc "ban đầu", nó hoạt động khác với khi tôi xóa cài đặt trước đó.

Hóa ra tôi cũng cần xóa thuộc tính chiều cao tối thiểu!

height: unset;
min-height: none

Chỉnh sửa: Tôi đã thử nghiệm trên IE 7 và nó không nhận ra "unset", vì vậy "auto" hoạt động tốt hơn ".

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.