ลักษณะบล็อกที่ราบรื่นเมื่อเลื่อน jquery การสร้างภาพเคลื่อนไหวเมื่อเลื่อนหน้าโดยใช้ jQuery การเชื่อมต่อผ่านการดาวน์โหลดไฟล์เก็บถาวร

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

ท้ายที่สุดแล้วจะมีลักษณะเช่นนี้:

มาร์กอัป HTML

HTML สำหรับตัวอย่างของเรานั้นเรียบง่ายที่สุด สิ่งเดียวที่เราต้องการคือส่วนหัว h1 ภายในองค์ประกอบส่วนหัว และเพื่อให้ตัวอย่างชัดเจนขึ้นเรามาเพิ่มรูปภาพพร้อมรางวัลให้กับการกระทำกัน =)

jQuery

ขั้นแรก เรามาเพิ่มสไตล์เริ่มต้นที่ปรับปรุงรูปลักษณ์ของส่วนหัว:

ฉันต้องการทราบทันทีว่าการเปลี่ยนแปลง CSS ถูกตั้งค่าเป็นสไตล์เริ่มต้น จากการสร้างคุณสมบัติการเปลี่ยนแปลง เห็นได้ชัดว่าเราเปลี่ยนคุณสมบัติทั้งหมดขององค์ประกอบ (คุณสมบัติการเปลี่ยนผ่าน - ทั้งหมด) ใน 0.4 วินาที (ระยะเวลาการเปลี่ยนผ่าน - 0.4 วินาที) ด้วยการเร่งความเร็วที่ง่ายดาย (ฟังก์ชั่นการเปลี่ยนเวลา - ความง่ายดาย ).

ตอนนี้เราอธิบายคลาส Sticky ซึ่งใช้กับส่วนหัวระหว่างการเลื่อน มีบางสิ่งที่เราต้องการทำกับชื่อเรื่อง อันดับแรก เราต้องการให้ชื่อเรื่องมีขนาดเล็กลง และเรายังต้องการเปลี่ยนสีพื้นหลังและจัดแนวข้อความไปทางซ้าย:

1
2
3
4
5
6
7
8
9
10

ส่วนหัว.เหนียว(
ตำแหน่ง: คงที่;
ขนาดตัวอักษร: 24px;
ความสูงของบรรทัด: 48px;
ส่วนสูง: 48px;
ความกว้าง: 100%;
พื้นหลัง : #efc47D ;
การจัดแนวข้อความ: ซ้าย;
ช่องว่างภายใน : 20px ;
}

พร้อม! จากตัวอย่างนี้ คุณสามารถดำเนินการใดๆ ก็ตามกับองค์ประกอบของหน้า HTML ในขณะที่เลื่อน สิ่งที่คุณต้องมีคือ jQuery, CSS และไอเดียของคุณ!

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

ฉันได้กล่าวไปแล้วว่าฉันไม่รู้จักจาวาสคริปต์ดีนัก (อยู่ระหว่างการเรียนรู้) และฉันเองก็ไม่สามารถใช้ฟังก์ชันนี้ได้ แต่โชคดีที่ฉันพบวิธีแก้ปัญหาสำเร็จรูปในเว็บไซต์อื่น มันถูกคิดค้นโดย Artem Anashev หนึ่งในผู้เขียนในบล็อก loftblog.ru เนื้อหาในหัวข้อนี้นำเสนอในรูปแบบวิดีโอโดยเฉพาะ แต่ฉันจะพยายามอธิบายทุกอย่างเป็นข้อความและโพสต์แหล่งที่มาของฉัน หากสะดวกกว่าสำหรับคุณในการชมเนื้อหาวิดีโอคุณสามารถอ่านต้นฉบับได้ในตอนท้ายของบทความ :)

เช่นเดียวกับครั้งก่อน เราดาวน์โหลดและเชื่อมต่อไลบรารี animate.css ซึ่งคุณสามารถเลือกประเภทของแอนิเมชั่นในการออกแบบภาพที่สะดวกสบาย:

