แอนิเมชั่น Parallax Scroll บนตัวสร้างออกซิเจน

เผยแพร่แล้ว: 2022-07-30

ในบทช่วยสอนนี้ เราจะสร้างฉากพารัลแลกซ์หลายชั้นที่ไม่เหมือนใครใน Oxygen Builder เป็นสิ่งที่จะสร้างความประทับใจให้แก่ลูกค้าและผู้เยี่ยมชมเว็บไซต์ และมันก็ไม่ยากเกินไปที่จะนำไปใช้

ezgif-com-gif-maker-2
นี่คือสิ่งที่เรากำลังทำ

ขั้นแรก เราต้องสร้างเนื้อหารูปภาพจริงๆ มีหลายวิธีในการทำเช่นนี้ และไม่ว่าคุณจะเลือกสร้างฉากนี้อย่างไร ตรวจสอบให้แน่ใจว่ามีส่วนความกว้างเต็มจำนวนที่คุณสามารถส่งออกได้ แต่ละส่วนควรแสดงถึงความลึกเฉพาะของภาพ ตัวอย่างเช่น อาจมีเบื้องหน้าของต้นไม้ จากนั้นก็มีเนินเขา แล้วก็มีอีกเนินหนึ่ง และสุดท้ายก็มีดวงอาทิตย์

รูปภาพ-20-11

เพื่อประโยชน์ของบทช่วยสอนนี้ ฉันตัดสินใจใช้ฉากพระอาทิตย์ตกที่มีอยู่แล้วซึ่งฉันมาจากชุมชน Figma อย่างไรก็ตาม คุณสามารถสร้างของคุณเองใน Figma หรือใช้โปรแกรมอื่น เช่น Photoshop

เราตีพิมพ์บทความเกี่ยวกับการสร้างแอนิเมชั่นการเลื่อนพารัลแลกซ์ที่คล้ายกันใน Elementor เมื่อหลายปีก่อน และได้สรุปเทคนิค Photoshop ซึ่งคุณสามารถใช้ภาพจริงและแยกและส่งออกได้อย่างง่ายดายสำหรับเอฟเฟกต์นี้ อ่านได้ที่นี่:

ฉันขอแนะนำให้ใช้ Figma เพราะมันฟรี ง่าย และยังช่วยให้ส่งออกกลุ่มและเลเยอร์ได้อย่างรวดเร็ว

ต่อไปนี้คือตัวอย่างที่เราสร้างส่วนประกอบบนเนินในไม่กี่วินาทีโดยใช้เครื่องมือปากกา

isotropic-2022-07-27-at-22-08-29

รวมหลายสิ่งเหล่านี้เข้าด้วยกัน สร้างกลุ่ม และส่งออกอย่างง่ายดาย ตามที่เราจะพูดถึงตอนนี้

isotropic-2022-07-27-at-22-03-18
กลุ่มเนินเขาที่อยู่ตรงกลางจอ ด้านบน เราจะวางต้นไม้ และด้านหลัง เราจะวางเนินเขาและดวงอาทิตย์มากขึ้น

เมื่อคุณสร้างฉากด้วยหลายกลุ่มและความลึกของภาพที่แตกต่างกันแล้ว ให้ส่งออกแต่ละกลุ่มแยกกัน ใน Figma นี่เป็นเรื่องง่ายมาก เพียงคลิกขวาที่กลุ่ม เลือกคัดลอก/วางเป็น จากนั้นคัดลอกเป็น PNG

ฉันทำเช่นนี้สำหรับองค์ประกอบแต่ละกลุ่ม

isotropic-2022-07-27-at-22-03-36

จากนั้นฉันก็วาง PNG เหล่านี้โดยตรงในโปรแกรมแก้ไข Gutenberg ซึ่งอัปโหลดไปยังไลบรารีสื่อโดยอัตโนมัติ

isotropic-2022-07-27-at-22-16-23
รูปภาพในโปรแกรมแก้ไข

