背景:前端的設計效果,越來越酷,而這些酷炫的效果,利用css3的動畫效果和js就可以實現,簡單的程式碼就能實現非常酷的效果。原理:
利用js監控scrollTop的位置,透過top定位圖片的位置,實現視差的滾動;滾動到目標位置時,透過css3的animation屬性,實現抖動效果。
相關素材照片:
style部分:
<style> .index-module--nftBox--3H_AP { height: 200vh; background-repeat: no-repeat; background-size: cover; background-position: 50%; width: 100%; } .index-module--moto--3sEm1 { position: absolute; left: 0; top: -400px; /*汽車模型初始化位置定點*/ background-image: url(https://resource.nreal.cn/web/images/home/motuo.png);/*汽車圖片*/ transition: .5s; -webkit-transform: translate(0); transform: translate(0); } .index-module--moto--3sEm1.is-active{ /*汽車模型的抖動效果*/ animation: jump .1s ease-in-out 5 alternate; } @keyframes jump {/*汽車模型的抖動效果*/ 從 { top: -30px; } to { top: 6px } } .index-module--moto--3sEm1, .index-module--nftBox--3H_AP { height: 200vh; background-repeat: no-repeat; background-size: cover; background-position: 50%; width: 100%; } .index-module--title--rSrVs { opacity: 1; width: 80%; margin: 0 auto; } .index-module--titleBox--1VS2L { height: 50vh; display: flex; justify-content: center; align-items: center; position: absolute; top: 0; left: 50%; -webkit-transform: translate(-50%); transform: translate(-50%); } .hoZaHW { animation-name: ewofWB; animation-duration: 300ms; animation-iteration-count: infinite; transform-origin: center center; animation-play-state: running; } /* @keyframes ewofWB { 0% { left:0px; top:0px;} 25% { left:200px; top:0px;} 50% { left:200px; top:200px;} 75% { left:0px; top:200px;} 100% { left:0px; top:0px;} } */ .index-module--nftTitle--20OyY { width: 100%; max-width: 800px; } .index-module--duang--5jpDr { -webkit-animation: index-module--circleP--3P-V7 1.3s; animation: index-module--circleP--3P-V7 1.3s; -webkit-transform: translateY(400px); transform: translateY(400px); } .index-module--moto--3sEm1 { position: absolute; left: 0; -webkit-transform: translate(0); transform: translate(0); } </style>
html部分:
<div id="layout-container" class="content"> <div class="index-module--nftBox--3H_AP" style="background-image:url(https://resource.nreal.cn/web/images/home/motuobg.jpg)"> <div class="index-module--nftBox--3H_AP"></div> <div class="index-module--moto--3sEm1" id="scrollup"></div> <div class="index-module--title--rSrVs index-module--titleBox--1VS2L"> <div dur="300" class="sc-bdVaJa hoZaHW"> <img src="https://resource.nreal.cn/web/images/home/title.png" class="index-module--nftTitle--20OyY"> </div> </div> </div> </div>
js部分:
<script type="text/javascript"> window.onscroll= function(){ //變數t是滾動條滾動時,距離頂部的距離var t = document.documentElement.scrollTop||document.body.scrollTop; var scrollup = document.getElementById('scrollup'); //當捲動到距離頂部200px時if(t>=200){ scrollup.style.backgroundImage="url(https://resource.nreal.cn/web/images/home/motuo.png)"; scrollup.style.top=6+"px"; if(scrollup.style.top == '6px'){ document.getElementById("scrollup").classList.add("is-active") } }else{//恢復正常scrollup.style.backgroundImage="url(https://resource.nreal.cn/web/images/home/motuo.png)"; scrollup.style.top=-400+"px"; document.getElementById("scrollup").classList.remove("is-active") } } </script>
到這篇關於利用CSS實現視差滾動和抖動效果的文章就介紹到這了,更多相關css視差滾動內容請搜索downcodes.com以前的文章或繼續瀏覽下面的相關文章,希望大家以後多多支持downcodes .com!