html5中引入3d模型的方法是借助第三方PlayCanvas插件來完成的。
成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務商,為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)服務,網(wǎng)站設(shè)計,網(wǎng)站托管維護等一站式綜合服務型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對手中脫穎而出成都創(chuàng)新互聯(lián)。
比如可以用以下方法實現(xiàn)圖片的360度旋轉(zhuǎn):
代碼示例:
var render, loop, t, dt, //定義變量
DEG2RAD = Math.PI / 180, //角度轉(zhuǎn)弧度
cvs = document.querySelector('canvas'), //創(chuàng)建canvas
ctx = cvs.getContext('2d'),//繪制2d圖形上下文
teddy = new Image(), //創(chuàng)建圖像
heart = new Image(), //創(chuàng)建圖像中心
angle = 0,//初始化角度為0
reqAnimFrame =
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.msRequestAnimationFrame ||
window.oRequestAnimationFrame;
//創(chuàng)建動畫幀
cvs.width = 400;
cvs.height = 200;
teddy.src = 'xxx.jpg';
heart.src = 'yyy.jpg';
//開始渲染
render = function (timestamp) {
dt = timestamp - t;
t = timestamp;
// cavas設(shè)置為白色
ctx.fillStyle = "rgb(255,255,255)";
ctx.fillRect(0, 0, cvs.width, cvs.height);
// 繪制中心
ctx.drawImage(heart, -20, -120);
// 繪制teddy
ctx.save();
ctx.translate(cvs.width/2, cvs.height/2); // 移動鼠標到畫布中心
ctx.rotate(DEG2RAD * angle); // 旋轉(zhuǎn)畫布
ctx.drawImage(teddy, -teddy.width/2, -teddy.height/2); // 繪制中心圖片
angle += dt / 16.67 * 6; // increment angle ~ 360 deg/sec
ctx.restore();
};
loop = function (timestamp) {
reqAnimFrame(loop);
render(timestamp);
};
t = Date.now();
loop(t);
1、首先打開html文件編輯器,這里使用vscode新建一個html文檔,文檔中寫入基本的html結(jié)構(gòu),然后插入img標簽并插入一張圖片,給img一個class屬性:
2、然后在上方的head標簽中的style標簽設(shè)置樣式,這里設(shè)置圖片的寬度和高度并設(shè)置相對定位,然后設(shè)置圖片的鼠標懸浮樣式,其中設(shè)置動畫的形式為3d以及設(shè)置圖片3d旋轉(zhuǎn)偏移的角度,添加一個動畫,設(shè)置好延時即可:
3、最后打開瀏覽器,就會看到一個圖片:
4、當鼠標移動上去,圖片就會自動3d旋轉(zhuǎn)了:
!doctype html
html
head
meta charset="utf-8"
title旋轉(zhuǎn)/title
style
* {margin:0; padding:0; border:0;}
div {width:200px; height:200px; margin-left:100px; margin-top:-100px;}
img {width:200px; height:200px; border-radius:100px; animation:myfirst 5s linear infinite; -webkit-animation:myfirst 5s linear infinite; animation-play-state:running; -webkit-animation-play-state:running;}
img:hover {animation-play-state:paused; -webkit-animation-play-state:paused;}
@keyframes myfirst {0% {transform:rotate(0deg);} 100% {transform:rotate(360deg);}}
@-webkit-keyframes myfirst {0% {transform:rotate(0deg);} 100% {transform:rotate(360deg);}}
/style
/head
body
p style="margin-top:100px"/p
divimg src="163146_vN8g_574908.jpg"/div
/body
/html
需要的圖片
touchmove這個方法
然后用e.touches[0],e.touches[1]... 來判斷不同的點,自己寫點小算法就搞定了
可以使用css3中的rotate實現(xiàn)
實際的旋轉(zhuǎn)效果是這樣:
rotate中的 60deg 表示按最原始的位置,順時針旋轉(zhuǎn)60°
w3school 里面有更詳細用法,可以2D旋轉(zhuǎn)、3D旋轉(zhuǎn)
可以參考:網(wǎng)頁鏈接
動畫效果可以通過js改變rotate中傳入的值來實現(xiàn)