日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

HTML+CSS+JS实现 ❤️canvas 3D立体图片相册幻灯片❤️

發(fā)布時(shí)間:2025/3/12 HTML 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTML+CSS+JS实现 ❤️canvas 3D立体图片相册幻灯片❤️ 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

🍅 作者主頁:Java李楊勇?

🍅 簡介:Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者🏆、Java李楊勇公號(hào)作者? ?簡歷模板、學(xué)習(xí)資料、面試題庫、技術(shù)互助【關(guān)注我,都給你】

🍅 歡迎點(diǎn)贊 👍 收藏 ?留言 📝 ??

效果演示:?文末獲取源碼?

圖片可以根據(jù)鼠標(biāo)進(jìn)行移動(dòng)查看3D效果、因上傳GIF有大小限制、所以看不全

代碼目錄:

主要代碼實(shí)現(xiàn):

CSS樣式:

html {overflow: hidden;-ms-touch-action: none;-ms-content-zooming: none;}body {position: absolute;margin: 0px;padding: 0px;background: #fff;width: 100%;height: 100%;}#canvas {position: absolute;width: 100%;height: 100%;background: #fff;}

部分JavaScript代碼 :

(function() {/* ==== definitions ==== */var diapo = [],layers = [],ctx, pointer, scr, camera, light, fps = 0,quality = [1, 2],// ---- poly constructor ----Poly = function(parent, face) {this.parent = parent;this.ctx = ctx;this.color = face.fill || false;this.points = [];if (!face.img) {// ---- create points ----for (var i = 0; i < 4; i++) {this.points[i] = new ge1doot.transform3D.Point(parent.pc.x + (face.x[i] * parent.normalZ) + (face.z[i] * parent.normalX),parent.pc.y + face.y[i],parent.pc.z + (face.x[i] * parent.normalX) + (-face.z[i] * parent.normalZ));}this.points[3].next = false;}},// ---- diapo constructor ----Diapo = function(path, img, structure) {// ---- create image ----this.img = new ge1doot.transform3D.Image(this, path + img.img, 1, {isLoaded: function(img) {img.parent.isLoaded = true;img.parent.loaded(img);}});this.visible = false;this.normalX = img.nx;this.normalZ = img.nz;// ---- point center ----this.pc = new ge1doot.transform3D.Point(img.x, img.y, img.z);// ---- target positions ----this.tx = img.x + (img.nx * Math.sqrt(camera.focalLength) * 20);this.tz = img.z - (img.nz * Math.sqrt(camera.focalLength) * 20);// ---- create polygons ----this.poly = [];for (var i = -1, p; p = structure[++i];) {layers[i] = (p.img === true ? 1 : 2);this.poly.push(new Poly(this, p));}},// ---- init section ----init = function(json) {// draw poly primitivePoly.prototype.drawPoly = ge1doot.transform3D.drawPoly;// ---- init screen ----scr = new ge1doot.Screen({container: "canvas"});ctx = scr.ctx;scr.resize();// ---- init pointer ----pointer = new ge1doot.Pointer({tap: function() {if (camera.over) {if (camera.over === camera.target.elem) {// ---- return to the center ----camera.target.x = 0;camera.target.z = 0;camera.target.elem = false;} else {// ---- goto diapo ----camera.target.elem = camera.over;camera.target.x = camera.over.tx;camera.target.z = camera.over.tz;// ---- adapt tesselation level to distance ----for (var i = 0, d; d = diapo[i++];) {var dx = camera.target.x - d.pc.x;var dz = camera.target.z - d.pc.z;var dist = Math.sqrt(dx * dx + dz * dz);var lev = (dist > 1500) ? quality[0] : quality[1];d.img.setLevel(lev);}}}}});

上面的圖片和js文件需要引入?

源碼獲取

大家可以點(diǎn)贊、收藏、關(guān)注、評(píng)論我啦 、查看博主主頁或下方微信公眾號(hào)獲取~!

打卡 文章 更新?44??/? 100天

精彩推薦更新中:

HTML5大作業(yè)實(shí)戰(zhàn)案例《100套》

Java畢設(shè)項(xiàng)目精品實(shí)戰(zhàn)案例《100套》

總結(jié)

以上是生活随笔為你收集整理的HTML+CSS+JS实现 ❤️canvas 3D立体图片相册幻灯片❤️的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。