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

news2025/1/24 5:11:17

开学了就好忙啊,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.coloradmin.cn/o/1474540.html

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

相关文章

【小沐学QT】QT学习之OpenGL开发笔记

文章目录 1、简介2、Qt QOpenGLWidget gl函数3、Qt QOpenGLWidget qt函数4、Qt QOpenGLWindow5、Qt glut6、Qt glfw结语 1、简介 Qt提供了与OpenGL实现集成的支持&#xff0c;使开发人员有机会在更传统的用户界面的同时显示硬件加速的3D图形。 Qt有两种主要的UI开发方…

计算机网络:路由协议

路由协议简介 路由协议是计算机网络中不可或缺的一部分&#xff0c;它们负责确定数据包从源地址到目的地址的最佳路径。想象一下&#xff0c;如果你是一个数据包&#xff0c;路由协议就像是地图或导航工具&#xff0c;指导你如何到达目的地。 目录 路由协议简介 工作原理简化…

动态更新(LanqiaoOJ)

2024.2.27 前缀和、差分解析 前缀和与差分 图文并茂 超详细整理(全网最通俗易懂)_前缀和差分-CSDN博客 k倍区间【暴力、前缀和】 输入描述 第一行包含两个整数 NN 和 KK( 1≤N,K≤1051≤N,K≤105 )。 以下 N 行每行包含一个整数 AiAi​ ( 1≤Ai≤1051≤Ai​≤105 ) 输…

【Java】常用实用类及java集合框架(实验六)

目录 一、实验目的 二、实验内容 三、实验小结 3.1 常用实用类 3.2 Java集合框架 一、实验目的 1、掌握java常用类的方法 2、掌握String类与数值类型数据的相互转化 3、掌握正则表达式的应用 4、掌握常用集合的创建和操作方法 二、实验内容 1、菜单的内容如下&#x…

CUDA C:核函数、主机函数、设备函数

相关阅读 CUDA Chttps://blog.csdn.net/weixin_45791458/category_12530616.html?spm1001.2014.3001.5482 核函数(Kernel Function)指的是在主机(CPU)调用&#xff08;某些情况下也可以在设备调用&#xff09;&#xff0c;在设备(GPU)上执行的函数&#xff0c;使用__global__…

将法律条文很美观的复制到word上

前言 目前很多法律条款都没有现成的PDF或者word格式的供大家下载&#xff0c;这个时候呢&#xff0c;领导又要求你帮他搞定&#xff0c;这就很。。。。 步骤 复制全部条款到word中使用wps的排版功能&#xff0c;将空格和空段落全部移除 3. 设置好你需要的格式 标题&#xff…

PIGX从零开始快速构建分布式服务

PIGX从零开始快速构建分布式服务 一、环境搭建1.代码下载2 更改maven目录2更改完成后等待jar包的下载3 认真阅读README.md4 更改服务名5 编译代码 二、基础服务auth、upms、gateway配置与启动1 搭建数据库2 初始化pig数据库信息3构建nacos服务端3.1 更改pig-register配置并启动…

SQL注入漏洞解析--less-7

我们先看一下第七关 页面显示use outfile意思是利用文件上传来做 outfile是将检索到的数据&#xff0c;保存到服务器的文件内&#xff1a; 格式&#xff1a;select * into outfile "文件地址" 示例&#xff1a; mysql> select * into outfile f:/mysql/test/one f…

Mistral AI 推出最新Mistral Large模型,性能仅次于GPT 4

模型特点 • Mistral Large具有顶级的推理能力&#xff0c;适用于复杂的多语言推理任务&#xff0c;包括文本理解、转换和代码生成。• 32K 令牌的上下文窗口&#xff0c;能够从大型文档中精确回忆信息。• 精确的指令跟随能力&#xff0c;允许开发者设计他们的审核政策。• 支…

SpringCloud--Nacos解析

