问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

html5 3d旋转相册代码怎么用

发布网友 发布时间:2022-04-21 12:15

我来回答

2个回答

懂视网 时间:2022-04-07 10:22

使用html+css+js实现3D相册,快来上传的照片吧

推荐:《js基础教程》

效果图:

a7362b45aade7d05d79ba6654dbc601.png

代码如下,复制即可用:

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <style>
 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;*/
 }
 </style>
</head>

<body>
<div>
 <div>
 <div>
  <p>可以拖拽图片文件进来</p>
  <p>可以拖拽图片文件进来</p>
  <p>可以拖拽图片文件进来</p>
  <p>可以拖拽图片文件进来</p>
  <p>可以拖拽图片文件进来</p>
  <p>可以拖拽图片文件进来</p>
  <p>可以拖拽图片文件进来</p>
  <p>可以拖拽图片文件进来</p>
  <p>可以拖拽图片文件进来</p>
  <p>可以拖拽图片文件进来</p>
  <p>可以拖拽图片文件进来</p>
  <p>可以拖拽图片文件进来</p>
 </div>
 </div>
</div>
<script>
 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 = '';
  }
  }
 }
 }
</script>
</body>
</html>

热心网友 时间:2022-04-07 07:30

以下是代码:
<!DOCTYPE html>
<html>
<head>
<title>transform-style实现Div的3D旋转-柯乐义</title>
<style>
*{font-size: 24px;color: #00ff00; padding:0; margin:0;}
#container {
position: relative;
height: 300px;
width: 300px;
-webkit-perspective: 500;
margin-top: 200px;
margin-right: auto;
margin-left: auto;
}
#parent-keleyi-com {
margin: 10px;
width: 280px;
height: 280px;
background-color: #666;
opacity: 0.3;
-webkit-transform-style: preserve-3d;
-webkit-animation: spin 15s infinite linear;
}
#parent-keleyi-com > div {
position: absolute;
top: 40px;
left: 40px;
width: 280px;
height: 200px;
padding: 10px;
-webkit-box-sizing: border-box;
}
#parent-keleyi-com > :first-child {
background-color: #000;
-webkit-transform: translateZ(-100px) rotateY(45deg);
}
#parent-keleyi-com > :last-child {
background-color: #333;
-webkit-transform: translateZ(50px) rotateX(20deg);
-webkit-transform-origin: 50% top;
}
/*执行Y轴旋转360度动画*/
@-webkit-keyframes spin {
from {-webkit-transform: rotateY(0);}
to {-webkit-transform: rotateY(360deg);}
}
</style>
</head>
<body>
<div>请使用支持CSS3的浏览器<a href="http://keleyi.com/a/bjad/s89uo4t1.htm" target="_blank">原文</a></div>
<div id="container">
<div id="parent-keleyi-com">
<div><a href="/">柯乐义</a></div>
<div><a href="/">keleyi.com</a></div>
</div>
</div>
</body>
</html>
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 交互设计的“根”——七大定律 交互设计原则和理论2——七大定律 七大设计原则 附近的加油站有哪些 附近的加油站有哪些地方 css3中控制3d效果旋转的速度用什么属性 css3 3D转换简写 transform: rotate3d(0,0,1,-5deg) css3 中怎样实现div的2d,3d旋转? CSS3 3d旋转 rotate的问题 css3的3d旋转为什么会导致元素变大? 下载谷歌服务助手之后说“很抱歉,当前设备不支持”该怎么办? 大清铜币鄂字版值钱吗 一枚大清铜币鄂字户部十文真实价格能值多少钱 大清铜币户部十文的中间鄂字丙午的值多少钱 请问我这枚鄂字板大清铜币值钱吗? 大清铜币鄂字板户部十文值多少钱? 大请铜币户部丙午中心鄂光绪年造当十文铜钱值多少钱? 大清铜币 中心鄂字 当制钱五文值多少 大清铜币鄂字十当值多少钱 大清铜币,中间鄂字,户部十文,值多少钱? 用“我有”如何造句? 大清铜币户部造中心、鄂字值多少人民币 大清铜币版估价鄂字大清铜币十文钱现在值多少钱? 光绪年间的大清铜币值多少钱?中间有个鄂字 大清铜币中间是鄂字多少钱 404 Not Found webgl和css3的3d有什么不同 华为Mate30Pro用不了谷歌应用是什么原因? 比特币为什么一夜暴涨 比特币价格再刷新高逼近10000元大关是怎么回事? bsw与bsv有关系吗 三协会重申虚拟币交易涉嫌犯罪,比特币大跌的背后释放出了什么信号? 火币网提币要多少工作日才能审核成功? 比特币等加密货币出现崩盘式行情,比特币这是大势已去了吗? 比特币重返58000美元,投资者的心态如何? 币圈轮回饶过谁 比特币提醒器哪个好 微牛能买比特币吗 交易所的比特币最新价是指一枚最新价吗? 比特币页面不动了,怎么样才能动起来 比特币会风银行卡号吗 朋友间买卖比特币违法吗 《经济学家眼中的数字货币》pdf下载在线阅读全文,求百度网盘云资源 当你向朋友转了两个比特币,在交易的过程中你提供了哪些信息给矿工 华谷无法激活谷歌服务助手