js實(shí)現(xiàn)3D旋轉(zhuǎn)相冊(cè)
本文實(shí)例為大家分享了js實(shí)現(xiàn)3D旋轉(zhuǎn)相冊(cè)的具體代碼,供大家參考,具體內(nèi)容如下
效果展示:
使用圖片:
剩余自己隨意 圖片大小為133*200
代碼展示:
<!DOCTYPE html><!--設(shè)置圖片的拖拽事件 不可用--><html lang='en' ondragstart='return false'><head> <meta charset='UTF-8'> <title>3D效果</title> <style> * { background-color: #000; } .container { border: 1px solid yellow; perspective: 800px; overflow: hidden; } .box { position: relative; border: 1px solid #f00; width: 133px; height: 200px; margin: 300px auto; transform-style: preserve-3d; transform:rotateX(-20deg) rotateY(0deg); } img { position: absolute; /*設(shè)置圖片倒影效果*/ -webkit-box-reflect:below 5px -webkit-gradient(linear,left top, left bottom,from( transparent),color-stop(40%,transparent),to(rgba(250,250,250,0.4))); } </style></head><body><div class='container'> <div class='box'> <img src='http://m.lshqa.cn/bcjs/img/1.jpg' alt=''> <img src='http://m.lshqa.cn/bcjs/img/2.jpg' alt=''> <img src='http://m.lshqa.cn/bcjs/img/3.jpg' alt=''> <img src='http://m.lshqa.cn/bcjs/img/4.jpg' alt=''> <img src='http://m.lshqa.cn/bcjs/img/5.jpg' alt=''> <img src='http://m.lshqa.cn/bcjs/img/6.jpg' alt=''> <img src='http://m.lshqa.cn/bcjs/img/7.jpg' alt=''> <img src='http://m.lshqa.cn/bcjs/img/8.jpg' alt=''> <img src='http://m.lshqa.cn/bcjs/img/9.jpg' alt=''> <img src='http://m.lshqa.cn/bcjs/img/10.jpg' alt=''> <img src='http://m.lshqa.cn/bcjs/img/11.jpg' alt=''> </div></div> <script> // a 獲取所有 img 元素 var mimg = document.querySelectorAll('img'); var mlength = mimg.length; // 動(dòng)態(tài)獲取 圖片的旋轉(zhuǎn)角度 var mdeg = 360/mlength; //獲取box 容器 var mbox = document.querySelector('.box'); /*頁(yè)面加載后執(zhí)行。。效果*/ window.onload= function () { // 1 圖片旋轉(zhuǎn)動(dòng)畫 for(var i = 0;i<mlength;i++){ // console.log(mimg); //每張圖片 1 60 2 120 3 180 4 240 60為圖片的平分角 mimg[i].style.transform = 'rotateY('+(mdeg*i)+'deg) translateZ(350px)'; // 添加過(guò)渡效果 動(dòng)畫執(zhí)行多長(zhǎng)時(shí)間 多久后開(kāi)始執(zhí)行動(dòng)畫 此時(shí)的效果 從最后一張開(kāi)始動(dòng)畫 // console.log(mlength-i); mimg[i].style.transition = '1s '+(mlength-i)*0.1+'s'; // 0.1 動(dòng)畫調(diào)節(jié) //從第一張開(kāi)始動(dòng)畫 // mimg[i].style.transition = '1s '+i+'s'; } // 獲取鼠標(biāo)點(diǎn)的位置 獲取 差值 改變 轉(zhuǎn)換的rotate: x y var newX,newY,lastX,lastY,cvalueX,cvalueY, rotX=-20,rotY=0; // 鼠標(biāo)滑動(dòng)后改變效果 (使用鼠標(biāo) 按下 替換點(diǎn)擊事件) document.onmousedown = function (e) { // 鼠標(biāo)點(diǎn)擊 // console.log('點(diǎn)擊'); lastX = e.clientX; lastY = e.clientY; // 鼠標(biāo)移動(dòng) this.onmousemove = function (e) { // console.log('移動(dòng)'); newX = e.clientX; newY = e.clientY; console.log(newX +' '+newY); //獲取移動(dòng)的差值 cvalueX = newX-lastX; cvalueY = newY-lastY; //獲取旋轉(zhuǎn)的角度 rotX -= cvalueY; /*因?yàn)橐蚯斑\(yùn)動(dòng)所以是負(fù)值*/ rotY += cvalueX; // 將角度添加上 img容器 mbox.style.transform = 'rotateX('+rotX*0.1+'deg) rotateY('+rotY*0.1+'deg)' // 差值太大(轉(zhuǎn)動(dòng)太快) 調(diào)節(jié)每次的差值是和上一次差 而不是之前差(初始值的差) lastX = newX; lastY = newY; } // 鼠標(biāo)抬起 this.onmouseup = function () { // console.log('抬起'); // 要停止移動(dòng)的方法 this.onmousemove = null; } } } </script></body></html>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 不要在HTML中濫用div2. Vue3使用JSX的方法實(shí)例(筆記自用)3. 使用css實(shí)現(xiàn)全兼容tooltip提示框4. CSS代碼檢查工具stylelint的使用方法詳解5. vue實(shí)現(xiàn)將自己網(wǎng)站(h5鏈接)分享到微信中形成小卡片的超詳細(xì)教程6. 詳解CSS偽元素的妙用單標(biāo)簽之美7. html清除浮動(dòng)的6種方法示例8. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)9. JavaScript數(shù)據(jù)類型對(duì)函數(shù)式編程的影響示例解析10. 利用CSS3新特性創(chuàng)建透明邊框三角
