使用html+css+js实现3D相册的详细代码

发布时间:2020-04-17 11:49:06

来源:亿速云

阅读:500

作者:小新

今天小编给大家分享的是使用html+css+js实现3D相册的详细代码,很多人都不太了解,今天小编为了让大家更加了解html+css+js实现3D相册的详细代码,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。

效果图:

代码如下,复制即可用:

Title

html,

body {

margin: 0;

padding: 0;

background-color: #29454d;

/*禁止文字被选中*/

-moz-user-select: none;

/*火狐*/

-webkit-user-select: none;

/*webkit浏览器*/

-ms-user-select: none;

/*IE10*/

-khtml-user-select: none;

/*早期浏览器*/

user-select: none;

overflow: hidden;

}

.box {

position: relative;

height: 500px;

width: 500px;

margin: 100px auto;

transform-style: preserve-3d;

perspective: 2000px;

}

.di {

position: absolute;

left: 50%;

top: 50%;

height: 200px;

width: 200px;

transform: translate(-50%, -50%) rotatex(90deg);

transform-style: preserve-3d;

}

.z {

position: relative;

height: 200px;

width: 200px;

border-radius: 50%;

transform-style: preserve-3d;

/*transform: rotatez(1deg);*/

}

p {

margin: 0;

position: absolute;

top: 0;

/*为了保证圆心在父盒子中心,父盒子旋转时圆心稳定,所以设置left*/

left: 25px;

height: 200px;

width: 150px;

border: 2px solid #fd7068;

box-sizing: border-box;

background-color: #ffffff;

background-size: cover;

background-position: center;

background-repeat: no-repeat;

/*opacity: .7;*/

font-size: 10px;

line-height: 200px;

text-align: center;

/*box-shadow: 0 0 100px #16ff8b;*/

/*倒影,不兼容*/

-webkit-box-reflect: below 10px -webkit-linear-gradient(top, rgba(250, 250, 250, 0), rgba(250, 250, 250, .0) 30%, rgba(250, 250, 250, 0.5));

box-reflect: below 10px -webkit-linear-gradient(top, rgba(250, 250, 250, 0), rgba(250, 250, 250, .0) 30%, rgba(250, 250, 250, 0.5));

/*backface-visibility: hidden;*/

}

可以拖拽图片文件进来

可以拖拽图片文件进来

可以拖拽图片文件进来

可以拖拽图片文件进来

可以拖拽图片文件进来

可以拖拽图片文件进来

可以拖拽图片文件进来

可以拖拽图片文件进来

可以拖拽图片文件进来

可以拖拽图片文件进来

可以拖拽图片文件进来

可以拖拽图片文件进来

window.onload = function () {

setPs();

move();

drop();

}

//给每个p标签设置位置

function setPs() {

var ps = document.getElementsByTagName('p');

for (var i = 0; i < ps.length; i++) {

ps[i].style.transform = 'rotatex(-90deg) rotatey(' + i * 30 + 'deg) translatez(400px)'

}

}

//鼠标拖动旋转