ในบทความนี้ ฉันจะใช้ไลบรารี annimate.css เวอร์ชันที่ไม่ได้ปรับให้เหมาะสม แต่ฉันขอแนะนำให้คุณใช้ animate.min.css ซึ่งดาวน์โหลดจาก github เนื่องจากเวอร์ชันนี้มีน้ำหนักน้อยกว่าจึงโหลดได้เร็วกว่า

ฉันวางไว้ในโฟลเดอร์ "css" ดังนั้นมันจึงกลายเป็นเส้นทางต่อไปนี้:

ตอนนี้เราต้องเชื่อมต่อ jquery และปลั๊กอินจุดอ้างอิง ซึ่งจะช่วยให้เราเลื่อนภาพเคลื่อนไหวได้ทั้งสองทิศทาง:

คุณสามารถดาวน์โหลด Waypoints ได้จากลิงก์นี้หรือนำมาจากแหล่งที่มา (รวมถึงไฟล์อื่นๆ ที่จำเป็นในการใช้เอฟเฟกต์นี้)

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

ความสนใจ! คุณต้องทดสอบผลกระทบต่อเซิร์ฟเวอร์ภายในหรือภายนอก มิฉะนั้นภาพเคลื่อนไหวจะไม่เล่น

ภาพเคลื่อนไหวเมื่อเลื่อนทั้งสองทิศทาง - มาร์กอัป html

ฉันสร้างคลาส "กล่อง" ซึ่งฉันจะเก็บรูปภาพของฉัน

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

เพื่อให้แอนิเมชั่นเล่นได้ คุณต้องเพิ่มคลาสแอนิเมชั่น คุณสมบัติของมันระบุไว้ในไลบรารี animate.css ซึ่งเราได้รวมไว้ก่อนหน้านี้

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

BoxHidded( การมองเห็น: ซ่อนไว้; /* ทำให้ไอคอนโปร่งใสโดยสมบูรณ์ */ ) .fadeInUp, .fadeOutDown( การมองเห็น: มองเห็นได้; /* ทำให้ไอคอนไม่โปร่งใสโดยสมบูรณ์ */ )

คลาส Delay-05s และ Delay-1s มีหน้าที่รับผิดชอบต่อความล่าช้าในการเล่นแอนิเมชั่น 0.5 วินาทีและ 1 วินาทีตามลำดับ ลองดูคุณสมบัติที่กำหนดให้กับคลาสเหล่านี้:

ดีเลย์-05s( -webkit-animation-delay: .5s; -moz-animation-delay: .5s; -o-animation-delay: .5s; นิเมชั่นดีเลย์: .5s; ) .delay-1s( -webkit- ภาพเคลื่อนไหวล่าช้า: 1s; -moz-animation-delay: 1s; -o-animation-delay: 1s; ภาพเคลื่อนไหวล่าช้า: 1s; )

เพื่อเสร็จสิ้นการทำงานกับสไตล์ชีต สิ่งที่เราต้องทำคือวางสคริปต์ต่อไปนี้ไว้หน้าแท็กปิดเนื้อหา

$(".box") .waypoint(function(dir) ( if (dir === "down") $(this) .removeClass("fadeOutDown") .addClass("fadeInUp"); else $(this) . RemoveClass("fadeInUp") .addClass("fadeOutDown"); ), ( ชดเชย: "80%" )) .waypoint(function(dir) ( if (dir === "down") $(this) .removeClass( "fadeInUp") .addClass("fadeOutDown"); else $(นี้) .removeClass("fadeOutDown") .addClass("fadeInUp"); ), ( ชดเชย: -50 ))

ให้ความสนใจกับบรรทัด:

RemoveClass("fadeOutDown") .addClass("fadeInUp");

