Biasanya saya memiliki file CSS yang memiliki aturan berikut:
#my-window {
position: fixed;
z-index: 102;
display:none;
top:50%;
left:50%;
}
Bagaimana saya bisa menghindari membuat file CSS statis dengan menambahkan informasi CSS selama tindakan runtime ke tubuh, atau yang serupa? (hanya menggunakan jQuery)
Saya ingin mendefinisikannya sekali tetapi dengan jQuery dan menggunakannya berkali-kali kemudian; itu sebabnya saya tidak ingin menambahkannya setiap kali ke elemen DOM tertentu.
Saya tahu fitur-fitur sederhana ( css("attr1", "value");
), tetapi bagaimana saya bisa membuat aturan CSS lengkap yang dapat digunakan kembali?
body
. yaitu$("<style>...</style>").appendTo("body");
Secara sederhana
Memperhatikan garis belakang? Mereka digunakan untuk bergabung dengan string yang ada di baris baru. Membiarkannya menghasilkan kesalahan.
sumber
Anda dapat menerapkan css suatu objek. Jadi Anda bisa mendefinisikan objek Anda di javascript Anda seperti ini:
Dan kemudian cukup menerapkannya ke semua elemen yang Anda inginkan
Jadi itu bisa digunakan kembali. Apa tujuan Anda melakukan ini?
sumber
Anda dapat menggunakan insertRule jika Anda tidak perlu mendukung IE <9, menurut dottoro . Ada sedikit kode lintas browser di sana juga.
sumber
Ini adalah plugin jquery yang memungkinkan Anda untuk menyuntikkan CSS:
https://github.com/kajic/jquery-injectCSS
Contoh:
sumber
Ini bukan sesuatu yang baru dibandingkan dengan beberapa jawaban lain karena menggunakan konsep yang dijelaskan di sini dan di sini , tapi saya ingin memanfaatkan deklarasi gaya JSON:
Pemakaian:
Saya tidak yakin apakah itu mencakup semua kemampuan CSS, tetapi sejauh ini berfungsi untuk saya. Jika tidak, anggap itu sebagai titik awal untuk kebutuhan Anda sendiri. :)
sumber
Jika Anda tidak ingin mengubah kode CSS menjadi blok / file CSS, Anda dapat menggunakan jQuery untuk secara dinamis menambahkan CSS ke Elemen HTML, ID, dan Kelas.
sumber
Menambahkan aturan khusus berguna jika Anda membuat widget jQuery yang membutuhkan CSS khusus (seperti memperluas kerangka CSS jQueryUI yang ada untuk widget khusus Anda). Solusi ini dibangun berdasarkan jawaban Taras (yang pertama di atas).
Dengan asumsi markup HTML Anda memiliki tombol dengan id "addrule" dan div dengan id "target" yang mengandung beberapa teks:
kode jQuery:
Keuntungan dari pendekatan ini adalah Anda dapat menggunakan kembali variabel cssrules dalam kode Anda untuk menambah atau mengurangi aturan sesuka hati. Jika cssrules tertanam dalam objek persisten seperti widget jQuery, Anda memiliki variabel lokal persisten untuk dikerjakan.
sumber
Perhatikan bahwa
jQuery().css()
tidak mengubah aturan stylesheet, itu hanya mengubah gaya setiap elemen yang cocok.Sebagai gantinya, inilah fungsi javascript yang saya tulis untuk mengubah aturan stylesheet itu sendiri.
Keuntungan:
<head>
skrip sebelum elemen DOM dibuat dan karenanya sebelum rendering dokumen pertama, menghindari render yang menjengkelkan secara visual, kemudian menghitung, lalu merender ulang. Dengan jQuery, Anda harus menunggu elemen DOM untuk dibuat, kemudian gaya ulang dan render ulang.jQuery(newElement).css()
Peringatan:
s.cssRules
didefinisikan, sehingga mereka akan kembali kes.rules
yang memiliki beberapa kekhasan, seperti perilaku aneh / buggy terkait dengan penyeleksi koma-dibatasi, seperti"body, p"
. Jika Anda menghindari itu, Anda mungkin ok di versi IE yang lebih lama tanpa modifikasi, tapi saya belum mengujinya."first, second"
yaitu pembatas adalah koma diikuti oleh karakter spasi.!important
pengubah tanpa terlalu banyak kesulitan.Jika Anda merasa ingin membuat beberapa perbaikan pada fungsi ini, Anda akan menemukan beberapa dokumen API yang berguna di sini: https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet
sumber
Dalam kasus (tidak biasa) di mana Anda ingin dapat sering mengubah gaya secara dinamis - misalnya aplikasi pembuat tema - menambahkan tag <style> atau memanggil CSSStyleSheet.insertRule () akan menghasilkan lembar gaya yang bertambah, yang dapat memiliki kinerja dan desain implikasi debugging.
Pendekatan saya hanya memungkinkan satu aturan per kombo selektor / properti, membersihkan semua yang ada pada pengaturan aturan apa pun. API sederhana dan fleksibel:
Pemakaian:
sumber
Bagaimana jika Anda secara dinamis menulis bagian <script> pada halaman Anda (dengan aturan dinamis Anda) dan kemudian menggunakan jQuerys .addClass (class) untuk menambahkan aturan yang dibuat secara dinamis itu?
Saya belum mencoba ini, hanya menawarkan teori yang mungkin berhasil.
sumber
Sedikit malas menjawab ini, tetapi artikel berikut dapat membantu: http://www.javascriptkit.com/dhtmltutors/externalcss3.shtml
Juga, coba ketikkan "ubah aturan css" ke google
Tidak yakin apa yang akan terjadi jika Anda mencoba untuk membungkus dokumen.styleSheets [0] dengan jQuery () meskipun Anda bisa mencobanya
sumber
Anda dapat menggunakan plug-in cssRule . Kodenya sederhana:
Salah satu komentar sejauh ini bertanya mengapa seseorang ingin melakukan hal seperti itu. Misalnya, membuat gaya untuk daftar di mana setiap item membutuhkan warna latar belakang yang berbeda (mis. Daftar kalender GCal) di mana jumlah kolom tidak diketahui sampai waktu berjalan.
sumber
div:before{content:'name: ';}
Berikut ini adalah pengaturan yang memberikan perintah atas warna dengan objek json ini
fungsi ini
untuk menghasilkan elemen gaya ini
sumber
jika Anda tidak ingin menetapkan tampilan: tidak ada ke kelas css, pendekatan yang tepat untuk menambahkan gaya, jQuery. Peraturan lakukan pekerjaan itu.
Saya beberapa kasus Anda ingin menerapkan stiles sebelum acara menambahkan konten ajax dan memudar konten setelah menambahkan dan ini dia!
sumber
Di sini Anda memiliki fungsi untuk mendapatkan definisi penuh dari kelas CSS:
sumber
Anda dapat menggunakan lib ini disebut cssobj
Kapan pun Anda dapat memperbarui aturan Anda seperti ini:
Lalu aturan Anda berubah. jQuery bukan lib yang melakukan ini.
sumber
Saya telah mengacaukan beberapa dari ini baru-baru ini dan saya telah menggunakan dua pendekatan yang berbeda saat memprogram situs iPhone / iPod.
Cara pertama yang saya temui ketika mencari perubahan orientasi sehingga Anda dapat melihat apakah ponsel ini portrait atau landscape, ini adalah cara yang sangat statis tetapi sederhana dan pintar:
Dalam CSS:
Dalam File JS:
Dalam PHP / HTML (Impor file JS Anda terlebih dahulu kemudian dalam tag tubuh):
Ini pada dasarnya memilih blok CSS pre set yang berbeda untuk dijalankan tergantung pada hasil yang diberikan kembali dari file JS.
Juga cara yang lebih dinamis yang saya sukai adalah penambahan yang sangat sederhana pada tag skrip atau file JS Anda:
Ini berfungsi untuk sebagian besar browser tetapi untuk IE yang terbaik adalah mengambil amunisi dengan sesuatu yang lebih ketat:
Atau Anda dapat menggunakan
getElementByClass()
dan mengubah berbagai item.Semoga ini membantu!
Abu.
sumber
Mungkin Anda dapat meletakkan informasi gaya di kelas yang terpisah di file css Anda, misalnya:
dan kemudian gunakan jQuery pada titik yang Anda pilih untuk menambahkan classname ini ke elemen?
sumber
Anda bisa membuat kelas css bernama sesuatu seperti .fixed-object yang memiliki semua css Anda di dalamnya ...
Kemudian di jquery kapan saja Anda menginginkan sesuatu memiliki gaya itu, tambahkan saja kelas itu ke sana ...
Itu sepertinya cara termudah untuk melakukannya, kecuali saya salah paham tentang apa yang perlu Anda lakukan.
sumber
Dengan menggunakan .addClass () di jquery, kita dapat menambahkan gaya secara dinamis ke elemen di halaman. misalnya. kami memiliki gaya
Sekarang dalam keadaan jquery siap kita dapat menambahkan css seperti .addClass (myStyle)
sumber