function move() {

var zBox = document.querySelector('.z');

var xBox = document.querySelector('.di');

//声明计算鼠标移动速度用的变量

var speedTimer = null;

var speedX = 0;

var speedY = 0;

//声明记录旋转角度的两个变量

var xDegNow = 90;

var zDegNow = 0;

//声明变量记录要旋转的角度

var xDegDistance = 0;

var zDegDistance = 0;

//声明变量记录是否发生鼠标移动事件

var isMove = false;

window.onmousedown = function (e) {

//鼠标按下

//清除过渡属性

xBox.style.transition = '';

zBox.style.transition = '';

//记录按下的坐标以及计算速度的初始坐标

var xstart = e.clientX;

var speedX_start = xstart;

var ystart = e.clientY;

var speedY_start = ystart;

//记录用来计算速度的初始时间

var tstart = new Date().getTime();

var tnow = tstart;

//设置计时器更新计算速度的当时时间

speedTimer = setInterval(function () {

tnow = new Date().getTime();

},10)

window.onmousemove = function (e) {

//鼠标移动

isMove = true;

//记录当时的坐标计算距离

var xnow = e.clientX;

var ynow = e.clientY;

var xDistance = xnow - xstart;

var yDistance = ynow - ystart;

//如果计时超过一定时间(10毫秒),计算速度

if (tnow - tstart >= 10) {

//速度=(现在的坐标-初始坐标)/(现在时间-初始时间)

speedX = (xnow - speedX_start) / (tnow - tstart);

speedY = (ynow - speedY_start) / (tnow - tstart);

//让初始时间和坐标等于现在的时间和坐标

tstart = tnow;

speedX_start = xnow;

speedY_start = ynow;

}

//把鼠标移动距离计算成角度后设置到页面上

zDegDistance = zDegNow - (xDistance / 10);

zBox.style.transform = 'rotatez(' + zDegDistance + 'deg)';

xDegDistance = xDegNow - (yDistance / 10);

xDegDistance = xDegDistance > 179 ? 179 : xDegDistance < 1 ? 1 : xDegDistance;

xBox.style.transform = 'translate(-50%,-50%) rotatex(' + xDegDistance + 'deg)';

};

};

window.onmouseup = function (e) {

//鼠标松开

//清除计时器 清除鼠标移动事件

clearTimeout(speedTimer);

window.onmousemove = null;

//判断如果发生移动

if (isMove) {

//添加过渡属性

xBox.style.transition = 'all 0.5s ease-out';

zBox.style.transition = 'all 0.5s ease-out';

//根据速度计算目标角度,设置到页面上

zDegDistance = zDegDistance - (speedX * 10);

zBox.style.transform = 'rotatez(' + zDegDistance + 'deg)';

xDegDistance = xDegDistance - (speedY * 10);

xDegDistance = xDegDistance > 179 ? 179 : xDegDistance < 1 ? 1 : xDegDistance;

xBox.style.transform = 'translate(-50%,-50%) rotatex(' + xDegDistance + 'deg)';

//记录当前角度的值更新

xDegNow = xDegDistance;

zDegNow = zDegDistance;

//用到的变量重置

isMove = false;

speedX = 0;

speedY = 0;

xDegDistance = 0;

zDegDistance = 0;

}

};

}

//鼠标拖拽文件

function drop() {

//取消鼠标拖拽文件进入窗口的默认行为

window.ondragover = function (e) {

e.preventDefault();

}

window.ondrop = function (e) {

e.preventDefault();

}

//添加拖拽到p标签的事件

var ps = document.getElementsByTagName('p');

for (var i = 0; i < ps.length; i++) {

ps[i].index = i;

ps[i].ondrop = function (e) {

var w = new FileReader();

w.index = this.index;

w.readAsDataURL(e.dataTransfer.files[0]);

w.onload = function () {

ps[this.index].style.backgroundImage = 'url(' + w.result + ')';

ps[this.index].innerHTML = '';

}

}

}

}

以上就是使用html+css+js实现3D相册的详细代码的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注亿速云行业资讯频道哦!