ในนั้นเราเพิ่มและลบคลาสที่รับผิดชอบสไตล์แอนิเมชั่นที่จะเล่นเมื่อเลื่อน ในกรณีนี้ fadeInUp และ fadeOutDown คุณสามารถเลือกภาพเคลื่อนไหวประเภทใดก็ได้ที่นำเสนอบนหน้าอย่างเป็นทางการของไลบรารี animate.css

หากต้องการเปลี่ยนช่วงเวลาที่ภาพเคลื่อนไหวควรเริ่มเล่น ให้เปลี่ยนค่าออฟเซ็ต ในกรณีนี้จะตั้งไว้ที่ 80% ตามที่ฉันเข้าใจ นี่คือระยะห่างจากด้านบนของหน้าจอถึงบล็อกที่เรากำลังสร้างภาพเคลื่อนไหว

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

ในกรณีนี้ปัญหานี้ได้รับการแก้ไขแล้ว ออฟเซ็ตแรกมีหน้าที่ในการเริ่มแอนิเมชั่น และประการที่สองคือการหายตัวไปของบล็อก นั่นคือเมื่อมองไม่เห็นเนื้อหาภาพเคลื่อนไหว 50 พิกเซล ลองมัน! ตัวอย่างจะช่วยให้คุณเข้าใจทุกอย่าง

ดิแมดv7

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

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

ขั้นตอนที่ 1

เช่นเคย เพื่อให้ไลบรารี jQuery ทำงานได้ คุณจะต้องรวมไลบรารีไว้ในส่วนหัวก่อนส่วนหัวปิดหรือในส่วนท้ายก่อนส่วนการปิด

ขั้นตอนที่ 2

//รหัสที่นี่

หรือสร้างไฟล์เช่น - scriptviewport.js และเชื่อมต่อ

ภายในแท็กหรือไฟล์ ให้เพิ่มโค้ดต่อไปนี้:

Function(a)(a.fn.viewportChecker=function(b)(var c=(classToAdd:"visible",classToRemove:"invisible",offset:100,repeat:!1,invertBottomOffset:!0,callbackFunction:function( a,b)(),เลื่อนแนวนอน:!1);a.extend(c,b);var d=this,e=(height:a(window).height(),width:a(window).width( )),f=-1!=navigator.userAgent.toLowerCase().indexOf("webkit")?"body///html";return this.checkElements=function())(var b,g;c.scrollHorizontal ? (b=a(f).scrollLeft(),g=b+e.width):(b=a(f).scrollTop(),g=b+e.height),d.each(function() )( var d=a(สิ่งนี้),f=(),h=();if(d.data("vp-add-class")&&(h.classToAdd=d.data("vp-add-class) ") ),d.data("vp-remove-class")&&(h.classToRemove=d.data("vp-remove-class")),d.data("vp-offset")&&(h. offset= d.data("vp-offset")),d.data("vp-repeat")&&(h.repeat=d.data("vp-repeat")),d.data("vp-scrollHorizontal ") &&(h.scrollHorizontal=d.data("vp-scrollHorizontal")),d.data("vp-invertBottomOffset")&&(h.scrollHorizontal=d.data("vp-invertBottomOffset")),a. ขยาย( f,c),a.ขยาย(f,h),!d.hasClass(f.classToAdd)||f.repeat)(String(f.offset).indexOf("%")>0&&(f. offset= parseInt(f.offset)/100*e.height);var i=f.scrollHorizontal?Math.round(d.offset().left)+f.offset:Math.round(d.offset() ด้านบน) +f.offset,j=f.scrollHorizontal?i+d.width():i+d.height();f.invertBottomOffset&&(j-=2*f.offset),g>i&&j>b?( d. RemoveClass(f.classToRemove),d.addClass(f.classToAdd),f.callbackFunction(d,"เพิ่ม")):d.hasClass(f.classToAdd)&&f.repeat&&(d.removeClass(f.classToAdd) ,f .callbackFunction(d,"remove")))))),a(document).bind("touchmove MSPointerMove pointermove",this.checkElements),a(window).bind("load scroll touchmove",นี่ checkElements) ,a(window).resize(function(b)(e=(height:a(window).height(),width:a(window).width()),d.checkElements())),สิ่งนี้ .checkElements (),นี่))(jQuery);

