css实现3d照片墙

news2024/9/17 7:35:56

效果图 

vue2写法: 

<template>
    <div class="container">
        <div class="box">
            <div class="circle circle1">
                <img src="../../../assets/images/main/logo.png" alt="" />
            </div>
            <div class="circle circle2">
                <img src="../../../assets/images/main/logo.png" alt="" />
            </div>
            <div class="circle circle3">
                <img src="../../../assets/images/main/logo.png" alt="" />
            </div>
            <div class="circle circle4">
                <img src="../../../assets/images/main/logo.png" alt="" />
            </div>
            <div class="circle circle5">
                <img src="../../../assets/images/main/logo.png" alt="" />
            </div>
            <div class="circle circle6">
                <img src="../../../assets/images/main/logo.png" alt="" />
            </div>
            <div class="circle circle7">
                <img src="../../../assets/images/main/logo.png" alt="" />
            </div>
            <div class="circle circle8">
                <img src="../../../assets/images/main/logo.png" alt="" />
            </div>
            <div class="circle circle9">
                <img src="../../../assets/images/main/logo.png" alt="" />
            </div>
            <div class="circle circle10">
                <img src="../../../assets/images/main/logo.png" alt="" />
            </div>
        </div>
    </div>
</template>

<script></script>

<style lang="less" scoped>
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* 设置可视窗口的宽高 */
body {
    width: 100vw;
    height: 100vh;
    position: relative;
    background-color: pink;
}

.container {
    position: absolute;
    width: 1000px;
    height: 500px;
    top: 15%;
    left: 50%;
    transform: translateX(-50%);
    z-index: 1;
    display: flex;
    justify-content: center;
    align-items: center;
    perspective: 1000px;
}

.box {
    width: 150px;
    height: 150px;
    position: relative;
    transform-style: preserve-3d;
    animation: run 10s linear infinite;
}

.circle {
    position: absolute;
    top: 0;
    left: 0;
    width: 150px;
    height: 150px;
}

/*设置图像大小、边框、圆角、位置*/
.circle img {
    width: 200px;
    height: 150px;
    border: 1px solid #ccc;
    border-radius: 10px;
    box-sizing: border-box;
}

.circle1 {
    transform: translateZ(500px);
}

.circle2 {
    transform: rotateY(36deg) translateZ(500px);
}

.circle3 {
    transform: rotateY(72deg) translateZ(500px);
}

.circle4 {
    transform: rotateY(108deg) translateZ(500px);
}

.circle5 {
    transform: rotateY(144deg) translateZ(500px);
}

.circle6 {
    transform: rotateY(180deg) translateZ(500px);
}

.circle7 {
    transform: rotateY(216deg) translateZ(500px);
}

.circle8 {
    transform: rotateY(252deg) translateZ(500px);
}

.circle9 {
    transform: rotateY(288deg) translateZ(500px);
}

.circle10 {
    transform: rotateY(324deg) translateZ(500px);
}

@keyframes run {
    0% {
        transform: rotateY(0);
    }

    100% {
        transform: rotateY(360deg);
    }
}
</style>

html写法:

<!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>动画2</title>
</head>
 
<body>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
 
        /* 设置可视窗口的宽高 */
        body {
            width: 100vw;
            height: 100vh;
            position: relative;
            background-color: pink;
        }
 
        .container {
            position: absolute;
            width: 1000px;
            height: 500px;
            top: 15%;
            left: 50%;
            transform: translateX(-50%);
            z-index: 1;
            display: flex;
            justify-content: center;
            align-items: center;
            perspective: 1000px;
        }
 
        .box {
            width: 150px;
            height: 150px;
            position: relative;
            transform-style: preserve-3d;
            animation: run 10s linear infinite;
        }
 
        .circle {
            position: absolute;
            top: 0;
            left: 0;
            width: 150px;
            height: 150px;
        }
 
        /*设置图像大小、边框、圆角、位置*/
        .circle img {
            width: 200px;
            height: 150px;
            border: 1px solid #ccc;
            border-radius: 10px;
            box-sizing: border-box;
        }
 
        .circle1 {
            transform: translateZ(500px);
        }
 
        .circle2 {
            transform: rotateY(36deg) translateZ(500px);
        }
 
        .circle3 {
            transform: rotateY(72deg) translateZ(500px);
        }
 
        .circle4 {
            transform: rotateY(108deg) translateZ(500px);
        }
 
        .circle5 {
            transform: rotateY(144deg) translateZ(500px);
        }
 
        .circle6 {
            transform: rotateY(180deg) translateZ(500px);
        }
 
        .circle7 {
            transform: rotateY(216deg) translateZ(500px);
        }
 
        .circle8 {
            transform: rotateY(252deg) translateZ(500px);
        }
 
        .circle9 {
            transform: rotateY(288deg) translateZ(500px);
        }
 
        .circle10 {
            transform: rotateY(324deg) translateZ(500px);
        }
 
        @keyframes run {
            0% {
                transform: rotateY(0);
            }
 
            100% {
                transform: rotateY(360deg);
            }
        }
    </style>
 
    <body>
        <div class="container">
            <div class="box">
                <div class="circle circle1">
                    <img src="./img/QQ图片20221114190101.jpg" alt="">
                </div>
                <div class="circle circle2">
                    <img src="./img/QQ图片20221114190057.jpg" alt="">
                </div>
                <div class="circle circle3">
                    <img src="./img/QQ图片20221114190053.jpg" alt="">
                </div>
                <div class="circle circle4">
                    <img src="./img/QQ图片20221114190048.jpg" alt="">
                </div>
                <div class="circle circle5">
                    <img src="./img/QQ图片20221114190044.jpg" alt="">
                </div>
                <div class="circle circle6">
                    <img src="./img/QQ图片20221114190038.jpg" alt="">
                </div>
                <div class="circle circle7">
                    <img src="./img/QQ图片20221114190014.jpg" alt="">
                </div>
                <div class="circle circle8">
                    <img src="./img/QQ图片20221114190008.jpg" alt="">
                </div>
                <div class="circle circle9">
                    <img src="./img/QQ图片20221114190002.jpg" alt="">
                </div>
                <div class="circle circle10">
                    <img src="./img/QQ图片20221114185953.jpg" alt="">
                </div>
            </div>
        </div>
    </body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1917149.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV和PIL进行前景提取

