CSS3技巧37:JS+CSS3 制作旋转图片墙

开学了就好忙啊,Three.js 学习的进度很慢。。。

备课备课才是王道。

更一篇 JS + CSS3 的内容,做一个图片墙。

 其核心要点是把图片摆成这个样子:

看上去这个布局很复杂,其实很简单。其思路是:

  1. 所有图片放在一个 div.box 里,并且绝对定位,方便调整位置。
  2. 每个图片旋转一个度数。这里有5张图,每个图旋转的度数就是 index*72。为啥 72?因为 360 / 5 = 72 。
  3. 然后,每张图移动 z 轴 -500px。我这里是移动 -500px,具体值大家可以自行设定。

这其实好比一群人,专向对应度数后,往前或者往后移动相同的距离,就可以刚好围城一个圈。

理解这个思路后,剩下的好办了。

HTML:

<div class="box" id="box"><img src="../images/pic1.jpg" alt=""><img src="../images/pic2.jpg" alt=""><img src="../images/pic3.jpg" alt=""><img src="../images/pic4.jpg" alt=""><img src="../images/pic5.jpg" alt="">
</div>

CSS:

*{margin: 0;padding: 0;
}
.box{width: 600px;height: 399px;}
body{perspective: 2500px;   /* 透视 */height: 100vh;overflow: hidden;
}
.box{transform-style: preserve-3d; /* 3D 空间 */margin-left: auto;margin-right:auto;margin-top: 400px;position: relative;animation: ani 20s linear infinite;   /* 自动旋转 */
}
.box img{position: absolute;backface-visibility: hidden;opacity: 0.5;transition:all 0.2s;  
}
.box img:hover{    /* 加上交互 */opacity: 1;
}@keyframes ani {0%{transform: rotateY(0);}100%{transform: rotateY(360deg);}
}

JS:

let box = document.getElementById("box");
let imgs = box.querySelectorAll("img");
// 遍历每张图片,设置每个图片的旋转 和 z轴位移。注意顺序!
imgs.forEach(function(value,index){value.style.cssText = `transform:rotateY( ${72*index}deg )   translateZ(-500px);`;
});

完工~是不是超级简单~?

啊~有用的知识又增加了。

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

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

相关文章

【堆】【优先级队列】Leetcode 215. 数组中的第K个最大元素

【堆】【优先级队列】Leetcode 215. 数组中的第K个最大元素 PriorityQueue操作解法 优先级队列构造堆 小顶堆 ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f388;------------------- PriorityQueue操作 创建优先级队列【默认创建小顶堆】&#xf…

elasticsearch 聚合DSL语法

1.聚合的分类 聚合可以实现对文档数据的统计、分析、运算。聚合常见的分类&#xff1a; • 桶(Bucket)聚合&#xff1a;用来对文档进行分组&#xff0c;比如 TermAggregation:按照文档字段值分组&#xff1b; Date HIstogram:按照日期阶梯分组&#xff0c;例如一周为一组&…

GIS之深度学习02:Anaconda2019版本安装(py38)

Anaconda是一个专注于数据科学和机器学习的开源发行版&#xff0c;内置了丰富的工具和库&#xff0c;包括Python解释器、NumPy、SciPy、Pandas、Scikit-learn、TensorFlow等&#xff0c;使用户能够轻松进行科学计算和数据分析。其强大的包管理器conda简化了软件包的安装和环境管…

Flask入门一

文章目录 一、Flask介绍二、Flask创建和运行1.安装2.快速使用3.Flask小知识4.flask的运行方式 三、Werkzeug介绍四、Jinja2介绍五、Click CLI 介绍六、Flask安装介绍watchdog使用python--dotenv使用&#xff08;操作环境变量&#xff09; 七、虚拟环境介绍Mac/linux创建虚拟环境…

【自动化的讲解】

自动化 1. 前言2. 自动化的历史和发展3. 自动化的类型4. 自动化的优点和缺点5. 自动化的实际应用 1. 前言 自动化是指使用各种控制系统和技术&#xff0c;如计算机软件、机器人、人工智能和信息技术来减少人工介入&#xff0c;并执行各种过程和任务&#xff0c;自动化可以应用…

Mysql的备份还原

模拟环境准备 创建一个名为school的数据库&#xff0c;创建一个名为Stuent的学生信息表 mysql> create database school; Query OK, 1 row affected (0.00 sec)mysql> use school; Database changed mysql> CREATE TABLE Student (-> Sno int(10) NOT NULL COMME…

java 数据结构栈和队列

目录 栈(Stack) 栈的使用 栈的模拟实现 栈的应用场景 队列(Queue) 队列的使用 队列模拟实现 循环队列 双端队列 用队列实现栈 用栈实现队列 栈(Stack) 什么是栈&#xff1f; 栈 &#xff1a;一种特殊的线性表&#xff0c;其 只允许在固定的一端进行插入和删除元素操…

C 语言中的 char 关键字详解