html主题相册代码,使用html+css+js实现3D相册的详细代码相关推荐

  1. html js相册样式,使用html+css+js实现3D相册

    Title html, body { margin: 0; padding: 0; background-color: #29454d; /*禁止文字被选中*/ -moz-user-select: n ...

  2. 使用html+css+js实现3D相册

    使用html+css+js实现3D相册,快来上传的照片吧 效果图: 代码如下,复制即可用: <!DOCTYPE html> <html lang="en"> ...

  3. html旋转代码_用CSS实现一个抽奖转盘(附详细代码+思路)

    原文:https://www.cnblogs.com/wenruo/p/9732704.html 先上效果 基本是用CSS实现的,没有用图片,加一丢丢JS.不过没有考虑太多兼容性. 首先画一个转盘 & ...

  4. 解惑:如何使用html+css+js实现旋转相册,立方体相册等动画效果

    解惑:如何使用html+css+js实现旋转相册,立方体相册等动画效果 一.前言 最初还是在抖音上看到可以使用简单地代码实现炫酷的网页效果的,但是想要找到可以运行的代码还是比较困难的,最近突然想起就在 ...

  5. CSS+JS灰色树型菜单导航代码

    代码简介: CSS+JS打造的树型菜单,没有怎么美化,颜色看上去也不很美,提供一种思路,真想用的朋友好好修改一下颜色,里面都有注释,相信通过你的努力,它最终的效果一定很漂亮. 代码内容: <!D ...

  6. 超炫html+css+javascript幻化3D相册 (含背景音乐)程序员表白必备 _520_七夕情人节

    ❉ 超炫html+css+javascript幻化3D相册 (含背景音乐)程序员表白必备 _520_七夕情人节 一年一度的/520情人节/七夕情人节/生日礼物/告白师妹/程序员表白,是不是要给女朋友或 ...

  7. 用html实现抽奖大转盘,【项目实战】用CSS实现一个抽奖转盘(附详细代码+思路)...

    原标题:[项目实战]用CSS实现一个抽奖转盘(附详细代码+思路) 效果 基本是用CSS实现的,没有用图片,加一丢丢JS. 完全没有考虑兼容性. 首先画一个转盘 < htmllang= " ...

  8. HTML5七夕情人节表白网页_圣诞节3d相册(含音乐)_HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册 js烟花代码

    HTML5七夕情人节表白网页❤圣诞节3d相册(不含音乐开关)❤ HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册 js烟花代码 css ...

  9. Html+css+js实现放大镜功能(详细完整代码)

    通过将鼠标指向指定的图片,将鼠标移动到图片时,显示一个透明的小区域,然后将小区域的部分放大,查看细节. 运行效果:  详细代码: <!DOCTYPE html> <html>& ...

  10. HTML+CSS+JS实现 ❤️3D网状球体动画特效❤️

    效果演示: 代码目录: 主要代码实现: CSS样式: @property --color-position {syntax: '<length-percentage>';inherits: ...

最新文章

  1. 通过小故事,了解多一点何谓 Node 高性能
  2. 同步机制之 ReentrantLock
  3. 机器学习中的数学:一份新鲜出炉的热门草稿
  4. CH 5102Mobile Service题解
  5. 海南大学计算机原理,海南大学微机原理课件 第一章 计算机基础知识
  6. 基于javaweb(springboot+mybatis)网站建设服务管理系统设计和实现以及文档报告设计
  7. 智己汽车——比智能车更豪华,比豪华车更智能
  8. python对应的岗位_隐式相对导入如何在Python中工作?
  9. 【转】VO BO PO 介绍
  10. python socket connect 阻塞_python – 如何获得非阻塞socket connect()?
  11. android 图片处理器-包括反转、浮雕、锐化、轮廓提取功能
  12. 光电LED玻璃屏成商显新势力 优势颠覆传统LED灯条屏
  13. 利用华为DTM将事件发送到Firebase
  14. MATLAB变声器程序
  15. 阿里轻量应用服务器搭建ftp服务器
  16. 新版Android Studio Logcat view使用简明教程
  17. 谷粒商城-高级篇-Day11-商城业务
  18. 【UWB 定位】高精度定位
  19. jQuery实现点击链接显示和隐藏二维码
  20. 说说QQ校友与校内网的优势

热门文章

  1. 安卓12解除进程限制的第三种方式:黑阈
  2. 《代码整洁之道》精读与演绎----毛星云
  3. plc和c语言和cnc,cnc数控编程和plc编程哪个难学
  4. 灵格斯与word2007或2010冲突,复制时word关闭问题的解决
  5. epoll原理详解及epoll反应堆模型
  6. Unity3D游戏开发中相见恨晚的动画插件
  7. 小米安装linux驱动怎么安装教程,小米手机驱动程序怎么安装教程【图文版】
  8. 业务安全(逻辑漏洞)
  9. 微信小程序 首页弹出用户协议
  10. PyCharm快捷键