摘要 在图像处理和分析中&#xff0c;前景提取是一项关键技术&#xff0c;尤其是在计算机视觉和模式识别领域。本文介绍了一种结合OpenCV和PIL库的方法&#xff0c;实现在批量处理图像时有效提取前景并保留原始图像的EXIF数据。具体步骤包括从指定文件夹中读取图像&#xff0c…

智慧水利的变革之路:如何通过大数据、物联网和人工智能构建高效、智能、可持续的水利管理新模式

目录 一、引言&#xff1a;智慧水利的时代背景与意义 二、大数据&#xff1a;水利管理的数据基石 &#xff08;一&#xff09;数据收集与整合 &#xff08;二&#xff09;数据分析与挖掘 三、物联网&#xff1a;水利管理的感知神经 &#xff08;一&#xff09;智能感知与监…

现在国内的ddos攻击趋势怎么样?想了解现在ddos的情况该去哪看?

目前&#xff0c;国内的DDoS攻击趋势显示出以下几个特征&#xff1a; 攻击频次显著增加&#xff1a;根据《快快网络2024年DDoS攻击趋势白皮书》&#xff0c;2023年DDoS攻击活动有显著攀升&#xff0c;总攻击次数达到1246.61万次&#xff0c;比前一年增长了18.1%。 攻击强度和规…

可视化作品集(12):智慧园区绝对是可视化大屏重点应用领域。

现在越来越多的园区上了可视化大屏&#xff0c;来对园区进行智慧化管理&#xff0c;本期分享一些精彩案例给大家。

2024年AI终端白皮书-AI与人协作、服务于人

来源&#xff1a;华为&清华大学&#xff1a; 近期历史回顾&#xff1a; 2024年上半年全国新房市场报告.pdf 2024移动应用趋势区域聚焦-土耳其.pdf 2024年轻人购房意愿调查报告.pdf 2024药械企业HCP全渠道营销实践指南.pdf 中国水产品贸易月度监测报告(2024年1-5月&#xf…

汽车免拆诊断案例 | 奥迪 Q7 e-tron无法通过插电式充电器充电

故障现象 车主反映&#xff0c;车辆无法使用自带的插电式充电器充电。&#xff08;这种充电方法是“Mode 2充电”&#xff0c;3针插头&#xff0c;10 A&#xff0c;2.2 kW&#xff09; 接车后验证故障&#xff0c;将Type 2充电插头连接到车辆时&#xff0c;充电口锁定销循环三…

从0到1写vue源码(02手写diff算法)

snabbdom snabbdom简介 搭建snabbdom环境 npm init npm i -S snabbdom搭建好后出现这样一个文件&#xff0c;sanabbdom里边就有js源码 接着安装webpack命令 npm install --save-dev webpack5 webpack-cli3 webpack-dev-server3 --legacy-peer-deps 直接npm run dev命令 接…

实战教程:如何利用Optimizer优化你的Windows系统?

前言 你是否厌倦了系统臃肿、隐私泄露的烦恼&#xff1f;小江湖今天就要带你走进一个全新的世界&#xff0c;一个能够让你重获自由与安心的神奇之地——Optimizer&#xff0c;一款专为Windows用户打造的深度优化神器&#xff1b;有了它你仅需轻轻一点&#xff0c;再也不用为系…

