Apakah mungkin untuk menimpa properti tampilan dengan nilai defaultnya? Sebagai contoh jika saya telah mengaturnya ke none dalam satu gaya, dan saya ingin menimpanya dengan berbeda dengan default-nya.
Atau apakah satu-satunya cara untuk mengetahui apa default dari elemen itu dan kemudian mengaturnya? Ingin tidak perlu tahu apakah elemen tersebut biasanya blok, inline atau mana ...
unset
.unset
,initial
,inherit
,revert
Jawaban:
Gaya default browser ditentukan dalam stylesheet agen penggunanya, sumber yang dapat Anda temukan di sini . Sayangnya, spesifikasi Cascading dan Inheritance level 3 tampaknya tidak mengusulkan cara untuk mereset properti style ke default browser-nya. Namun ada rencana untuk memperkenalkan kembali kata kunci untuk ini di Cascading dan Inheritance level 4 - kelompok kerja belum menentukan nama untuk kata kunci ini (tautan saat ini mengatakan
revert
, tetapi belum final). Informasi tentang dukungan browser untukrevert
dapat ditemukan di caniuse.com .Meskipun spesifikasi level 3 memperkenalkan
initial
kata kunci , menetapkan properti ke nilai awalnya akan menyetelnya kembali ke nilai defaultnya seperti yang didefinisikan oleh CSS , bukan seperti yang didefinisikan oleh browser . Nilai awaldisplay
adalahinline
; ini ditentukan di sini . Katainitial
kunci merujuk pada nilai itu, bukan peramban bawaan. Spek itu sendiri membuat catatan ini di bawahall
properti :Jadi saya kira satu-satunya cara saat ini menggunakan CSS murni adalah dengan mencari nilai default browser dan mengaturnya secara manual:
(Alternatif untuk yang di atas adalah
div.foo:not(.bar) { display: inline-block; }
, tetapi itu melibatkan memodifikasi pemilih asli daripada menimpa.)sumber
initial
sebenarnya. Saya telah memperbarui jawaban saya.display
selaluinline
( w3.org/TR/CSS21/visuren.html#display-prop ), terlepas dari apakah itu pada adiv
atau aspan
. Sebuahdiv
elemen secaradisplay: block
default sesuai dengan HTML , dan bukan CSS, jadi terserah pada stylesheet UA browser untuk mengatakandiv { display: block; }
.default
diubah namanya menjadirevert
.Jika menggunakan javascript diizinkan , Anda dapat mengatur
display
properti menjadi string kosong. Ini akan menyebabkannya menggunakan default untuk elemen tertentu.Berikut ini tautan ke jsbin .
Ini bagus karena Anda tidak perlu khawatir tentang jenis display untuk kembali ke (
block
,inline
,inline-block
,table-cell
, dll).Tapi, ini membutuhkan javascript, jadi jika Anda mencari solusi css saja, maka ini bukan solusi untuk Anda.
Catatan: Ini mengesampingkan gaya sebaris, tetapi bukan gaya yang diatur dalam css
sumber
style
atribut inline di tempat pertama. Anda tidak dapat mengganti atau menghapus deklarasi dari stylesheet menggunakan metode ini.style
atribut atau JavaScript setter. Anda masih bisa mengganti deklarasi stylesheet jika Anda menetapkan nilai tertentu melalui JS, tetapi mengaturnya menjadi kosong sama dengan tidak menyetelnya sama sekali - deklarasi stylesheet akan tetap utuh. Lihat biola yang dimodifikasi: jsfiddle.net/BoltClock/g45qagt3/1Tidak disetel
display
:Anda dapat menggunakan nilai
unset
yang berfungsi di Firefox dan Chrome .sumber
unset
memiliki masalah yang sama denganinitial
. Nilaidisplay
akan menjadiinline
. Lihat codepen.io/Gidgidonihah/pen/mwWxEqunset
tidak akan membantu karena itu per properti dan akan selalu mengatur ulang tampilaninline
. Silakan pertimbangkan untuk memperbarui jawaban Anda.Tidak, itu umumnya tidak mungkin. Setelah beberapa kode CSS (atau HTML) menetapkan nilai untuk properti pada suatu elemen, tidak ada cara untuk membatalkannya dan memberi tahu browser untuk menggunakan nilai defaultnya.
Tentu saja mungkin untuk menetapkan nilai properti yang Anda harapkan sebagai nilai default. Ini mungkin bekerja lebih luas jika Anda memeriksa bagian Rendering HTML5 CR, sebagian besar mencerminkan apa yang sebenarnya dilakukan browser.
Namun, jawabannya adalah "Tidak", karena browser mungkin memiliki nilai default apa pun yang mereka suka. Anda harus menganalisis apa alasan ingin mengatur ulang ke default; yang asli masalah mungkin masih dipecahkan.
sumber
Jika Anda memiliki akses ke JavaScript , Anda dapat membuat elemen dan membaca gayanya yang dihitung.
sumber
Mengenai jawaban oleh BoltClock dan John, saya pribadi memiliki masalah dengan kata kunci awal saat menggunakan IE11. Ini berfungsi baik di Chrome, tetapi di IE tampaknya tidak berpengaruh.
Menurut jawaban ini, IE tidak mendukung kata kunci awal: Tampilan Div: awal tidak berfungsi sebagaimana dimaksud pada ie10 dan chrome 29
Saya mencoba mengaturnya sebagai gantinya seperti yang disarankan di sini: cara mengembalikan kembali ke normal setelah tampilan: tidak ada untuk baris tabel
Ini berhasil dan cukup baik untuk skenario saya. Tentu saja untuk menetapkan nilai awal nyata jawaban di atas adalah satu-satunya yang baik yang bisa saya temukan.
sumber