นอกจากนี้ ฉันยังติดตั้งปลั๊กอินการเพิ่มประสิทธิภาพรูปภาพ (ShortPixel) ซึ่งปรับขนาดและย่อขนาดรูปภาพโดยอัตโนมัติเพื่อให้โหลดได้อย่างรวดเร็วที่ส่วนหน้า นี่เป็นสิ่งสำคัญหากคุณจะคัดลอกและวาง PNG โดยตรงจากรูปเนื่องจากไม่มีการเพิ่มประสิทธิภาพด้วยตัวเอง - ขนาดไฟล์มีขนาดใหญ่

สำหรับพื้นหลัง ฉันเติมฉากด้วยการไล่ระดับสีเชิงเส้น Figma มีคุณสมบัติที่ยอดเยี่ยมที่เราสามารถส่งออก CSS เพียงคลิกขวา คัดลอก css และดึงเฉพาะพื้นหลังของเฟรมหลักเท่านั้น

isotropic-2022-07-27-at-22-04-15

นี่คือสิ่งที่เราลงเอยด้วย

พื้นหลัง: การไล่ระดับสีเชิงเส้น (181.12deg, #6D4869 -4.47%, #906074 5.09%, #D58480 18.15%, #ECA58B 34.03%, #F8C995 69.69%);

ตอนนี้ เราสร้างส่วนที่จะมีเลเยอร์ทั้งหมดของฉากพารัลแลกซ์ของเรา ส่วนนี้ไม่มีช่องว่างภายในและตั้งค่าเป็นความกว้างเต็มที่เพื่อทำให้ส่วนนี้ดูสมจริง

จากนั้นฉันก็สามารถนำพื้นหลังการไล่ระดับสีเชิงเส้นที่เราส่งออก และเพิ่มลงใน CSS ที่กำหนดเองของส่วนของเรา

isotropic-2022-07-27-at-22-02-11

ตอนนี้ตั้งค่าส่วนให้มี position:relative และไม่มีช่องว่างภายใน ทำให้เต็มความกว้างและ height:100vh และซ่อนโอเวอร์โฟลว์เพื่อให้มีฉากอยู่

มีสองวิธีหลักในการวางแต่ละเลเยอร์ในฉาก: เป็นภาพพื้นหลังหรือองค์ประกอบ <img>

ฉันใช้ divs และรูปภาพพื้นหลังเนื่องจากเร็วกว่า ส่วนของเรามี 1 div สำหรับรายการแต่ละกลุ่ม div อยู่ในตำแหน่งที่แน่นอนโดยตั้งค่าด้านบน ด้านล่าง ด้านซ้าย และด้านขวาเป็น 0 ซึ่งทำให้ส่วนนี้เต็ม ส่วนในขณะที่อนุญาตให้ย้ายผ่านการแปลสำหรับเอฟเฟกต์พารัลแลกซ์ของเรา

isotropic-2022-07-27-at-22-37-16

พื้นหน้า พื้นหลัง และทุกสิ่งในระหว่างนั้นถูกเพิ่มเข้าไปในฉากโดยใช้ภาพพื้นหลัง CSS

  • โดยทั่วไปแล้วตำแหน่งแบ็คกราวด์จะถูกตั้งค่าเป็น 100% ซึ่งจะดันทุกอย่างลงมาที่ฉาก โดยจัดตำแหน่งให้อยู่ด้านล่างสุด หากจำเป็น เราสามารถเปลี่ยนตำแหน่งได้อย่างง่ายดายโดยใช้คุณสมบัตินี้
  • ภาพพื้นหลังถูกตั้งค่าให้มี ซึ่งหมายความว่าจะมีความกว้างเต็มภายใน div
  • ตั้งค่าการเล่นซ้ำเป็น none
  • นอกจากนี้ ให้เพิ่มคลาสเช่น .plax_hill-1 เพื่อให้ระบุได้ง่ายขึ้นเมื่อใช้เอฟเฟกต์ที่เกี่ยวข้อง
isotropic-2022-07-27-at-22-35-42

ดำเนินการนี้สำหรับแต่ละกลุ่มที่เราส่งออก และจัดตำแหน่งให้ซ้อนทับกันโดยใช้ดัชนี z

isotropic-2022-07-27-at-22-35-13

เรายังคงสามารถตอบสนองได้อย่างสมเหตุสมผลโดยการเปลี่ยนภาพพื้นหลังบนจุดสั่งหยุดต่างๆ เพื่อรองรับการเปลี่ยนแปลงของหน้าจอจากแนวนอนเป็นแนวตั้ง (ฉันไม่ทำเช่นนี้ในบทช่วยสอนนี้ แต่ถ้าเอฟเฟกต์นี้เกิดขึ้นจริง สิ่งเหล่านี้จะแตกต่างออกไป ฉากสำหรับแต่ละจุดพัก เนื่องจากเราจะแทนที่แต่ละส่วนเพื่อให้กินเนื้อที่มากขึ้นเมื่ออัตราส่วนภาพยาวขึ้น)

*ด้วยวิธีการแสดงภาพ ให้ใช้ SRCSET

ออกซิเจนสร้างโลโก้

หลักสูตรการสร้างออกซิเจน - เร็ว ๆ นี้!

หลักสูตร Oxygen Builder Mastery จะนำคุณตั้งแต่เริ่มต้นจนถึงมืออาชีพ - รวมโมดูล ACF, MetaBox & WooCommerce

รับการแจ้งเตือนการเปิดตัว & ส่วนลด

สำหรับภาพดวงอาทิตย์ ฉันต้องจัดตำแหน่งส่วนบนสุดของแบ็คกราวด์เป็น 50% ซึ่งวางไว้ที่กึ่งกลางของ div แทนที่จะดันไปจนสุดจนชิดด้านล่าง:

isotropic-2022-07-27-at-22-25-38

ตอนนี้ ฉากทั้งหมดที่เราสร้างบน Figma ส่งออกเป็น PNG อัปโหลดไปยัง WordPress และสร้างด้วย Oxygen เสร็จสมบูรณ์แล้ว เกือบจะเหมือนกับการออกแบบของเรา และตอบสนองต่อการเปลี่ยนแปลงของขนาดหน้าจอ ยังไม่มีพารัลแลกซ์ ซึ่งตอนนี้เราจะดำเนินการต่อและเพิ่ม

เราสามารถใช้พารัลแลกซ์ไลบรารี่ใดก็ได้ที่เราต้องการ - พวกเขาทั้งหมดทำในสิ่งเดียวกัน สำหรับบทช่วยสอนนี้ ฉันใช้ lax.js ที่ใหม่กว่า

อย่างไรก็ตาม ให้ตรวจสอบ Rellax.js และ Parroller.js ซึ่งทั้งคู่มีบทแนะนำที่เผยแพร่โดยเฉพาะสำหรับ Oxygen Builder ในบล็อกนี้

สำหรับการพักผ่อน:

สำหรับ Parroller:

Lax สามารถทำ Parallax ได้ แต่ก็สามารถทำอย่างอื่นได้อีกมากมาย ทำให้เป็นไลบรารีแอนิเมชั่นการโต้ตอบที่ทรงพลังอย่างเหลือเชื่อ ฉันต้องการเน้นที่นี่และให้ตัวอย่างพื้นฐานเพื่อแสดงให้คุณเห็นว่าสามารถทำอะไรได้บ้าง

68747470733a2f2f692e696d6775722e636f6d2f584e7676414f762e676966
มันอาจจะดูบ้าๆบอ ๆ ดังที่เห็นในการสาธิตด้านบนนี้

โดยพื้นฐานแล้ว คุณมีไดรเวอร์ และจากนั้นคุณจะมีผล เอฟเฟกต์ถูกนำไปใช้โดยขึ้นอยู่กับไดรเวอร์ ในตัวอย่างนี้ ไดรเวอร์ของเราคือเลื่อนแนวตั้งและตำแหน่งของมัน เอฟเฟกต์สามารถเป็นอะไรก็ได้ที่ CSS มีให้ สำหรับพารัลแลกซ์ เราจะใช้ transformY อย่างไรก็ตาม เรายังสามารถเปลี่ยนความทึบ สเกล สี และอื่นๆ ได้!

อ่านเพิ่มเติมเกี่ยวกับ lax.js ที่นี่: https://github.com/alexfoxy/lax.js

ขั้นแรก เรารวมโดยการเพิ่มสคริปต์จาก CDN ใน wp_head ของเรา ฉันใช้ WPCodeBox สำหรับสิ่งนี้:

isotropic-2022-07-27-at-23-15-23

จากนั้นในไฟล์ JS ที่เพิ่มที่ส่วนท้าย เราจะเริ่มต้นเอฟเฟกต์ เพิ่มไดรเวอร์ที่ดูที่ตำแหน่งการเลื่อนของหน้าจอ แล้วเพิ่มเอฟเฟกต์ต่างๆ ให้กับแต่ละองค์ประกอบ สำหรับส่วนอื่นๆ ทั้งหมดที่ไม่ใช่ดวงอาทิตย์ เราเคยแปลว่าทำไมต้องจัดการตำแหน่งของ div ตามตำแหน่งการเลื่อนแนวตั้ง

สำหรับดวงอาทิตย์ เรายังคงใช้ตำแหน่งเลื่อนแนวตั้งเป็นตัวกระตุ้น/ตัวขับ แต่แทนที่จะปรับตำแหน่ง เราเปลี่ยนมาตราส่วนบนเลื่อน

window.onload = ฟังก์ชั่น () { lax.init (); lax.addDriver ("scrollY", ฟังก์ชัน () { return document.documentElement.scrollTop; }, { frameStep: 1 } ); lax.addElements (".plax_trees", { scrollY: { translateY: [ ["elInY*2", "elOutY"], [0, 100], ], }, }); lax.addElements (".plax_hills-1", { scrollY: { translateY: [ ["elInY*2", "elOutY"], [0, 200], ], }, }); lax.addElements (".plax_hills-2", { scrollY: { translateY: [ ["elInY*2", "elOutY"], [0, 300], ], }, }); lax.addElements (".plax_hills-3", { scrollY: { translateY: [ ["elInY*2", "elOutY"], [0, 400], ], }, }); lax.addElements (".plax_hills-4", { scrollY: { translateY: [ ["elInY*2", "elOutY"], [0, 500], ], }, }); lax.addElements (".plax_hills-5", { scrollY: { translateY: [ ["elInY*2", "elOutY"], [0, 600], ], }, }); lax.addElements (".plax_sun", { scrollY: { มาตราส่วน: [ [100, "screenHeight"], [1, 1.5], ], }, }); };

ตามการวางตำแหน่งโดยรวมของส่วนต่างๆ หลังจากใช้เอฟเฟกต์ ฉันต้องย้อนกลับไปและเปลี่ยนตำแหน่งพื้นหลังขององค์ประกอบเพื่อให้แน่ใจว่าทุกอย่างถูกต้อง คุณยังสามารถลองและชดเชยโดยใช้ระยะขอบหรือการแปลง ตราบใดที่ทุกอย่างสัมพันธ์กับมาตราส่วนเดียวกัน ในกรณีนี้ความสูงของหน้าจอก็ควรยังคงตอบสนอง

และสุดท้าย เราก็ได้ผลลัพธ์สุดท้ายจากเลเยอร์พารัลแลกซ์ที่เปลี่ยนแปลงเมื่อคุณเลื่อนดู มันมีเอกลักษณ์เฉพาะตัว และคุณสามารถสร้างรูปลักษณ์ที่แตกต่างกันมากมายเช่นนี้ ซึ่งจะทำให้ลูกค้าและผู้เยี่ยมชมประทับใจ

ออกซิเจนสร้างโลโก้

หลักสูตรการสร้างออกซิเจน - เร็ว ๆ นี้!

หลักสูตร Oxygen Builder Mastery จะนำคุณตั้งแต่เริ่มต้นจนถึงมืออาชีพ - รวมโมดูล ACF, MetaBox & WooCommerce

รับการแจ้งเตือนการเปิดตัว & ส่วนลด
ezgif-com-gif-maker-2