Saya telah bercakap tentang cara membina dengan transformasi CSS 3D serta animasi dan peralihan CSS dalam artikel sebelumnya. Dalam artikel ini, saya ingin memperkenalkan kes penggunaan yang lebih "tidak konvensional" untuk teknologi ini dengan menerangkan konsep "animasi penuh halaman" yang boleh digunakan semasa proses navigasi untuk menambah ketidakstabilan dan kesinambungan untuk melayari. Sasaran kami adalah untuk mencapai pengalaman melayari yang lancar di mana kandungan lancar muncul apabila pengguna melawat halaman dan peralihan ketika dia mengklik pautan atau melakukan tindakan yang relevan.
Kesan ini boleh dicapai dengan mengubah elemen HTML
Mengubah keseluruhan kandungan halaman
#element { transform: rotateZ(45deg); }
Melampirkan transformasi ke elemen
dokumen HTML anda berfungsi dengan cara yang sama. Oleh itu, lakukan untuk menambah kesan yang sama pada dokumen anda boleh melakukan sesuatu seperti ini:body { transform: rotateZ(45deg); }
mari kita lihat pukulan sebelum dan selepas halaman apabila menggunakan transformasi ke elemen badan:
Memohon Rotatez (45Deg) Transform ke elemen badan dokumen.
Untuk transformasi tiga dimensi, CSS mengubah spesifikasi mentakrifkan harta perspektif yang boleh ditentukan pada induk elemen yang kita ubah. Apabila mengubah elemen
kandungan anda, ia perlu digunakan untuk elemen yang berada di atasnya dalam hierarki DOM. Berbuat demikian adalah mudah:html { perspective: 500px; }
menggabungkan ini dengan perubahan rotatey (45deg) pada elemen
menghasilkan hasil berikut:
Memohon Putar (45Deg) Transform ke dengan Perspektif: 500px ditetapkan pada .
kita boleh memanipulasi sifat asal transformasi pada elemen badan untuk hasil yang menarik. Mari kita lihat beberapa contoh:
body { transform-origin: 50% 100%; transform: rotateX(45deg); }
markup di atas menetapkan putaran di sepanjang x untuk elemen badan sambil mengalihkan asal putaran ke bahagian bawah elemen menggunakan asal transformasi. Secara berkesan ini berputar kandungan dokumen "ke" skrin seperti ini:
3 kita juga boleh memanipulasi sifat asal-usul perspektif pada elemen akar dokumen kami untuk mencapai kesan unjuran luar paksi. Menukar gaya untuk ke:
Halaman kami sekarang kelihatan seperti ini:
html { perspective: 500px; perspective-origin: 90% 50%; }
di bawah anda dapat melihat hasilnya sebelum dan selepas transformasi digunakan.
Perhatikan bagaimana kandungannya sebenarnya tidak berputar di bahagian bawah tetingkap tetapi pada satu ketika di luar viewport. Ini dijangka tingkah laku untuk transformasi CSS:
Jadi bagaimana kita menangani kandungan bersaiz sewenang -wenangnya apabila menggunakan transformasi ke elemen badan kita? Adat menyesuaikan semua kandungan untuk memastikan saiz badan tidak berkembang lebih daripada jumlah tertentu mungkin tidak realistik. Sebaliknya, kita boleh menggunakan corak HTML/CSS yang mudah yang membolehkan kita menetapkan saiz elemen badan ke tetingkap penyemak imbas dan menambah kandungan di dalam pembungkus
#element { transform: rotateZ(45deg); }
Ilustrasi di bawah menunjukkan apa yang berlaku apabila halaman ditatal secara menegak dan kami menggunakan rotatey (45deg) berubah menjadi elemen
dokumen kami secara langsung (kiri) dan menggunakan corak pembungkus (kanan):
dengan menggunakan corak di atas dan menubuhkan CSS berubah dengan nilai peratusan apabila mungkin, kita boleh menjejaskan elemen kita dengan cara yang konsisten, tanpa mengira saiz kandungannya.
dari transformasi ke animasi
Pertimbangkan peraturan asas @keyframes ini:
body { transform: rotateZ(45deg); }
Begitu juga, kita dapat menyusun animasi yang membuang kandungan web kami dari pandangan. Sebagai contoh, jika kita mahu halaman kita hilang ke jarak semasa berputar, kita boleh menggunakan sesuatu seperti ini:
#element { transform: rotateZ(45deg); }
dengan hasil visual adalah:
melampirkan animasi ke
Tempat intuitif pertama untuk menambah animasi ke elemen badan akan menjadi acara JavaScript onload. Walau bagaimanapun, ternyata menambah animasi apabila kebakaran onload sebenarnya terlambat. Acara ini sebenarnya mencetuskan apabila keseluruhan kandungan di halaman kami telah selesai memuatkan (termasuk mana-mana imej atau sumber yang berintensifkan jalur lebar lain). Melampirkan animasi ke Onload pada halaman intensif jalur lebar akan mengakibatkan kandungan kami memaparkan "biasanya," diikuti dengan animasi yang mencetuskan dan menghidupkan semula kandungan ke dalam pandangan. Tidak betul -betul kesan yang kami targetkan.
Sebagai alternatif, kita boleh menggunakan acara domcontentloaded yang mencetuskan apabila penyemak imbas telah menyelesaikan struktur DOM kandungan kami (tetapi berpotensi sebelum sumber telah selesai dimuatkan). Demo DOMContentLoaded Drive DomContentLoad IE menggambarkan perbezaan antara kedua -dua peristiwa ini. Walau bagaimanapun, dalam kes -kes kandungan web yang kompleks, pelayar moden boleh memilih untuk melakukan "progresif", memaparkan halaman sebelum keseluruhan pokok Dom telah dimuatkan. Dalam situasi ini, hasil visual akan sama dengan senario onload.
Tempat yang optimum untuk menubuhkan animasi yang memindahkan kandungan halaman kami dalam pandangan adalah sejajar di bahagian atas elemen
. Ini memastikan bahawa animasi akan bermula dengan betul kerana kandungannya diberikan (dan kedudukan permulaan kandungannya akan menjadi dari kerangka utama animasi yang dipilih kami). Kesan sampingan yang menyenangkan dari pendekatan ini adalah bahawa animasi sebenarnya boleh menutup sebarang rendering progresif, bayaran semula atau beban sumber yang boleh berlaku dengan kandungan kompleks.Menyediakan animasi yang memindahkan kandungan kami dari pandangan juga menarik. Seseorang boleh mengandaikan bahawa kita boleh melampirkan pengendali onclick kepada semua elemen yang menarik dalam kandungan kami (contohnya semua tag ) dan hanya menetapkan sifat animasi yang relevan (nama animasi, penahan animasi, dan lain-lain) dalam fungsi panggil balik . Walau bagaimanapun, jika kita tidak menangguhkan navigasi daripada berlaku, kita tidak akan melihat peralihan cecair yang dijangkakan.
Ini adalah peluang yang baik untuk menggunakan peristiwa animasi yang diterangkan dalam spesifikasi animasi CSS. Khususnya, kita boleh menggunakan acara AnimationEnD untuk mengesan apabila animasi telah selesai dan kemudian mencetuskan navigasi (dengan menetapkan window.location.href, misalnya). Oleh itu, onclick kami akan mencetuskan animasi "mengalih keluar-dari-pandangan" dan mendaftarkan pengendali untuk AnimationEnD pada
yang akan memastikan bahawa peristiwa navigasi berlaku.hanya menikmati animasi halaman-ke-halaman, melangkah melalui halaman tutorial menggunakan pautan "Teruskan ..." di sudut kanan bawah setiap halaman.
Pada akhir tutorial kami menyediakan beberapa panduan tambahan dan kod sampel mengenai cara menggabungkan animasi ini dengan kandungan web anda sendiri.
membungkusnya
Jika anda suka membaca siaran ini, anda akan suka dipelajari; Tempat untuk mempelajari kemahiran dan teknik segar dari Sarjana. Ahli mendapat akses segera ke semua ebook SitePoint dan kursus dalam talian interaktif, seperti CSS praktikal.
soalan yang sering ditanya mengenai animasi CSS penuh halamanYa, animasi CSS boleh digunakan dengan SVG (grafik vektor berskala). SVG mempunyai set sifat CSS tersendiri yang boleh animasi, seperti mengisi, strok, dan transformasi. Ini membolehkan animasi yang lebih kompleks dan menarik berbanding dengan menghidupkan elemen HTML biasa. Sebagai contoh, Internet Explorer tidak menyokong harta animasi-masa. Untuk memastikan keserasian silang pelayar, anda boleh menggunakan awalan vendor seperti -webkit-, -moz-, -o-, dan -ms- sebelum sifat animasi. Anda juga boleh menggunakan alat seperti AutoPrefixer untuk menambahkan awalan ini secara automatik. Ciri -ciri animasi, terutamanya yang mencetuskan susun atur berubah seperti lebar, ketinggian, dan margin. Sebaliknya, gunakan sifat yang hanya mencetuskan perubahan komposit seperti transformasi dan kelegapan. Anda juga boleh menggunakan harta yang akan berubah untuk memberitahu penyemak imbas mengenai sifat-sifat yang mungkin akan dihidupkan. Jadilah animasi dengan CSS. Ini kerana ia tidak mempunyai keadaan pertengahan antara nilai -nilainya. Walau bagaimanapun, anda boleh mencapai kesan yang sama dengan menghidupkan sifat kelegapan dan penglihatan. -Penghitungan harta-kiraan. Dengan menetapkan nilainya kepada Infinite, animasi akan diulangi selama-lamanya. harta. Harta ini mentakrifkan tempoh masa yang diperlukan oleh animasi untuk menyelesaikan satu kitaran.
Atas ialah kandungan terperinci Cara membuat animasi penuh halaman menggunakan CSS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!