一、Nacos简介 Spring Cloud Alibaba Nacos是一个用于动态服务发现、配置管理和服务管理的平台&#xff0c;是阿里巴巴开源的一个项目&#xff0c;旨在简化微服务架构中的服务治理。Nacos 提供了一组简单易用的特性集&#xff0c;可以快速的实现动态服务发现、服务配置、服务元…

轻量级模型,重量级性能,TinyLlama、LiteLlama小模型火起来了,针对特定领域较小的语言模型是否与较大的模型同样有效?

轻量级模型&#xff0c;重量级性能&#xff0c;TinyLlama、LiteLlama小模型火起来了&#xff0c;针对特定领域较小的语言模型是否与较大的模型同样有效? 当大家都在研究大模型&#xff08;LLM&#xff09;参数规模达到百亿甚至千亿级别的同时&#xff0c;小巧且兼具高性能的小…

【基于React实现共享单车管理系统】—项目简介(一)

【基于React实现共享单车管理系统】—项目简介&#xff08;一&#xff09; 一、项目整体架构

【自然语言处理三-自注意self attention】

自然语言处理三-自注意力 self attention 自注意力是什么&#xff1f;自注意力模型出现的原因是什么&#xff1f;词性标注问题解决方法1-扩展window&#xff0c;引用上下文解决方法2-运用seq2seq架构新问题来了&#xff1a;参数量增加、无法并行的顽疾 自注意力self attention模…

kali Linux 渗透系统的安装、提权与汉化(初识 Linux 系统)

目录 一、安装 kali 二、汉化 kali 三、kali 提权 1、暂时提权 root 2、永久提权 root 四、Linux 常用命令 一、安装 kali 官方镜像下载地址 https://www.kali.org/get-kali/#kali-virtual-machines 我这里推荐的是下载 vmx 文件&#xff0c;下载后解压&#xff0c;在 …

牛客前端八股文(每日更新)

1.说说HTML语义化&#xff1f; 得分点&#xff1a;语义化标签、利于页面内容结构化、利于无CSS页面可读、利于SEO、利于代码可读 1&#xff0c;标签语义化是指在开发时尽可能使用有语义的标签&#xff0c;比如header&#xff0c;footer&#xff0c;h&#xff0c;p&#xff0c…

uniapp实现单选框

采用uniapp-vue3实现的一款单选框组件&#xff0c;提供丝滑的动画选中效果&#xff0c;支持不同主题配置&#xff0c;适配web、H5、微信小程序&#xff08;其他平台小程序未测试过&#xff0c;可自行尝试&#xff09; 可到插件市场下载尝试&#xff1a; https://ext.dcloud.net…

【X806开发板试用】串口数据透传阿里云IOT

上成果 阿里云对接需要用的是PRODUCTKEY&#xff0c;DEVICENAME和DEVICESECRET&#xff0c;开始直接用MQTT的例子硬怼&#xff0c;没成功&#xff0c;后面看了文档&#xff0c;发现阿里云对接的client_id,username和password是通过三要素生成的。 找了一下代码&#xff0c;发…

禁止safari浏览器网页双击缩放功能

普通浏览器 普通浏览器&#xff0c;只需要增加meta标签禁止缩放功能就行了 <meta content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalable0;" name"viewport" /> user-scalableno或0 //禁止双指缩放页面initial-scale1.0…

nginx平滑升级,信号使用,分割日志

信号 kill -l 看信号大全 nginx -h 中可以看到的信号较少 s signal : send signal to a master process: stop, quit, reopen, reload 可以使用man手册来查看详细的信号 如果没安装&#xff0c;去源码包里找到man文件 man 路径/nginx.8 不加路径打不开man帮助 st…

【这个词(Sequence-to-Sequence)在深度学习中怎么解释,有什么作用?】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;深度学习笔记 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; Sequence-to-Sequence&#xff08;Seq2Seq&#xff09; Sequence-to-Sequence&#xff08;Seq2Seq…