Saya perhatikan bahwa di banyak mesin templat, di HTML5 Boilerplate , di berbagai kerangka kerja dan di situs php biasa ada no-js
kelas yang ditambahkan ke <HTML>
tag.
Mengapa ini dilakukan? Apakah ada semacam perilaku browser default yang bereaksi terhadap kelas ini? Mengapa memasukkannya selalu? Apakah itu tidak membuat kelas itu sendiri usang, jika tidak ada kasus no- "no-js" dan html dapat diatasi secara langsung?
Berikut ini adalah contoh dari HTML5 Boilerplate index.html:
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]> <html lang="en" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
Seperti yang Anda lihat, <html>
elemen akan selalu memiliki kelas ini. Adakah yang bisa menjelaskan mengapa hal ini sering dilakukan?
.myclass { /* CSS code for all versions of your page goes here */ }
,,.js .myclass { /* This CSS code will only show up if JS is enabled */ }
dan.no-js .myclass { /* This CSS code will only show up if JS is disabled. */ }
. Semoga ini membantu. -Nickclass
atribut. Meskipun HTML 4 secara teknis tidak, tidak ada browser yang mencekiknya; bahkan yang tidak mendukungnya, abaikan saja, dan saya belum pernah melihat salah satu browser itu selama bertahun-tahun..js { padding: ...}
baik-baik saja karena Anda tahu sebagai orang yang menerapkannya tubuh itu = .js. Lebih langsung ke poin Anda, tampaknya Anda mengklaim itubody.js
lebih buruk daripada.js body
yang tidak saya ikuti ...<html>
dan tidak ada masalah yang pernah dilaporkan terhadap hal itu. Entah bagaimana memakainya<html>
telah menjadi praktik yang mapan dan orang-orang segera tahu apa itu dan apa fungsinya. Pada akhirnya, menyimpang dari praktik itu hanya menimbulkan lebih banyak pertanyaan.The
no-js
kelas digunakan oleh Modernizr perpustakaan fitur deteksi. Ketika Modernizr dimuat, itu akan digantino-js
denganjs
. Jika JavaScript dinonaktifkan, kelas tetap ada. Ini memungkinkan Anda untuk menulis CSS yang dengan mudah menargetkan kondisi mana pun.Dari Sumber Anotasi Modernizrs (tidak lagi dipertahankan) :
Berikut ini adalah posting blog oleh Paul Irish yang menggambarkan pendekatan ini: http://www.paulirish.com/2009/avoiding-the-fouc-v3/
Saya suka melakukan hal yang sama, tetapi tanpa Modernizr. Saya menempatkan berikut ini
<script>
di<head>
untuk mengubah kelasjs
jika JavaScript diaktifkan. Saya lebih suka menggunakan.replace("no-js","js")
lebih dari versi regex karena agak kurang samar dan sesuai dengan kebutuhan saya.Sebelum teknik ini, saya biasanya hanya menerapkan gaya js-dependent secara langsung dengan JavaScript. Sebagai contoh:
Dengan
no-js
trik ini, sekarang dapat dilakukan dengancss
:Ini lebih disukai karena:
sumber
\b
) tidak cocok dengan sesuatu sepertianno-jsus
, yang lain mengubahnyaanjsus
.no-js
bukan substring khas dari setiap nama kelas, tetapi masih dalam hal ini "lebih aman" dengan\b
s.Modernizr.js akan menghapus
no-js
kelas.Ini memungkinkan Anda membuat aturan CSS untuk
.no-js something
menerapkannya hanya jika Javascript dinonaktifkan.sumber
The
no-js
kelas akan dihapus oleh script javascript, sehingga Anda dapat memodifikasi / display / menyembunyikan hal menggunakan css jika js dinonaktifkan.sumber
.no-js #js-warning {display: block;}
Ini tidak hanya berlaku di Modernizer. Saya melihat beberapa situs menerapkan seperti di bawah ini untuk memeriksa apakah ia memiliki dukungan javascript atau tidak.
Jika ada dukungan javascript, maka itu akan menghapus
no-js
kelas. Kalau tidak,no-js
akan tetap di tag tubuh. Kemudian mereka mengontrol gaya di css ketika tidak ada dukungan javascript.sumber
Lihatlah kode sumber di Modernizer, bagian ini:
Jadi pada dasarnya ia mencari classPrefix +
no-js
class dan menggantinya dengan classPrefix +js
.Dan penggunaan itu, adalah gaya berbeda jika JavaScript tidak berjalan di browser.
sumber
Kelas no-js digunakan untuk menata halaman web, tergantung pada apakah pengguna menonaktifkan atau mengaktifkan JS di browser.
Sesuai dokumen Modernizr :
sumber