繼一次的3D魔方以後,此次帶你一塊兒玩轉性感美女秀,正常套路,請先一堵爲快,有興趣繼續,沒興趣也能夠看看美女養眼哦🤪!想直接在線預覽 👈javascript
各位大佬早安,這裏是 @IT·平頭哥聯盟,我是 首席填坑官∙蘇南,用心分享 作有溫度的攻城獅。
公衆號:honeyBadger8
,羣:912594095
看過上次的3D魔方
的同窗對於本次的分析會有必定的幫助,固然若是大佬您自己就對css3
就已經玩的很666了,那麼對於下文的分解就請扮演老師
的角色吧,小弟若有不足之處,歡迎斧正。css
colNode(){ //生成列的節點 for (var i=0;i<this.colLen;i++){ let iDivCol = document.createElement('div'); //列 iDivCol.className = "div-col"; iDivCol.style.width = this.colW+'px'; iDivCol.style.height = this.cubeH+'px'; iDivCol.style.zIndex = (i>this.colLen/2?this.colLen-i:i); this.swiperEle.appendChild(iDivCol); } }
立體魔方
,它們都是相互獨立的,//——[正、上、左、右] for(var i = 0;i<4;i++){ let dividingLine = i<2; let span = document.createElement('span'); span.className = `${dividingLine?'bg-img':'pure-color'} i${i}`; span.style.width = `${dividingLine? this.colW:this.cubeH}px`; span.style.height = this.cubeH+'px'; if(dividingLine){ span.style.backgroundPosition = `-${index*this.colW}px 0`; }; iDivCol.appendChild(span); };
zIndex
,須要注意一下,層級的調整,能夠覆蓋立體透視形成的影響,/*四個面的樣式*/ ...省略N行 .div-col span.i1{ /*top*/ transform-origin:top; transform:translateZ(-360px) rotateX(90deg); } .div-col span.i2{ /*left*/ transform-origin: left; transform: rotateY(90deg); } .div-col span.i3{ /*right*/ transform-origin:left; transform:translateX(25px) rotateY(90deg); }
div-col
]來進行旋轉便可,transform-origin:50% 50% -180px
,即設置旋轉的中心點:setTimeout
,得以達到緩衝的視差,requestAnimationFrame
就該它出場了,setInterval
已經成爲過去式,...省略N行 swiperAnimate(){ const _requestAnimationFrame_ = window.requestAnimationFrame||window.WebkitRequestAnimationFrame; const iDivCol = this.swiperEle.querySelectorAll(".div-col"); for(var i=0;i<iDivCol.length;i++){ //讓動畫更逼真,給個過渡,固然也能夠調整,requestAnimationFrame每次遞增的值, iDivCol[i].style.WebkitTransition=`.8s -webkit-transform ease`; iDivCol[i].style.WebkitTransformOrigin=iDivCol[i].style.transformOrigin = "50% 50% -180px"; this.animateMove(iDivCol[i],i,_requestAnimationFrame_); } } animateMove(Col,index,animationFrame){ let ColNum =0; let spanSurface = Col.querySelectorAll("span"); //即將旋轉到的面,展現的圖片 spanSurface[1].style.backgroundImage="url(./2.jpg)"; setTimeout(()=>{ //每列進行一個延時,以達到緩衝效果 this.rotate(Col,0,spanSurface,animationFrame); },index*this.delayMilli); } ...省略N行
pageDown(){ if(this.status){ console.log("下翻,不能點擊") return ; }; this.status = 1; this.pageNum = this.pageNum>=this.imageList.length ? 1 :++this.pageNum; this.swiperAnimate(); }
preloadingImage(){ this.imageList.map((k,v)=>{ let imgNode = new Image(); imgNode.onerror=err=>{ this.imageList.splice(v,1); } imgNode.src = k; }); }
一個效果實現的方式有不少種,好比咱們能夠設置6個面,每設置一次,都是展現一張圖,這樣就不用每次旋轉完後又去重置圖片、角度等問題,包括requestAnimationFrame
動畫切換的過渡過程,也應該有更好的方式,新手上路中,歡迎各位大佬指點。以上就是今天爲您帶來的分享,你GET到了嗎?若是以爲不錯,記得給個贊哦,想第一時間得到最新分享,歡迎掃碼關注個人我的公衆號
:honeyBadger8,👇!html
如何用CSS3畫出懂你的3D魔方?
SVG Sprites Icon的使用技巧
immutability因React官方出鏡之使用總結分享!
小程序項目之又一填坑小記
作完小程序項目、老闆給我加了6k薪資~
面試踩過的坑,都在這裏了~
你應該作的前端性能優化之總結大全!
如何給localStorage設置一個過時時間?
手把手教你如何繪製一輛會跑車前端
做者:蘇南 - 首席填坑官來源:@IT·平頭哥聯盟java
連接:https://blog.csdn.net/weixin_...css3
交流:91259409五、公衆號:
honeyBadger8
git本文原創,著做權歸做者全部。商業轉載請聯繫
@IT·平頭哥聯盟
得到受權,非商業轉載請註明原連接及出處。github