繼一次的3D魔方以後,此次帶你一塊兒玩轉性感美女秀,正常套路,請先一堵爲快,有興趣繼續,沒興趣也能夠看看美女養眼哦🤪!想直接在線預覽 👈javascript
看過上次的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
做者:蘇南 - 首席填坑官前端
來源:@IT·平頭哥聯盟java
連接:blog.csdn.net/weixin_4325…css3
交流:91259409五、公衆號:
honeyBadger8
git本文原創,著做權歸做者全部。商業轉載請聯繫
@IT·平頭哥聯盟
得到受權,非商業轉載請註明原連接及出處。github