Saya telah ditugaskan untuk memperbarui situs agar responsif dan muncul dengan benar di ponsel pintar. Sayangnya, situs dalam bentuk saat ini tidak mudah untuk dikerjakan - Saya tidak bisa begitu saja mengubah CSS.
Apakah dianggap buruk untuk mendeteksi ukuran peramban dan membuat perubahan CSS dengan jQuery?
Misalnya:
if ($(window).width() < 960) {
//make heaps of CSS changes
}
css
mobile
jquery
optimization
responsive-webdesign
MeltingDog
sumber
sumber
Jawaban:
Tentu. Jelas, akan lebih baik menggunakan CSS saja tetapi jika Anda tidak bisa, gunakan apa yang Anda miliki. Lakukan sebanyak yang Anda bisa dengan CSS dan gunakan JS seperlunya. Tidak yakin mengapa Anda tidak dapat mengubah CSS yang ada tetapi Anda bisa menambahkan style sheet dengan JS.
Sumber: http://christian-fei.com/add-stylesheets-after-the-head-using-javascript/
kemudian menjadi gila dengan kueri CSS / media.
Atau dengan jQuery:
Saya telah melakukan 'skin' responsif di mana beberapa hal tidak mungkin dilakukan tanpa mengubah DOM. Jika Anda tidak memiliki akses ke HTML, manipulasi JS DOM terkadang merupakan satu-satunya jawaban.
Suntingan:
Tergantung pada persyaratan visual dari versi layar kecil Anda, Anda mungkin akan terkejut melihat seberapa jauh potongan CSS ini akan membawa Anda sepanjang jalan menuju 'mobile friendly'.
Jika pengembang CSS asli terlalu menyukai
!important
dan Anda tidak dapat mengakses HTML, Anda dapat menggunakan jQuery / JS untuk menambahkan ID ke badan atau wadah tingkat tinggi dan menambahkannya ke pemilih Anda.sumber
Saya akan mengatakan coba gunakan pertanyaan media terlebih dahulu. Salah satu metode yang saya temukan lebih mudah ketika berhadapan dengan desain yang awalnya hanya untuk desktop adalah ini:
Mulai dengan dua lembar gaya terpisah. Satu untuk desain responsif baru, dan yang lainnya untuk versi desktop lama:
Semua gaya lama dapat dimuat di desktop.css . Sementara itu Anda bisa mulai dari awal di mobile.css . Anda mungkin menemukan Anda dapat membuat tata letak kolom tunggal yang bagus di CSS seluler yang berfungsi untuk tablet juga.
Pendekatan ini memungkinkan Anda memiliki awal yang baru dan Anda dapat mendesain secara khusus hanya untuk ponsel dan tablet dan tidak memiliki gaya desktop yang masuk dan mengesampingkan hal-hal. Anda dapat menyembunyikan / menampilkan / memposisikan elemen sesuai kebutuhan hanya untuk seluler.
Jika Anda benar-benar perlu mengubah kode desktop untuk membuatnya berfungsi dengan ponsel dan desktop, Anda dapat refactor markup. Atau jika Anda tidak dapat secara realistis memperbaiki HTML untuk versi seluler dan responsif, Anda dapat meletakkan kelas pada kode desktop, mis. Kelas "desktop" dan menggunakan CSS dalam versi seluler untuk menyembunyikannya. Kemudian tulis beberapa HTML baru untuk bagian itu dan berikan a
class="mobile"
. Kemudian gaya sesuai di mobile.css dan sembunyikan di desktop.css .sumber
Saya bekerja di situs yang menggunakan metode itu, dan saya punya masalah dengan rotasi layar pada perangkat seluler. Karena JavaScript hanya akan mendeteksi sekali pada pemuatan halaman, jika pengguna merotasi perangkat itu tidak akan melebar dengan cara yang sama seperti dengan permintaan media. Lebih mudah bagi saya pada saat itu hanya untuk beralih ke CSS, tetapi mungkin seorang ahli JS akan tahu jika ada cara untuk mendeteksi perubahan lebar viewport. Sepertinya harus ada cara dengan AJAX tapi saya berani bertaruh apa pun yang Anda temukan akan berlebihan sejauh kinerja berjalan, seperti yang dijelaskan megasteve.
sumber
Responsif dan "tampil dengan benar di ponsel pintar" adalah tugas yang sama sekali berbeda.
Seharusnya tidak menjadi sumber utama gaya. Itu pekerjaan CSS. Namun, keduanya dapat digunakan bersama secara efektif. Dalam contoh sederhana, teks dapat ditata berbeda tergantung pada hasil beberapa tindakan. jQuery dapat digunakan untuk mengubah kelas yang ditentukan CSS.
sumber
Kami dulu menggunakan kerangka css 960.gs populer untuk situs kami.
Kami ingin membuatnya responsif.
Seseorang telah membuat plugin responsif berbasis JS untuk 960 gs jadi kami berpikir mengapa tidak hanya menggunakannya karena kami tidak perlu membuat perubahan pada templat situs struktural.
Ini bekerja tetapi lambat di sebagian besar browser termasuk yang bagus. Anda biasanya akan mendapatkan 'flash konten yang tidak ditata' yang akan sangat bervariasi tergantung pada kompleksitas halaman.
Meskipun solusi JS berfungsi mereka tidak ideal, permintaan media CSS 3 adalah pilihan terbaik jika memungkinkan. Pada akhirnya kami hanya melakukan ulang templat situs kami menggunakan Twitter Bootstrap yang sangat cocok untuk kebutuhan kita.
Meskipun mungkin menarik untuk mengambil jalan pintas, sering kali hal ini lebih memakan waktu / menyakitkan dalam jangka panjang.
sumber