超火 3D 照片墙,你学废了吗?

简介: 超火 3D 照片墙,你学废了吗?

index.html

<!--
 * @Author: coder-jason
 * @Date: 2022-04-20 11:38:07
 * @LastEditTime: 2022-04-20 12:27:05
-->
<!DOCTYPE html>
<html lang="en">
<head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>超火🔥照片墙</title>
      <link rel="stylesheet" href="./style.css">
      <link rel="icon" type="image/png" href="https://coder-jason.cn/images/favicon-32x32.png">
</head>
<body>
      <div class="perspective">
            <div class="wrap" id="imgwrap">
                  <img src="./img/1.jpg" alt="demo">
                  <img src="./img/2.jpg" alt="demo">
                  <img src="./img/3.jpg" alt="demo">
                  <img src="./img/4.jpg" alt="demo">
                  <img src="./img/5.jpg" alt="demo">
                  <img src="./img/6.jpg" alt="demo">
                  <img src="./img/7.jpg" alt="demo">
                  <img src="./img/8.jpg" alt="demo">
                  <img src="./img/9.jpg" alt="demo">
                  <img src="./img/10.jpg" alt="demo">
                  <img src="./img/11.jpg" alt="demo">
                  <img src="./img/12.jpg" alt="demo">
                  <img src="./img/13.jpg" alt="demo">
                  <img src="./img/14.jpg" alt="demo">
                  <img src="./img/15.jpg" alt="demo">
                  <img src="./img/16.jpg" alt="demo">
                  <img src="./img/17.jpg" alt="demo">
                  <img src="./img/18.jpg" alt="demo">
                  <img src="./img/19.jpg" alt="demo">
                  <img src="./img/20.jpg" alt="demo">
            </div>
      </div>
      <script type="text/javascript" src="script.js"></script>
</body>
</html>

style.css

/* 
 * @Author: coder-jason
 * @Date: 2022-04-20 11:38:07
 * @LastEditTime: 2022-04-20 12:27:38
*/
* {
      margin: 0; 
      padding: 0;
}
body {
      background: #222;
      overflow: hidden;
      user-select: none;
      background-image: url(./img/bgi.png);
}
.perspective {
      perspective: 800px;
}
.wrap {
      width: 95px;
      height: 200px;
      margin: 100px auto;
      position: relative;
      transform: rotateX(-20deg) rotateY(0deg);
      transform-style: preserve-3d;
}
.wrap img {
      display: block;
      position: absolute;
      width: 100%;
      height: 100%;
      transform: rotateY(0deg) translateZ(0px);
      background: transparent;
      box-shadow: 0 0 4px #fff;
      border-radius: 5px;
}
.wrap p {
      width: 1200px;
      height: 1200px;
      background: -webkit-radial-gradient(center center, 600px 600px, rgba(122, 122, 122, .5), rgba(0, 0, 0, 0));
      position: absolute;
      border-radius: 50%;
      left: 50%;
      top: 100%;
      margin-left: -600px;
      margin-top: -600px;
      transform: rotateX(90deg);
}

script.js

/*
 * @Author: coder-jason
 * @Date: 2022-04-20 12:19:54
 * @LastEditTime: 2022-04-20 12:25:45
 */
var oImg = document.getElementsByTagName("img")
var len = oImg.length;
console.log(len)
var deg = 360 / len;
var oWrap = document.getElementById("imgwrap");
window.onload = function () {
      Array.prototype.forEach.call(oImg, function (ele, index, self) {
            ele.style.transform = "rotateY(" + deg * index + "deg) translateZ(350px)";
            ele.style.transition = "1s " + (len - index) * 0.1 + "s";
      });
}
var newX, newY, lastX, lastY, minusX, minusY, rotX = -20, rotY = 0;
document.onmousedown = function (e) {
      lastX = e.clientX;
      lastY = e.clientY;
      this.onmousemove = function (e) {
            newX = e.clientX;
            newY = e.clientY;
            minusX = newX - lastX;
            minusY = newY - lastY;
            rotX -= minusY * 0.2;
            rotY += minusX * 0.1;
            oWrap.style.transform = "rotateX(" + rotX + "deg) rotateY(" + rotY + "deg)";
            lastX = newX;
            lastY = newY;
      }
      this.onmouseup = function (e) {
            this.onmousemove = null;
      }
}



相关文章
|
12月前
|
IDE 开发工具 Python
这样的奇技淫巧,劝你不用也罢
这样的奇技淫巧,劝你不用也罢
102 0
|
数据安全/隐私保护 图形学 Windows
推荐五款宝藏软件,身为宝藏男孩和宝藏女孩的你,不试一下吗?
今天带来五款宝藏软件,身为宝藏男孩和宝藏女孩的你们,不试一下吗?
151 0
推荐五款宝藏软件,身为宝藏男孩和宝藏女孩的你,不试一下吗?
|
程序员 Android开发 iOS开发
程序员五一修图小贴士
程序员五一修图小贴士
122 0
程序员五一修图小贴士
|
数据安全/隐私保护
推荐5个神仙软件,个个让你爱不释手
最近陆陆续续收到好多小伙伴的咨询,这边也是抓紧时间整理出几个好用的软件,希望可以帮到大家。
156 0
|
前端开发 JavaScript 程序员
2023将至,前端程序员们应该一起放个烟花庆祝一下,走起
前言:小时候,在我印象中,每到快过年的时候就有很多卖炮仗的,一般也就是阳历的12月份到明年的正月15号卖炮仗的商家比较多,省下买辣条的钱去买炮仗,在老家也就过年和除夕两天及正月15日这几天放烟花和炮仗比较猛,现在年纪大了,听不得炮仗那种噪声了,也考虑到环保,工作之后的程序员以代码的形式演绎一下烟花的效果。
225 0
2023将至,前端程序员们应该一起放个烟花庆祝一下,走起
|
小程序 数据库
喜欢看球,那就手撸一个看球小程序系统
一,系统展示;二,小程序端代码;三,后端代码;四,数据库;五,手把手教你学习
92 0
喜欢看球,那就手撸一个看球小程序系统
|
Web App开发 JavaScript 前端开发
【程序员的浪漫】七夕到了,还不快给你女朋友做一个专属chrome插件
【程序员的浪漫】七夕到了,还不快给你女朋友做一个专属chrome插件
129 0
【程序员的浪漫】七夕到了,还不快给你女朋友做一个专属chrome插件
|
存储 定位技术 C++
俄罗斯方块彩蛋(附星空表白彩蛋)
俄罗斯方块彩蛋(附星空表白彩蛋)
俄罗斯方块彩蛋(附星空表白彩蛋)
|
JavaScript Java API
@Value竟然能玩出这么多花样
@Value竟然能玩出这么多花样
@Value竟然能玩出这么多花样