全网整合营销服务商

营销型网站+SEO优化+关键词快排=一站式服务

免费咨询热线:15959292472

[重庆好的seo公司]如何使用html+css+js实现3D相册

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

  推荐▼▲●:《js基础教程》

   效果图●•:

   代码如下,前端学习复制即可用●◆■=:

  

<!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'□●;
 //根据速度计算目标角度,[重庆好的seo公司]设置到页面上
 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>

 

  以上就是如何使用html+css+js实现3D相册的详细内容★■,html教程06 2020.10 [嘉峪关seo公司选择久澳]CSS3实现各种表情(代码示例) CSS3实现各种表情 效果图: 代码如下,复制即可使用: !DOCTYPE html▼▪;htmlhead title/title▷△▼-; style type=text/css body { text-align: center☆▽◇; margin☆◁: 80px auto 0; font-family: ☆☆;Lucida Sans更多请关注久澳传媒编程栏目其它相关文章◆■!

[重庆好的seo公司]如何使用html+css+js实现3D相册

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。