โค้ดถูกบีบอัดเป็นบรรทัดเดียวเพื่อให้เบราว์เซอร์โหลดได้อย่างรวดเร็วและมีความยาว ดังนั้นควรระมัดระวังในการคัดลอกและอย่าลืมคัดลอกทั้งหมด

ขั้นตอนที่ 3

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

jQuery(document).ready(function() ( jQuery(".elementanm").addClass("hidden").viewportChecker(( classToAdd: "visible Animated slideRight", offset: 100 )); ));

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

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

jQuery(document).ready(function() ( jQuery(".blockanm").addClass("hidden").viewportChecker(( classToAdd: "visible Animated slideLeft", offset: 100 )); ));

ขั้นตอนที่ 4

ดังที่ได้กล่าวไว้ในขั้นตอนที่แล้ว คุณต้องตั้งค่าคลาส elementanm ให้กับองค์ประกอบต่างๆ มาร์กอัป HTML จะมีลักษณะดังนี้:

หากคุณได้กำหนดคลาสให้กับองค์ประกอบแล้ว เพียงเพิ่มคลาสนั้นโดยคั่นด้วยการเว้นวรรค ตัวอย่างเช่น:

ขั้นตอนที่ 5

และสิ่งสุดท้ายที่ต้องทำคือตั้งค่าสไตล์ CSS ก่อนอื่น เรามาเขียนสไตล์แอนิเมชั่นกันก่อน เรานำมาจากบทความที่แล้วซึ่งผมได้กล่าวไปแล้วในบทความนี้ ฉันใช้แอนิเมชั่น - ออกไปทางขวา

