Apakah warna latar belakang: tidak ada CSS yang valid?

432

Adakah yang bisa memberi tahu saya jika CSS berikut ini valid?

.class {
    background-color:none;
}
NarfkX
sumber
10
The validator sering dapat menjawab pertanyaan semacam ini.
tigapuluh
10
Anda mungkin bingung dengan background:none;, mana yang valid, dan yang mengatur warna latar belakang menjadi transparan.
Tuan Lister

Jawaban:

551

Anda mungkin ingin transparentkarena nonebukan background-colornilai yang valid .

The CSS 2.1 spesifikasi menyatakan berikut untuk background-colorproperti:

Value: <color> | transparent | inherit

<color>dapat berupa kata kunci atau representasi numerik suatu warna. Kata kunci yang validcolor adalah:

aqua, hitam, biru, fuchsia, abu-abu, hijau, kapur, merah marun, biru tua, zaitun, oranye, ungu, merah, perak, teal, putih, dan kuning

transparentdan inheritmerupakan kata kunci yang valid dalam hak mereka sendiri, tetapi nonetidak.

James Allardice
sumber
25
Iya. Karena nilai awalnya adalah transparent, itulah yang Anda gunakan jika Anda ingin mematikan pewarnaan latar belakang.
Tn. Lister
1
tak satu pun dari ini akan diatur ulang ke nilai sebelumnya (yaitu jika ditetapkan oleh aturan css lain :(
pstanton
2
@pstanton dalam kasus Anda, Anda perlu memberikan warna latar belakang: transparan! penting;
Herr
Ini mengingatkan saya pada mencoba menggunakan font-color ketika saya pertama kali memulai dengan coding. Tentu saja colortidak font-color. Sangat masuk akal setiap kali properti font lain ada fontdi depannya ...
serraosays
@herr Tapi masih seperti kata pstanton, pengaturan warna latar belakang transparan akan menimpa properti css sebelumnya! Apakah ada cara untuk menghapus properti warna latar belakang ini sehingga mengambil properti CSS dari yang sebelumnya?
SE_User
159

Tidak, gunakan transparentsaja none. Lihat contoh kerja di sini dalam contoh ini jika Anda akan berubah transparentuntuk noneitu tidak akan bekerja

gunakan like .class { background-color:transparent; }


Di mana .class adalah apa yang akan Anda beri nama kelas transparan Anda.

Jitendra Vyas
sumber
Dalam contoh saya ini benar-benar kebalikannya. Jika Anda tidak mengubah apa pun menjadi transparan, itu tidak akan berfungsi. Saya benar-benar tidak perlu menggunakan: jsfiddle.net/BkAad
Hrvoje Golcic
Dalam contoh Anda, ubah ke tubuh *: tidak (.exception) {warna-latar belakang: transparan} Anda harus menghapus! Penting karena memaksa semua orang di dalam untuk memiliki properti itu. Dan di dalam li (s) lebih suka menggunakan properti warna latar belakang daripada yang latar belakang untuk warna latar belakang saja.
yveslebeau
67

Jawabannya adalah tidak.

Salah

.class {
    background-color: none; /* do not do this */
}

Benar

.class {
    background-color: transparent;
}

background-color: transparentmencapai hal yang sama dengan apa yang ingin Anda lakukan background-color: none.

Sajidur Rahman
sumber
7
.class {
    background-color:none;
}

Ini bukan properti yang valid. Validator W3C akan menampilkan kesalahan berikut:

Kesalahan Nilai: tidak ada warna latar belakang bukan nilai warna latar: tidak ada

transparentmungkin telah dipilih sebagai istilah yang lebih baik daripada 0atau nonenilai selama pengembangan spesifikasi CSS.

Barun
sumber
2
Dan ini mengulangi apa yang dikatakan James dua setengah tahun yang lalu, tetapi dalam format non-cut dan paste. ; ^)
ruffin
6

CSS Level 3 menentukan nilai unsetproperti. Dari MDN :

Kata kunci CSS yang tidak disetel adalah kombinasi dari kata kunci awal dan inherit. Seperti dua kata kunci lainnya yang menggunakan CSS, kata kunci ini dapat diterapkan ke properti CSS apa pun, termasuk singkatan CSS semua. Kata kunci ini me-reset properti ke nilai yang diwarisi jika itu mewarisi dari induknya atau ke nilai awalnya jika tidak. Dengan kata lain, ini berperilaku seperti kata kunci inherit dalam kasus pertama dan seperti kata kunci awal dalam kasus kedua.

Sayangnya nilai ini saat ini tidak didukung di semua browser, termasuk IE, Safari dan Opera. Saya sarankan menggunakan transparentuntuk saat ini.

Gert Hengeveld
sumber
3

tulis ini:

.class {
background-color:transparent;
}
Abolfazl Miadian
sumber
2
Tolong jelaskan kode Anda dan bagaimana ini membantu menyelesaikan masalah! - Dari Ulasan
Luca Kiebel
Baik. background-color adalah atribut css dan seperti setiap atribut css dapat memiliki beberapa nilai yang valid dan tidak valid. nilai yang valid untuk warna latar belakang dapat berupa salah satu format di bawah ini: # 5f9 atau # 56f293 atau transparan. transparan berarti Anda ingin warna latar nol atau tidak ada.
Abolfazl Miadian
1
wow - 6 tahun setelah pertanyaan (dan jawabannya) Anda jawab dengan duplikat?
NarfkX
waktu bertanya tidak penting karena setiap hari beberapa orang mengunjungi halaman ini atau halaman lama lainnya untuk mendapatkan jawaban. Saya pikir sintaksis jawaban saya lebih jelas!
Abolfazl Miadian
1

Jadi, saya ingin menjelaskan skenario di mana saya harus menggunakan solusi ini. Pada dasarnya, saya ingin membatalkan atribut warna latar yang ditetapkan oleh CSS lain. Hasil akhir yang diharapkan adalah membuatnya seolah-olah CSS asli tidak pernah menerapkan atribut warna latar belakang. Pengaturan background-color:transparent;membuat itu efektif.

Binita Bharati
sumber
1
Saya menemukan latar belakang itu: transparan tidak berfungsi untuk menimpa warna latar yang ditetapkan oleh css lain. Jika saya memilih latar belakang: merah; misalnya - itu akan berhasil. Tapi latar belakang: transparan; memungkinkan warna latar belakang css lainnya tetap ada. Adakah cara untuk menghentikannya?
Auxiliary Joel