Shader每日一练(2)护盾

Shader "Custom/Shield" {Properties{_Size("Size", Range(0 , 10)) 1 // 控制噪声纹理缩放大小的参数_colorPow("colorPow", Float) 1 // 控制颜色强度的指数_colorMul("colorMul", Float) 1 // 控制颜色乘法因子_mainColor("…

如何在 Python 中创建一个类似于 MS 计算器的 GUI 计算器

问题背景 假设我们需要创建一个类似于微软计算器的 GUI 计算器。这个计算器应该具有以下功能&#xff1a; 能够显示第一个输入的数字。当按下运算符时&#xff0c;输入框仍显示第一个数字。当按下第二个数字时&#xff0c;第一个数字被替换。 解决方案 为了解决这个问题&am…

el-date-picker 限制选择六个月内的日期

效果如图&#xff1a; 代码&#xff1a; <el-date-picker v-model"serchTimes" type"daterange" size"small" start-placeholder"开始时间"range-separator"~" end-placeholder"结束时间" format"yyyy /…

防火墙安全策略及用户认证实验

一、实验拓扑 二、实验要求 1、DMZ区内的服务器&#xff0c;办公区仅能在办公时间&#xff08;9&#xff1a;00-18&#xff1a;00&#xff09;内可以访问&#xff1b;生产区的设备全天可以访问 2、生产区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网 3、办公区设…

逆向案例十一——华强北登录逆向

网址&#xff1a;aHR0cHM6Ly9wYXNzcG9ydC5ocWV3LmNvbS9sb2dpbg 登陆页面&#xff1a; 打开开发者工具会出现debugger调试&#xff1a; 直接使用一律不再此处暂停即可。点击登录&#xff0c;找到登录包。 发现有三个参数进行了加密&#xff0c;分别是Password,UserName和Devic…

概率论期末速成(知识点+例题)

考试范围 一&#xff1a; 事件关系运算性质全概率公式、贝叶斯公式古典概型 二&#xff1a; 离散分布律连续密度函数性质 -> 解决三个问题&#xff08;求待定系数、求概率、求密度函数&#xff09;分布函数 -> 解决三个问题常用分布&#xff08;最后一节课的那几个分…

Auslogics Disk Defrag Pro v11激活版下载、安装、使用教程 (磁盘碎片整理工具)

前言 Auslogics Disk Defrag Pro 是一款支持 FAT16 文件系统的磁盘碎片整理工具&#xff0c;它可以快速整理磁盘碎片&#xff0c;使磁盘空间更加整洁&#xff0c;显著提升电脑的运行速度。该软件无需任何分析阶段&#xff0c;并且速度比大多数其他碎片整理软件更快。它可以帮助…

算法力扣刷题记录 四十一【N叉树遍历】

前言 依然是遍历问题。由二叉树扩展到N叉树遍历。 记录 四十一【N叉树遍历】 一、【589. N叉树的前序遍历】 题目 给定一个 n 叉树的根节点 root &#xff0c;返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示&#xff0c;每组子节点由空值 null 分隔…

Node.js_fs模块

文件删除 文件重命名和移动&#xff08;本质都是修改路径&#xff09; 文件夹操作 创建文件夹(mkdir) 读取文件夹(readdir) &#xff08;打印出来是该文件夹下名称的数组形式&#xff09; 读取当前的文件夹(readdir) 删除文件夹 &#xff08;rmdir&#xff09; 查看资源状态…

合合信息大模型加速器亮相WAIC大会:文档解析与文本识别新突破

合合信息大模型加速器亮相WAIC大会&#xff1a;文档解析与文本识别新突破 文章目录 合合信息大模型加速器亮相WAIC大会&#xff1a;文档解析与文本识别新突破前言合合信息TextIn平台&#xff1a;智能文档处理的领军者文档解析引擎&#xff1a;百页文档秒级处理大模型的发展背景…

文件数据跨境传输这些常见问题,要怎么解决?

越来越多的企业和机构面临文件数据跨境传输的场景和需求&#xff0c;数据跨境流通的过程还是比较复杂的&#xff0c;所以在传输过程中会面临各种问题。 比如法律法规和数据保护、技术标准、网络带宽和速度、数据安全风险控制等&#xff0c;企业要如何解决这些问题呢&#xff1…

数据仓库介绍_维度表(三)

维度表概述 维度表是维度建模的基础和灵魂。前文提到&#xff0c;事实表紧紧围绕业务过程进行设计&#xff0c;而维度表则围绕业务过程所处的环境进行设计。维度表主要包含一个主键和各种维度字段&#xff0c;维度字段称为维度属性。 表设计步骤 确定维度&#xff08;表&…