1. char类型 char类型用于存储单个字符&#xff0c;占用1个字节的内存空间。在C语言中&#xff0c;char类型可以用于存储ASCII码表中的任意字符&#xff0c;包括大小写字母、数字、标点符号等。例如&#xff1a; char ch A;在这个例子中&#xff0c;变量ch存储了字符A的ASCI…

顶顶通呼叫中心中间件-如何使处于机器人话术中的通话手动转接到坐席分机上讲解(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件使用httpapi实现电话转接操作过程讲解(mod_cti基于FreeSWITCH) 需要了解呼叫中心中间件可以点以下链接了解顶顶通小孙 1、使用httpapi接口转接 一、打开web版的ccadmin并且找到接口测试 打开web-ccadmin并且登录&#xff0c;登录完成之后点击运维调试-再…

服务器部署java 的docker项目,以及常用的一些命令

1.编写Dockerfile文件&#xff08;javaEE&#xff09; # 使用 Java 运行时环境作为基础镜像 FROM openjdk:8-jdk-alpine# 将 jar 文件添加到容器中 ADD target/SBoot-ssmp-0.0.1-SNAPSHOT.jar app.jar# 运行 jar 文件 ENTRYPOINT ["java","-jar","/a…

【ArcGIS】统计格网中不同土地利用类型占比

基于ArcGIS统计格网中不同土地利用类型占比 数据准备ArcGIS操作步骤1、创建渔网&#xff08;Create Fishnet&#xff09;2、建立唯一标识3、选择格网4、提取不同类别土地利用类型5、各类用地面积计算 参考另&#xff1a;可能出现的问题总结Q1&#xff1a;ArcGIS获取唯一值&…

【python、nlp、transformer】transformer与nlp感受器

Transformer的优势 相比之前占领市场的LSTM和GRU模型&#xff0c;Transformer有两个显著的优势&#xff1a; 1. Transformer能够利用分布式GPU进行并行训练&#xff0c;提升模型训练效率。 2. 在分析预测更长的文本时&#xff0c;捕捉间隔较长的语义关联效果更好&#xff0e…

ARM系列 -- 虚拟化(一)

今天来研究一个有意思的话题&#xff0c;虚拟化&#xff08;virtualization&#xff09;。 开始前&#xff0c;先闲扯一下&#xff0c;最近一个词比较火&#xff0c;“元宇宙&#xff08;Metaverse&#xff09;”。在维基百科里面是这么定义元宇宙的&#xff0c;“The Metaver…

2024-02-27(Kafka)

1.Kafka中所有的消息都是保存在主题中的&#xff0c;要生产消息到Kafka&#xff0c;首先必须要创建一个主题。 2.Kafka的生产者/消费者 安装kafka集群&#xff0c;可以测试如下&#xff1a; 创建一个topic主题&#xff08;消息都是存放在topic中&#xff0c;类似mysql建表的过…

iMazing 3.0.0.3 for mac 中文破解版2024最新图文安装教程

我们刚刚发布了iMazing 3.0.0.3 for mac 中文版本。Windows和macOS用户现在都可以试驾并体验iPhone管理的未来。 备受期待的第一个Windows版本得益于过去几个月macOS测试版的所有改进&#xff0c;使其成为一个稳定的初始版本。 我们的开发团队创造了一种无缝的外观和体验&#…

Android日历提醒增删改查事件、添加天数不对问题

Android日历提醒是非常好的提醒功能&#xff0c;笔者在做的过程中&#xff0c;遇到的一些问题&#xff0c;现整理出来&#xff0c;以供参考。 一、申请日历的读写权限 <uses-permission android:name"android.permission.WRITE_CALENDAR" /> <uses-permiss…

Lua速成(5)table

一、table table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型&#xff0c;如&#xff1a;数组、字典等。 Lua table 使用关联型数组&#xff0c;你可以用任意类型的值来作数组的索引&#xff0c;但这个值不能是 nil。 Lua table 是不固定大小的&#xff0c;你可以…

springboot-基础-eclipse集成mybatis+使用方法+排错

备份笔记。所有代码都是2019年测试通过的&#xff0c;如有问题请自行搜索解决&#xff01; 目录 集成mybatis安装mybatis的jar包安装插件&#xff1a;mybatis-generator安装方法生成方法报错&#xff1a;java.lang.RuntimeException: Exception getting JDBC Driver mybatis注解…

数据之美:用山海鲸展现数据魅力

在数据分析领域&#xff0c;数据可视化是一个至关重要的环节。作为一名资深的数据分析师&#xff0c;我深知一个直观、易于理解的数据可视化看板对于传达信息、辅助决策的重要性。今天&#xff0c;我将以自己在用的山海鲸可视化软件为例&#xff0c;与大家分享如何制作一个高效…

LeetCode 热题 100 | 图论(上)

目录 1 200. 岛屿数量 2 994. 腐烂的橘子 2.1 智障遍历法 2.2 仿层序遍历法 菜鸟做题&#xff0c;语言是 C 1 200. 岛屿数量 解题思路&#xff1a; 遍历二维数组&#xff0c;寻找 “1”&#xff08;若找到则岛屿数量 1&#xff09;寻找与当前 “1” 直接或间接连接在…