Dalam pembangunan web, CSS (Cascading Style Sheets) membolehkan pembangun menentukan rupa visual dan reka letak tapak web. Walau bagaimanapun, oleh kerana pelayar yang berbeza mempunyai mekanisme sokongan yang berbeza untuk CSS, mungkin terdapat ketidakkonsistenan apabila pengkompil memaparkan halaman web.
Untuk mengatasi isu keserasian ini, pembangun sering memilih untuk menggunakan penggodaman CSS bagi memastikan halaman web mereka dipaparkan secara konsisten merentas penyemak imbas dan peranti yang berbeza. Satu penggodaman sedemikian ialah atribut asterisk (juga dikenali sebagai penggodaman atribut asterisk), yang digunakan terhadap versi Internet Explorer (IE) tertentu yang mempunyai sokongan terhad untuk CSS.
Dalam artikel ini, kami akan meneroka penggodaman atribut bintang dalam CSS dan membincangkan kegunaan dan batasannya. Kami juga akan memberikan contoh cara menggunakan teknik ini dengan berkesan dan amalan terbaik untuk melaksanakannya dalam kod CSS.
Ini ialah penggodaman CSS untuk mengisytiharkan sifat berbeza elemen HTML. Atribut yang didahului oleh asterisk (*) atau garis bawah (_) hanya dipaparkan dalam IE 7 dan ke bawah, manakala untuk IE 8 dan ke atas ia dianggap sebagai sampah oleh pengkompil.
element{ background-color: red; // for other browsers _background-color: red; // for IE 6 and below *background-color: red; // for IE 7 and below }
Sekarang, mari kita memahami perkara ini dengan lebih baik dengan contoh. Kami akan menggunakan penggodaman ini untuk menjadikan sifat dalam IE 6, IE 7 dan pelayar lain.
NOTA - Godam ini berfungsi dengan penyemak imbas yang berbeza, jadi jalankan program dalam penyemak imbas yang ditentukan untuk melihat output yang betul.
Berikut ialah cara untuk memberitahu pengkompil untuk memaparkan sifat CSS kepada elemen dalam Internet Explorer 7 dan lebih awal.
<!DOCTYPE html> <html> <head> <title>Internet Explorer 7 and Below Versions</title> <style> .my-div { background-color: red; width: 30%; height: 80%; padding: 3px; letter-spacing: 1px; margin-top: 40px; /* default margin applied in all other browsers */ *margin-top: 0; /* IE6 margin */ } </style> </head> <body> <h1>Star Preceded Property</h1> <h3>Given below is a div element whose margin-top will be 0 in IE 6 while it will be 20px in all other browsers.</h3> <div class="my-div"> This is my div element. </div> </body> </html>
Untuk IE7 dan ke bawah, margin atas elemen div ialah sifar.
Jika anda menjalankan kod dalam mana-mana penyemak imbas lain, margin atas elemen div ialah 40px.
Dalam contoh di atas, pemilih CSS .my-div menggunakan margin atas sebanyak 40 piksel. Walau bagaimanapun, peraturan *margin-top: 0; hanya berfungsi dalam Internet Explorer 6, menetapkan margin kepada 0 piksel. Asterisk (*) sebelum nama hartanah (margin-top) ialah “asterisk” dalam “star property hack”. Ini ialah ralat sintaks dalam penyemak imbas lain, jadi mereka mengabaikan baris ini.
Cara lain untuk membuat pengkompil memaparkan sifat CSS kepada elemen dalam Internet Explorer 6 dan lebih rendah digambarkan di bawah. Ia tidak berfungsi dengan IE 7.
<!DOCTYPE html> <html> <head> <style> .my-div { background-color: blue; /* default background color */ width: 30%; height: 80%; padding: 3px; letter-spacing: 1px; _background-color: red; /* background color in IE 6 and below versions */ } </style> </head> <body> <h1>Star Preceded Property </h1> <h3>Given below is a div element whose background color will be red in IE 6 and below while it will be blue in all other browsers.</h3> <div class="my-div"> This is my div element. </div> </body> </html>
Untuk IE6 dan ke bawah, warna latar belakang elemen div akan menjadi biru.
Jika anda menjalankan kod dalam mana-mana pelayar lain, warna latar belakang akan menjadi merah.
Dalam contoh di atas, pemilih CSS .my-div menggunakan warna latar belakang merah. Walau bagaimanapun, peraturan _background-color: blue; hanya berfungsi dalam Internet Explorer 6, menetapkan warna latar belakang kepada biru.
"Atribut bintang" ialah teknik yang digunakan pada masa lalu untuk menyasarkan versi tertentu Internet Explorer menggunakan gaya CSS. Walaupun ia mencapai matlamat ini dengan berkesan, ia juga mempunyai beberapa kelebihan dan kekurangan.
Ia membolehkan pembangun web menggunakan pelbagai gaya CSS khusus pada versi Internet Explorer yang lebih lama tanpa menjejaskan keputusan dalam semua penyemak imbas lain. Ini membantu mencipta pengalaman yang konsisten dan bersatu untuk pengguna merentas berbilang penyemak imbas.
Ia mudah digunakan dan mengurangkan jumlah kod, menjadikannya alternatif yang menarik untuk pembangun web. Ia menghalang mereka daripada menulis komen bersyarat atau helaian gaya khusus untuk penyemak imbas tertentu.
Ia digunakan secara meluas dan popular dalam komuniti pembangunan web, yang menjadikannya mudah untuk mencari contoh dan sokongan. Selain itu, ia juga sangat mesra pengguna.
"Asterix sebelum harta" adalah hack. Ini bukan cara yang standard dan serasi untuk menulis kod CSS. Ia bergantung pada pepijat dalam Internet Explorer untuk berfungsi. Selain itu, tiada jaminan bahawa ia akan berfungsi dalam versi pelayar yang diubah suai pada masa hadapan atau dalam pelayar lain.
Ini menjadikan kod lebih sukar dibaca dan diselenggara. Memandangkan ia melibatkan penulisan kod bukan standard, sukar untuk memahami apa yang dilakukan oleh kod tanpa ulasan atau dokumentasi tambahan.
Ini mungkin membawa kepada akibat yang tidak diingini, seperti menjejaskan elemen lain pada halaman atau menyebabkan penyemak imbas berkelakuan di luar jangkaan.
Teknik ini ialah kaedah yang menyasarkan penyemak imbas tertentu dengan gaya berbeza, memberikan sandaran untuk penyemak imbas lama seperti Internet Explorer 6. Secara keseluruhannya, walaupun "penggodaman atribut bintang" berguna pada masa itu, ia tidak lagi disyorkan sebagai amalan pembangunan web pilihan terbaik. Teknik pembangunan web moden memberi tumpuan kepada penggunaan kod standard dan serasi yang berjalan pada berbilang penyemak imbas dan bukannya bergantung pada penggodaman khusus penyemak imbas.
Atas ialah kandungan terperinci Apakah kegunaan sifat sebelum asterisk dalam CSS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!