Saya memiliki formulir kontak tersembunyi yang digunakan mengklik tombol. Kolomnya disetel sebagai gambar latar belakang CSS, dan selalu muncul sedikit lebih lambat dari div yang telah diubah.
Saya menggunakan potongan ini di <head>
bagian tersebut, tetapi tidak berhasil (setelah saya membersihkan cache):
<script>
$(document).ready(function() {
pic = new Image();
pic2 = new Image();
pic3 = new Image();
pic.src="<?php bloginfo('template_directory'); ?>/images/inputs/input1.png";
pic2.src="<?php bloginfo('template_directory'); ?>/images/inputs/input2.png";
pic3.src="<?php bloginfo('template_directory'); ?>/images/inputs/input3.png";
});
</script>
Saya menggunakan jQuery sebagai perpustakaan saya, dan alangkah baiknya jika saya bisa menggunakannya juga untuk mengatur masalah ini.
Terima kasih atas pemikiran Anda.
Jawaban:
Gambar pramuat hanya menggunakan CSS
Pada kode di bawah ini saya memilih
body
elemen secara acak , karena ini adalah satu-satunya elemen yang dijamin ada di halaman.Agar "trik" berfungsi, kita akan menggunakan
content
properti yang memungkinkan pengaturan beberapa URL untuk dimuat, tetapi seperti yang ditunjukkan,::after
elemen pseudo disimpan disembunyikan sehingga gambar tidak akan dirender:Demo
lebih baik menggunakan gambar sprite untuk mengurangi permintaan http ... (jika ada banyak gambar berukuran relatif kecil) dan pastikan gambar di-host di mana HTTP2 digunakan.
sumber
body
, karena gambar-gambar ini akan dimuat ke setiap halaman yang mereferensikan stylesheet. Sebaliknya, Anda harus menggunakan.contact_form:after {...}
atau beberapa kelas lain yang kurang global. Kecuali, tentu saja, formulir kontak Anda ada di setiap halaman;)Saya dapat mengonfirmasi bahwa kode asli saya tampaknya berfungsi. Saya dengan santai menempel pada gambar dengan jalan yang salah.
Berikut tesnya: http://paragraphe.org/slidetoggletest/test.html
sumber
Pramuat gambar menggunakan HTML <link> Tag
Saya yakin sebagian besar pengunjung pertanyaan ini mencari jawaban dari "Bagaimana saya dapat melakukan pramuat gambar sebelum perenderan halaman dimulai?" dan solusi terbaik untuk masalah ini adalah menggunakan
<link>
tag karena<link>
tag mampu memblokir rendering halaman selanjutnya. Lihat preemptiveKedua opsi nilai atribut
rel
( hubungan antara dokumen saat ini dan dokumen tertaut ) ini paling relevan dengan masalah:Jadi jika Anda ingin memuat sumber daya ( dalam hal ini adalah gambar ) sebelum proses rendering
<body>
tag dimulai, gunakan:dan jika Anda ingin memuat sumber daya saat
<body>
rendering tetapi Anda berencana untuk menggunakannya nanti secara dinamis dan tidak ingin mengganggu pengguna dengan waktu pemuatan, gunakan:sumber
prefetch
saat browser menganggur, yang ditentukan olehnsIWebProgressListener
API. Lihat ini untuk info lebih lanjut.<link rel="preload">
tidak tidak menghalangi rendering, saya percaya penulis salah paham definisi. Dari konten Pramuat MDN dengan rel = "preload" , "... yang ingin Anda mulai memuat lebih awal di siklus hidup halaman, sebelum mesin rendering utama browser dijalankan." Idenya adalah bahwa sumber daya diambil secepat mungkin, membuatnya lebih mungkin bahwa sumber daya tersedia saat diperlukan, misalnya saat<img>
elemen sedang dirender.http://css-tricks.com/snippets/css/css-only-image-preloading/
Teknik # 1
Muat gambar pada keadaan biasa elemen, hanya geser dengan posisi latar belakang. Kemudian pindahkan posisi latar belakang untuk menampilkannya saat mengarahkan kursor.
Teknik # 2
Jika elemen yang dimaksud sudah menerapkan gambar latar belakang dan Anda perlu mengubah gambar itu, cara di atas tidak akan berfungsi. Biasanya Anda akan memilih sprite di sini (gambar latar belakang gabungan) dan hanya menggeser posisi latar belakang. Tetapi jika itu tidak memungkinkan, coba ini. Terapkan gambar latar belakang ke elemen halaman lain yang sudah digunakan, tetapi tidak memiliki gambar latar belakang.
sumber
coba dengan ini:
Dengan kode ini Anda melakukan pramuat gambar latar belakang dan merender formulir saat dimuat
sumber
Untuk pramuat gambar latar belakang yang diatur dengan CSS, jawaban paling efisien yang saya dapatkan adalah versi modifikasi dari beberapa kode yang menurut saya tidak berfungsi:
Manfaat besar dari ini adalah Anda tidak perlu memperbaruinya saat Anda membawa gambar latar belakang baru di masa mendatang, itu akan menemukan yang baru dan memuatnya sebelumnya!
sumber
Jika Anda menggunakan kembali gambar bg ini di tempat lain di situs Anda untuk input formulir, Anda mungkin ingin menggunakan sprite gambar. Dengan cara itu Anda dapat mengelola gambar Anda secara terpusat (alih-alih memiliki pic1, pic2, pic3, dll ...).
Sprite umumnya lebih cepat untuk klien, karena mereka hanya meminta satu (walaupun sedikit lebih besar) file dari server, bukan beberapa file. Lihat artikel SO untuk manfaat lebih lanjut:
Sprite gambar CSS
Kemudian lagi, ini mungkin tidak membantu sama sekali jika Anda hanya menggunakan ini untuk satu formulir dan Anda benar-benar hanya ingin memuatnya jika pengguna meminta formulir kontak ... mungkin masuk akal.
http://www.alistapart.com/articles/sprites
sumber
bagaimana dengan memuat gambar latar belakang itu di suatu tempat yang tersembunyi. Dengan cara itu akan dimuat saat halaman dibuka dan tidak akan memakan waktu lama setelah formulir dibuat menggunakan ajax:
sumber
Anda bisa menggunakan plugin jQuery waitForImage atau Anda dapat menempatkan gambar Anda ke div tersembunyi atau (lebar: 0 dan tinggi: 0) dan menggunakan acara onload pada gambar.
Jika Anda hanya memiliki 2-3 gambar, Anda dapat mengikat peristiwa dan memicunya dalam sebuah rantai sehingga setelah setiap gambar Anda dapat melakukan beberapa kode.
sumber
Satu-satunya cara adalah dengan Base64 menyandikan gambar dan menempatkannya di dalam kode HTML sehingga tidak perlu menghubungi server untuk mengunduh gambar.
Ini akan menyandikan gambar dari url sehingga Anda dapat menyalin kode file gambar dan memasukkannya ke halaman Anda seperti ...
sumber
Jika tidak ada cara untuk mengubah kode CSS dan memuat gambar dengan aturan CSS untuk
:before
atau:after
elemen semu, pendekatan lain dengan kode JavaScript yang melintasi aturan CSS dari stylesheet yang dimuat dapat digunakan. Untuk membuatnya berfungsi, skrip harus disertakan setelah stylesheet di HTML, misalnya, sebelumbody
tag penutup atau setelah stylesheet.sumber
Jika elemen halaman dan gambar latar belakangnya sudah ada di DOM (yaitu Anda tidak membuat / mengubahnya secara dinamis), gambar latar belakangnya sudah dimuat. Pada saat itu, Anda mungkin ingin melihat metode kompresi :)
sumber