/*ภาพเคลื่อนไหวทางด้านขวา*/ .slideRight( Animation-name: slideRight; -webkit-animation-name: slideRight; Animation-duration: 4s; -webkit-animation-duration: 4s; Animation-timing-function: Ease-in -out ; -webkit-animation-timing-function: easy-in-out; การมองเห็น: มองเห็นได้ !important; ) @keyframes slideRight ( 0% ( การแปลงรูป: แปล X(-150%); ) 100% ( การแปลงรูป: แปลX(0 % ; ) ) @-webkit-keyframes slideRight ( 0% ( -webkit-transform: transX(-150%); ) 100% ( -webkit-transform: transX(0%); ) )

อย่างที่คุณเห็น สไตล์แอนิเมชั่นมีคลาส SlideRight ดังนั้นคลาสนี้จึงเขียนด้วยสคริปต์ในขั้นตอนที่ 3 นอกจากนี้ยังมีค่าเป็น 4 ซึ่งเป็นเวลาของภาพเคลื่อนไหวและเท่ากับ 4 วินาที ตอนนี้เรามาเพิ่มสไตล์เพื่อให้องค์ประกอบนั้นมองไม่เห็นตั้งแต่แรก

ซ่อนไว้( ความทึบ:0; ) .visible( ความทึบ:1; )

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

เพียงเท่านี้ ขอบคุณสำหรับความสนใจของคุณ 🙂

// echo get_the_post_thumbnail(get_the_ID(), "รูปขนาดย่อที่เกี่ยวข้อง"); // แสดงขนาดภาพขนาดย่อของฉัน?>

ทักทาย. วันนี้เราจะได้เรียนรู้วิธีทำให้องค์ประกอบเคลื่อนไหวบนเพจและแสดงภาพเคลื่อนไหวเมื่อเลื่อนหน้า ในบทช่วยสอนนี้ เราจะทำงานกับไลบรารี animate.css และ wow.js บทเรียนนี้บันทึกไว้ในวิดีโอด้วย และตอนนี้บล็อกมีช่องบน YouTube แล้ว ดังนั้นบทเรียนใหม่จะมาพร้อมกับสื่อวิดีโอ ไป!


ขั้นแรก ฉันเตรียมหน้า html พร้อมองค์ประกอบง่ายๆ (ส่วนหัวและรูปภาพ) ที่เราจะเคลื่อนไหว นี่คือรหัส HTML ของหน้า:

มุ่งหน้าไปที่หนึ่ง หัวเรื่องที่สอง หัวเรื่องที่สาม หัวเรื่องที่สี่ หัวเรื่องที่ห้า

และมาร์กอัป CSS แบบง่าย:

ส่วน ( ความกว้าง: 80%; การจัดข้อความ: กึ่งกลาง; ตำแหน่ง: ญาติ; ระยะขอบ: 0 อัตโนมัติ; การขยายด้านบน: 50px; การขยายด้านล่าง: 50px; ) ส่วน h1 ( ขนาดแบบอักษร: 32px; น้ำหนักแบบอักษร: ตัวหนา; ระยะขอบ: 20px 0 50px; การแปลงข้อความ: ตัวพิมพ์ใหญ่; ) ส่วน .col ( ความกว้าง: 30%; ระยะขอบ: 0 1% 50px; จอแสดงผล: บล็อกอินไลน์; )

อย่างที่คุณเห็นทุกอย่างง่ายมาก

เราเชื่อมต่อ animate.css องค์ประกอบที่เคลื่อนไหว

ดาวน์โหลดไลบรารี animate.css ฉันวางไฟล์ animate.min.css ไว้ในโฟลเดอร์ /libs ถัดจากหน้า html เราเชื่อมต่อ animate.min.css เป็นไฟล์ css ปกติระหว่างธีมต่างๆ

ตอนนี้ สำหรับองค์ประกอบที่จำเป็นต้องใช้แอนิเมชั่น คุณต้องเพิ่มคลาสสไตล์ CSS ที่จำเป็น คุณต้องเพิ่มคลาสแอนิเมชั่นและคลาสที่มีชื่อของแอนิเมชั่น เช่น swing นี่คือสิ่งที่คุณจะได้สำหรับหัวข้อ h1:

มุ่งหน้าไปที่หนึ่ง

ตอนนี้ส่วนหัวนี้จะเล่นภาพเคลื่อนไหวที่ระบุเมื่อโหลดหน้าเว็บ ในทำนองเดียวกัน เราจะตั้งค่าภาพเคลื่อนไหวสำหรับองค์ประกอบอื่นๆ:

มุ่งหน้าไปที่หนึ่ง

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

การเชื่อมต่อไลบรารี wow.js สำหรับแอนิเมชั่นเมื่อเลื่อนหน้า

ไลบรารี wow.js ถูกสร้างขึ้นเป็นพิเศษเพื่อทำงานควบคู่กับไลบรารี animate.css มันทำงานในลักษณะที่ภาพเคลื่อนไหวขององค์ประกอบไม่ทำงานเมื่อโหลดเพจ แต่เมื่อองค์ประกอบเหล่านี้เข้ามาดู นั่นคือเมื่อเพจถูกเลื่อน

ในการเชื่อมต่อไลบรารี ฉันวางไฟล์ wow.min.js ไว้ใน pgre/libs ถัดจากหน้า และเชื่อมต่อเป็นสคริปต์ js ทั่วไป นอกจากนี้ หลังจากเชื่อมต่อแล้ว จะต้องเริ่มต้นไลบรารีนี้ด้วย คุณควรเชื่อมต่อ wow.js หลังจากเชื่อมต่อ jquery นี่เป็นสิ่งจำเป็น

ใหม่ว้าว().init();

เมื่อเชื่อมต่อไลบรารีแล้ว เรามาแก้ไขโค้ดกันดีกว่า หากต้องการนำงานของ wow.js ไปใช้กับองค์ประกอบต่างๆ คุณต้องเพิ่มคลาส wow อย่างไรก็ตามคุณสามารถแทนที่คลาสแอนิเมชั่นได้ด้วย ปรากฎเช่นนี้

มุ่งหน้าไปที่หนึ่ง

มุ่งหน้าไปที่หนึ่ง

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

ไลบรารี wow.js ยังมีการตั้งค่าเพิ่มเติมอีกด้วย คุณสามารถดูได้ในเอกสารประกอบบนเว็บไซต์ของห้องสมุด ตัวอย่างเช่น คุณสามารถเพิ่มการหน่วงเวลาให้กับภาพเคลื่อนไหวได้ มันถูกตั้งค่าโดยพารามิเตอร์ html5 data-wow-delay="1s" แทนที่จะเป็น 1 วินาที คุณสามารถระบุค่าดีเลย์ของคุณเองได้ ฉันตั้งค่าการหน่วงเวลาสำหรับองค์ประกอบของส่วนแรก เพื่อให้แอนิเมชั่นของแต่ละองค์ประกอบเริ่มต้นหลังจากองค์ประกอบก่อนหน้า และนี่คือสิ่งที่เกิดขึ้น:

มุ่งหน้าไปที่หนึ่ง

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

ข้อมูลอ้างอิงสำหรับบทเรียน
ไลบรารี Animate.css:

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

ในบทความนี้ เราจะดูภาพเคลื่อนไหวและเอฟเฟกต์การเลื่อนหน้าโดยใช้ CSS และ jQuery

ก่อนที่เราจะเริ่มใช้เอฟเฟ็กต์ เรามาดูข้อมูลเบื้องต้นกันก่อน

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

เอฟเฟกต์การเลื่อนและภาพเคลื่อนไหวคืออะไร?

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

เพื่อตรวจสอบว่าผู้ใช้เลื่อนหน้าเพจหรือไม่ เราใช้เหตุการณ์ jQuery scroll()

เมื่อรู้ว่าผู้ใช้กำลังเลื่อนหน้า เราสามารถกำหนดตำแหน่งแนวตั้งของแถบเลื่อนได้โดยใช้วิธี scrollTop() ของ jQuery และใช้เอฟเฟกต์ที่ต้องการ:

$(window).scroll(function() ( if ($(this).scrollTop() > 0) ( // ใช้เอฟเฟกต์และภาพเคลื่อนไหว ) ));

พวกเขามีการปรับตัวหรือไม่?

หากเราจำเป็นต้องใช้เอฟเฟกต์การเลื่อนแบบตอบสนอง เราจำเป็นต้องกำหนดคุณสมบัติต่อไปนี้:

  • คุณสมบัติความกว้างของหน้าต่างเบราว์เซอร์
  • คุณสมบัติความสูงของหน้าต่างเบราว์เซอร์
  • หากไม่มีคุณสมบัติเหล่านี้ เอฟเฟกต์การเลื่อนของเราจะ “คงที่” และจะทำงานไม่ถูกต้องเมื่อผู้ใช้ปรับขนาดหน้าต่างในแนวตั้งหรือแนวนอน

    สามารถรับค่าเหล่านี้ได้อย่างง่ายดายโดยใช้วิธี width() และ height() ของ jQuery

    ข้อมูลโค้ดต่อไปนี้สาธิตการตรวจสอบที่จำเป็นเพื่อใช้เอฟเฟกต์การเลื่อน

    $(window).scroll(function() ( ถ้า ($(นี้).width()< 992) { if ($(this).height() 1000) { // apply effects } } } });

    ตอนนี้เรามีพื้นฐานของการเลื่อนเอฟเฟ็กต์ลงแล้ว เรามาดูการทำงานจริงผ่านตัวอย่างสี่ตัวอย่างกัน

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

    ตัวอย่างหมายเลข 1

    เอฟเฟกต์นี้จะเกิดขึ้นเมื่อตำแหน่งบนสุดของแถบเลื่อนเกิน 60px ในกรณีนี้ ข้อมูลโค้ดที่ดำเนินการจะมีลักษณะดังนี้:

    ถ้า ($(window).scrollTop() > 60) ($(".banner h2").css("display", "none"); $(".banner .info").css("display", "block"); ) else ( $(".banner h2").css("display", "block"); $(".banner .info").css("display", "none"); )

    โค้ดด้านบนซ่อนองค์ประกอบ h2 จากองค์ประกอบที่มีคลาส .banner และแสดงองค์ประกอบย่อย .info ซึ่งถูกซ่อนไว้ในตอนแรก

    รหัสนี้สามารถเขียนได้ดังนี้:

    ถ้า ($(window).scrollTop() > 60) ($(".banner h2").hide(); $(".banner .info").show(); ) else ( $(".banner h2 ").show(); $(".banner .info").hide(); )

    ตัวอย่างหมายเลข 2

    ตัวอย่างต่อไปนี้ไม่เพียงขึ้นอยู่กับตำแหน่งของแถบเลื่อนเท่านั้น แต่ยังขึ้นอยู่กับความกว้างของหน้าต่างด้วย โดยเฉพาะมีเงื่อนไขดังต่อไปนี้:

    • ความกว้างของหน้าต่างคือ 549px หรือน้อยกว่า ในกรณีนี้ ภาพเคลื่อนไหวจะเริ่มต้นเมื่อตำแหน่งของแถบเลื่อนเกิน 600px เท่านั้น
    • ความกว้างของหน้าต่างอยู่ระหว่าง 550px ถึง 991px ในกรณีนี้ ภาพเคลื่อนไหวจะเริ่มต้นเมื่อตำแหน่งของแถบเลื่อนเกิน 480px เท่านั้น
    • ความกว้างของหน้าต่างมากกว่า 991px ในกรณีนี้ ภาพเคลื่อนไหวจะเริ่มต้นเมื่อตำแหน่งของแถบเลื่อนเกิน 450px เท่านั้น

    If ($(window).width() 600) ( // ทริกเกอร์แอนิเมชั่น firstAnimation(); ) ) else if ($(window).width() > 549 && $(window).width() 480)( // ทริกเกอร์แอนิเมชั่น firstAnimation(); ) ) else ( if ($(window).scrollTop() > 450) ( // ทริกเกอร์แอนิเมชั่น firstAnimation(); ) )

    โค้ดแอนิเมชั่นที่กำลังรันอยู่มีลักษณะดังนี้:

    Var firstAnimation = function () ( $(".clients .clients-info").each(function () ( $(this).delay(500).animate(( ความทึบ: 1, ความสูง: "180", ความกว้าง: "250"), 2000); )); );

    รหัสข้างต้นเคลื่อนไหวคุณสมบัติความทึบ ความสูง และความกว้างขององค์ประกอบ .clients-info

    ตัวอย่างหมายเลข 3

    เอฟเฟกต์ที่สามไม่เพียงแต่ขึ้นอยู่กับตำแหน่งของแถบเลื่อนเท่านั้น แต่ยังขึ้นอยู่กับความกว้างของหน้าต่างด้วย โดยเฉพาะมีเงื่อนไขดังต่อไปนี้:

    • ความกว้างของหน้าต่างคือ 549px หรือน้อยกว่า ในกรณีนี้ ภาพเคลื่อนไหวจะเริ่มต้นเมื่อตำแหน่งของแถบเลื่อนเกิน 1750px เท่านั้น
    • ความกว้างของหน้าต่างอยู่ระหว่าง 550px ถึง 991px ในกรณีนี้ ภาพเคลื่อนไหวจะเริ่มต้นเมื่อตำแหน่งของแถบเลื่อนเกิน 1150px เท่านั้น
    • ความกว้างของหน้าต่างมากกว่า 991px ในกรณีนี้ ภาพเคลื่อนไหวจะเริ่มต้นเมื่อตำแหน่งของแถบเลื่อนเกิน 850px เท่านั้น

    รหัสสำหรับกรณีข้างต้นได้รับด้านล่าง:

    ถ้า ($(window).width() 1750)( SecondAnimation(); ) ) อื่นถ้า ($(window).width() > 549 && $(window).width() 1150) ( SecondAnimation(); ) ) อื่น ( if ($(window).scrollTop() > 850) ( SecondAnimation(); ) )

    โค้ดภาพเคลื่อนไหวที่ทำงานมีลักษณะดังนี้:

    Var SecondAnimation = function() ( $(".method:eq(0)").delay(1000).animate(( ความทึบ: 1 ), "slow", function() ( $(this).find("h4 ").css("สีพื้นหลัง", "#b5c3d5"); )); $(".method:eq(1)").delay(2000).animate(( ความทึบ: 1 ), "ช้า", function() ( $(this).find("h4").css("สีพื้นหลัง", "#b5c3d5"); )); $(".method:eq(2)").delay(3000) .animate(( ความทึบ: 1 ), "ช้า", function() ( $(this).find("h4").css("สีพื้นหลัง", "#b5c3d5"); )); $(". วิธีการ:eq(3)").delay(4000).animate(( ความทึบ: 1 ), "ช้า", function() ( $(this).find("h4").css("สีพื้นหลัง", "#b5c3d5"); )); );

    โค้ดข้างต้นจะเปลี่ยนคุณสมบัติความทึบของ element.method ตามลำดับ จากนั้นเปลี่ยนคุณสมบัติสีพื้นหลังขององค์ประกอบ h4 ของเด็ก

    ตัวอย่างหมายเลข 4

    เอฟเฟกต์นี้ไม่เพียงขึ้นอยู่กับตำแหน่งของแถบเลื่อนเท่านั้น แต่ยังขึ้นอยู่กับความกว้างของหน้าต่างด้วย โดยเฉพาะมีเงื่อนไขดังต่อไปนี้:

    • ความกว้างของหน้าต่างคือ 549px หรือน้อยกว่า ในกรณีนี้ ภาพเคลื่อนไหวจะเริ่มต้นเมื่อตำแหน่งของแถบเลื่อนเกิน 3500px เท่านั้น
    • ความกว้างของหน้าต่างอยู่ระหว่าง 550px ถึง 991px ในกรณีนี้ ภาพเคลื่อนไหวจะเริ่มต้นเมื่อตำแหน่งของแถบเลื่อนเกิน 2200px เท่านั้น
    • ความกว้างของหน้าต่างมากกว่า 991px ในกรณีนี้ ภาพเคลื่อนไหวจะเริ่มต้นเมื่อตำแหน่งของแถบเลื่อนเกิน 1600px เท่านั้น

    ผลลัพธ์อยู่ในรหัสต่อไปนี้:

    ถ้า ($(window).width() 3500) ( ThirdAnimation(); ) else if ($(window).width() > 549 && $(window).width() 2200) ( ThirdAnimation(); ) ) อื่น ๆ ( ถ้า ($(หน้าต่าง).scrollTop() > 1600) ( ThirdAnimation(); ) )

    รหัสภาพเคลื่อนไหวมีดังนี้:

    Var ThirdAnimation = function() ( $(".blogs").find("p").delay(1400).animate(( ความทึบ: 1, ซ้าย: 0 ), "slow"); $(".blogs" ).find("img").delay(2000).animate(( ความทึบ: 1, ขวา: 0), "slow"); $(".blogs").find("button").delay(2500) .animate((ความทึบ: 1, ด้านล่าง: 0), "ช้า"); );

    โค้ดด้านบนจะเคลื่อนไหวตามลำดับคุณสมบัติความทึบ ซ้าย ขวา และด้านล่างขององค์ประกอบปุ่ม p, img

    บทสรุป

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