Di header HTML, saya mendapatkan ini:
<head>
<title>Title</title>
<link href="styles.css" rel="stylesheet" type="text/css"/>
<link href="master.css" rel="stylesheet" type="text/css"/>
styles.css
adalah lembar spesifik halaman saya. master.css
adalah lembar yang saya gunakan pada setiap proyek saya untuk mengesampingkan default browser. Manakah dari lembar gaya ini yang mendapat prioritas? Contoh: lembar pertama berisi spesifik
body { margin:10px; }
Dan batas terkait, tetapi yang kedua berisi ulang saya dari
html, body:not(input="button") {
margin: 0px;
padding: 0px;
border: 0px;
}
Pada dasarnya, apakah elemen cascading CSS bekerja sama dalam hal referensi stylesheet seperti halnya dalam fungsi CSS yang khas? Berarti bahwa baris terakhir adalah yang ditampilkan?
css
overriding
stylesheet
ian5v
sumber
sumber
body:not(input="button")
Omong-omong, bukan pemilih yang valid. Anda mungkin bermaksud membaginya menjadibody, input:not([type="button"])
.master.css
harus memuat pertama, maka jenderal Anda harus memuat terlebih dahulu, maka cara ini lebih mudah untuk menolak gaya master di blog Andastyles.css
.Jawaban:
Aturan untuk cascading aturan CSS rumit - daripada mencoba memparafrasekannya dengan buruk, saya hanya akan mengarahkan Anda ke spesifikasi:
http://www.w3.org/TR/2011/REC-CSS2-20110607/cascade.html#cascade
Singkatnya: aturan yang lebih spesifik menggantikan aturan yang lebih umum. Spesifisitas didefinisikan berdasarkan berapa banyak ID, kelas, dan nama elemen yang terlibat, serta apakah
!important
deklarasi itu digunakan. Ketika beberapa aturan dengan "tingkat spesifisitas" yang sama ada, mana yang muncul menang terakhir.sumber
!important
berpartisipasi langsung dalam kaskade, dan tidak ada hubungannya dengan kekhususan. Spesifisitas terkait dengan penyeleksi, sedangkan!important
digunakan dengan deklarasi properti. (Jadi, Anda benar mengatakan bahwa aturannya rumitGaya paling spesifik diterapkan:
Jika semua penyeleksi memiliki spesifisitas yang sama, maka deklerasi terbaru digunakan:
Dalam kasus Anda,
body:not([input="button"])
lebih spesifik sehingga gayanya digunakan.sumber
Ketertiban memang penting. Nilai yang dinyatakan terakhir dari banyak kejadian akan diambil. Silakan lihat yang sama yang saya kerjakan: http://jsfiddle.net/Wtk67/
Jika Anda menukar urutan
.test{}
, maka Anda dapat melihat HTML mengambil nilai yang terakhir dinyatakan dalam CSSsumber
CSS pemuatan terakhir adalah THE MASTER, yang akan menimpa semua css dengan pengaturan css yang sama
Contoh:
reset.css
master.css
Output untuk tag h1 akan berukuran font: 30px;
sumber
.css
dimuat terakhir. Apakah mereka diterapkan agar dimuat atau agar didefinisikan?Mari kita coba menyederhanakan aturan cascading dengan sebuah contoh. Aturan berjalan lebih spesifik untuk umum.
Berikut adalah kode css dan html;
Inilah gaya css
Inilah hasilnya. Tidak peduli urutan file gaya atau deklarasi gaya,
id="important"
berlaku di akhir (perhatikan yangclass="deadline"
dinyatakan terakhir tetapi tidak berpengaruh).The
<article>
elemen berisi<aside>
elemen, namun gaya lalu menyatakan akan berlaku, dalam hal iniarticle h2 { .. }
pada elemen h2 ketiga.Berikut adalah hasil pada IE11: (Tidak cukup hak untuk mengirim gambar) DarkBlue: Houston Chronicle News, DarkGreen: Perkembangan terbaru di kota Anda, Ungu: Bagian Iklan Lokal Houston, Hitam: Bagian berikutnya
sumber
Itu tergantung pada urutan pemuatan dan kekhususan aturan aktual yang diterapkan pada masing-masing gaya. Mengingat konteks pertanyaan Anda, Anda ingin memuat pengaturan ulang umum Anda terlebih dahulu, kemudian halaman yang spesifik. Kemudian jika Anda masih tidak melihat efek yang diinginkan, Anda perlu melihat kekhususan penyeleksi yang terlibat seperti yang telah ditunjukkan orang lain.
sumber
Ya, kerjanya sama seperti jika mereka berada dalam satu lembar, namun:
Muat Urutan Pesanan!
Dalam kode di atas, tidak ada jaminan yang
master.css
akan memuat setelahstyles.css
. Oleh karena itu, jikamaster.css
dimuat dengan cepat, danstyles.css
perlu waktu,styles.css
akan menjadi stylesheet kedua, dan aturan apa pun dari kekhususan yang samamaster.css
akan ditimpa.Sebaiknya masukkan semua aturan Anda ke dalam satu lembar (dan perkecil) sebelum digunakan.
sumber
master.css
, dan membiarkanstyles.css
memuat sepenuhnya. Lalu, saya biarkanmaster.css
memuat. Gaya "tumpang tindih" darimaster.css
masih diterapkan - dan rendering diblokir sampaimaster.css
dimuat dan diuraikan. Catatan : Saya mencobarel=preload
padamaster.css' (no halting) and that apparently alters its _declaration_ order by hoisting it above
styles.css`.Cara terbaik adalah menggunakan kelas sebanyak mungkin. Hindari pemilih ID (#). Ketika Anda menulis pemilih dengan hanya satu kelas, pewarisan CSS adalah cara yang lebih mudah diikuti.
Pembaruan: Baca lebih lanjut tentang kekhususan CSS dalam artikel ini: https://css-tricks.com/specifics-on-css-specificity/
sumber
Saya menduga dari pertanyaan Anda bahwa Anda memiliki pilihan duplikat, set master, yang berlaku untuk semua halaman, dan set yang lebih spesifik yang Anda ingin timpa nilai master untuk setiap halaman individual. Jika itu masalahnya, maka pesanan Anda sudah benar. Master dimuat pertama dan aturan dalam file selanjutnya akan diutamakan (jika mereka identik atau memiliki bobot yang sama). Ada deskripsi yang sangat direkomendasikan dari semua aturan di situs web ini http://vanseodesign.com/css/css-specificity-inheritance-cascaade/ Ketika saya mulai dengan pengembangan front-end, halaman ini membereskan begitu banyak pertanyaan.
sumber
Ini adalah kaskade yang mendefinisikan prioritas deklarasi. Saya dapat merekomendasikan spesifikasi resmi; bagian ini mudah dibaca.
https://www.w3.org/TR/css-cascade-3/#cascading
Berikut ini memiliki efek pada penyortiran, dalam urutan prioritas menurun.
Kombinasi asal, dan kepentingan:
Transition
deklarasi!important
!important
!important
style
atributAnimation
deklarasistyle
atributJika dua deklarasi memiliki asal dan kepentingan yang sama, spesifikasi, yang berarti seberapa jelas elemen didefinisikan, ikut bermain, menghitung skor.
#x34y
).level
)li
):hover
) tidak termasuk:not
Misalnya, pemilih
main li + .red.red:not(:active) p > *
memiliki kekhususan 24.The urutan tampilan hanya memainkan peran jika dua definisi memiliki asal yang sama, pentingnya dan kekhususan. Definisi selanjutnya mendahului definisi sebelumnya dalam dokumen (termasuk impor).
sumber
Saya percaya ketika mengeksekusi kode, itu dibaca dari atas ke bawah, artinya tautan CSS terakhir akan menimpa gaya yang sama di setiap style sheet di atasnya.
Misalnya, jika Anda membuat dua style sheet
dan dalam kedua hal ini, Anda mengatur warna latar belakang tubuh menjadi dua warna yang berbeda - warna tubuh dalam style2.css akan diprioritaskan.
Anda dapat menghindari masalah prioritas penataan dengan menggunakan
!IMPORTANT
di dalam gaya kelas yang ingin Anda prioritaskan, atau mungkin mengatur ulang<link>
pesanan Anda .sumber