使用CSS和HTML实现3D图片环绕效果

news2024/10/26 23:26:18

使用CSS和HTML实现3D图片环绕效果

在本篇博客中,将介绍如何使用HTML和CSS实现一个3D图片环绕效果。这个效果不仅具有视觉吸引力,而且具有高度的互动性,鼠标悬停时动画会暂停。接下来将一步步讲解这个效果的实现过程。

1. 效果

在这里插入图片描述

2. 页面结构与布局

首先,我们来看一下HTML的基本结构。该效果的核心是一个<section>元素,它包含了多个图片的<div>,每个div中都设置了不同的背景图片。

HTML代码:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>3D图片环绕效果</title>
</head>
<body>
    <section>
        <div style="background-image:url(https://www.toopic.cn/public/uploads/small/1658044412448165804441259.jpg)">
        </div>
        <div style="background-image: url(https://www.toopic.cn/public/uploads/small/1658044416540165804441665.jpg);">
        </div>
        <div style="background-image: url(https://www.toopic.cn/public/uploads/small/170429677313517042967732.jpg);">
        </div>
        <div style="background-image:url(https://www.toopic.cn/public/uploads/small/1638860413795163886041313.jpg)">
        </div>
        <div style="background-image: url(https://www.toopic.cn/public/uploads/small/1658043148532165804314881.jpg);">
        </div>
        <div style="background-image:url(https://www.toopic.cn/public/uploads/small/1638860379965163886037984.jpg)">
        </div>
    </section>
</body>
</html>

说明:

  • <section>: 作为容器,用来包裹所有的图片元素。
  • <div>: 每个div通过内联样式设置背景图片,这些图片将最终展示在3D环绕效果中。

3. CSS样式

接下来,我们为这个页面添加样式,主要是通过CSS3中的transformanimationperspective属性来实现3D旋转效果。

CSS代码:

* {
    margin: 0;
    padding: 0;
}

body {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    /* 设置透视点 */
    perspective: 1000px;
}

/* 定义绕Y轴转动的动画 */
@keyframes RotateY {
    0% {
        transform: rotateY(0);
    }
    100% {
        transform: rotateY(360deg);
    }
}

section {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    width: 350px;
    height: 250px;
    background-image: url(../../images/小胖子1.jpg);
    background-size: cover;
    /* 让元素维持3D结构 */
    transform-style: preserve-3d;
    /* 调用绕Y轴旋转的动画 */
    animation: RotateY 20s linear infinite;
}

section div {
    position: absolute;
    width: 350px;
    height: 250px;
    background-position: center;
    background-size: cover;
    border-radius: 15px;
}

div:nth-child(1) {
    transform: translateZ(400px);
}

div:nth-child(2) {
    transform: rotateY(60deg) translateZ(400px);
}

div:nth-child(3) {
    transform: rotateY(120deg) translateZ(400px);
}

div:nth-child(4) {
    transform: rotateY(180deg) translateZ(400px);
}

div:nth-child(5) {
    transform: rotateY(240deg) translateZ(400px);
}

div:nth-child(6) {
    transform: rotateY(300deg) translateZ(400px);
}

/* 鼠标悬浮时,动画暂停 */
section:hover {
    animation-play-state: paused;
}

说明:

  1. 全局样式

    • * { margin: 0; padding: 0; }: 清除默认的内外边距,确保布局的整洁。
    • body { display: flex; justify-content: center; align-items: center; height: 100vh; }: 使用flex布局,将图片环绕效果居中显示,并设置100vh让整个页面充满视窗。
  2. 透视效果(perspective)

    • perspective: 1000px; 设置透视点,创造3D深度效果。这决定了用户观察3D场景的距离,值越大,透视效果越弱;值越小,透视感越强。
  3. 3D旋转动画

    • @keyframes RotateY: 这是一个绕Y轴旋转的动画,旋转周期为0%到100%,完成一圈360度的旋转。
    • animation: RotateY 20s linear infinite;: 给section应用动画,20秒旋转一圈,匀速且无限循环。
  4. 3D效果

    • transform-style: preserve-3d;: 保持3D空间效果,确保元素在旋转过程中不会失去深度感。
    • translateZ(400px);: 将每个div向前移动400px,使它们在3D空间中看起来不在同一平面上。
    • rotateY(60deg), rotateY(120deg), 等:给每个div设置不同的Y轴旋转角度,使它们在环绕中均匀分布。
  5. 交互效果

    • section:hover { animation-play-state: paused; }: 当鼠标悬浮在section上时,动画会暂停,用户可以细细观赏每一张图片。

4. 总结

通过本文的介绍,我们实现了一个具有3D效果的图片环绕旋转动画。整个过程主要依赖于CSS3transformperspectivekeyframes等属性,简单易懂但视觉效果非常出彩。

你可以根据自己的需求调整旋转速度、图片的数量、环绕的半径等,从而创造出更多样化的3D视觉体验。如果你想让你的网页更加生动有趣,这种3D环绕动画效果无疑是一个很好的选择。

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

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

相关文章

Python人脸识别技术进阶篇

在上一篇文章中&#xff0c;我们介绍了如何使用Python进行基本的人脸识别。本文将深入探讨人脸识别技术的高级应用&#xff0c;包括如何优化识别性能、处理复杂环境下的识别挑战以及如何利用深度学习模型来提高识别准确性等话题。 人脸识别的原理回顾 人脸识别流程 人脸识别…

使用 llamafile 以单个文件运行本地大模型

在开发 GenAI 应用时&#xff0c;有一个在本地运行的大模型是非常重要的&#xff0c;可以很方便地进行开发和测试。目前有几个流行的在本地运行大模型的选项&#xff0c;包括 Ollama 和 LM Studio。 这里介绍的是 llamafile。llamafile 是 Mozilla 支持的开源项目。llamafile …

OceanBase + DolphinScheduler,搭建分布式大数据调度平台的实践

本文整理自白鲸开源联合创始人&#xff0c;Apache DolphinScheduler PMC Chair&#xff0c;Apache Foundation Member 代立冬的演讲。主要介绍了DolphinScheduler及其架构、DolphinScheduler与OceanBase 的联合大数据方案。 DolphinScheduler是什么&#xff1f; Apache Dolphi…

第十六章 RabbitMQ延迟消息之延迟插件优化

目录 一、引言 二、优化方案 三、核心代码实现 3.1. 生产者代码 3.2. 消息处理器 3.3. 自定义多延迟消息封装类 3.4. 订单实体类 3.5. 消费者代码 四、运行效果 一、引言 上一章节我们提到&#xff0c;直接使用延迟插件&#xff0c;创建一个延迟指定时间的消息&…

一款零依赖、跨平台的流媒体协议处理工具,支持 RTSP、WebRTC、RTMP 等视频流协议的处理

大家好&#xff0c;今天给大家分享一款功能强大的流媒体协议处理工具go2rtc&#xff0c;支持多种协议和操作系统&#xff0c;具有零依赖、零配置、低延迟等特点。 项目介绍 go2rtc可以从各种来源获取流&#xff0c;包括 RTSP、WebRTC、HomeKit、FFmpeg、RTMP 等&#xff0c;并…

第一个servlet程序

文章目录 在原有工程上建立模块前端配置前后端映射关系添加外部依赖库后端代码启动配置 在原有工程上建立模块 添加web框架 前端 应用结构 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>第一…

【云原生技术】Docker容器进阶知识

文章目录 namespace概述一、namespace的基本概念二、namespace的主要作用三、namespace的类型四、namespace的操作五、namespace在容器技术中的应用 cgroup一、cgroup的基本概念二、cgroup的主要功能三、cgroup的子系统介绍四、cgroup的应用场景五、cgroup的使用与管理 cgroup和…

uniapp-小程序开发0-1笔记大全

uniapp官网&#xff1a; https://uniapp.dcloud.net.cn/tutorial/syntax-js.html uniapp插件市场&#xff1a; https://ext.dcloud.net.cn/ uviewui类库&#xff1a; https://www.uviewui.com/ 柱状、扇形、仪表盘库&#xff1a; https://www.ucharts.cn/v2/#/ CSS样式&…

余 弦 曲 线

1&#xff0e;问题描述 在屏幕上画出余弦函数cos&#xff08;x&#xff09;曲线&#xff0c;如图1.6所示。 图1.6 余弦函数cos&#xff08;x&#xff09;曲线 2&#xff0e;问题分析 连续的曲线是由点组成的,点与点之间距离比较近&#xff0c;看上去就是曲线了&#xff0c;…

uni-app 如何全局设置,获取app.vue里面的值

在globalData里设置一个值 通过下面方法修改 this.$options.globalData.$versonStatus status 在页面中通过getApp()获取 getApp().globalData.$versonStatus

<<迷雾>> 第11章 全自动加法计算机(3)--存储器示例 示例电路

info::操作说明 将一组比特单元扩展为多组的结果, 操作原理类似 注: 一次只能操作一组, 此处需进一步引入地址译码器才能具体进行操作, 见后面的例子, 此处仅展示结构原理 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/cyjsjdm…

C++模板初阶速成

温馨提示&#xff1a;本篇文章依旧是c速成系列的文章&#xff0c;但和以往有所不同的是&#xff0c;本篇文章带大家简单了解并能够学会使用模板 泛型编程 概念&#xff1a;编写与类型无关的通用代码&#xff0c;是代码复用的一种手段。 什么是复用&#xff1f; 简单来说就是…

分组相关 -- EoO原理

EoO (Ethernet over OTN) 是将以太网信号处理后&#xff0c;经过封装、映射后上OTN系统&#xff0c;通过WDM通道来传送的技术。传统的OTN承载ETH专线&#xff0c;不支持限速&汇聚等场景。引入EoO技术后&#xff0c;支持LAG、QoS、OAM等L2层的功能特性&#xff0c;实现端口限…

RBTree(红黑树)的介绍和实现

欢迎来到杀马特的主页&#xff1a;羑悻的小杀马特.-CSDN博客 目录 ​编辑 一红黑树介绍&#xff1a; 1.1红黑树概念&#xff1a; 1.2红黑树遵循的原则&#xff1a; 1.3红黑树效率分析&#xff1a; 二.红黑树的实现&#xff1a; 2.1红黑树结构&#xff1a; 2.2红黑树节点…

TMGM:下周全球市场分析

本周&#xff0c;美国股市表现强劲&#xff0c;标普500指数和道琼斯工业平均指数均刷新了历史最高记录。这一涨势得到了美联储公开市场委员会&#xff08;FOMC&#xff09;会议纪要的支撑&#xff0c;纪要显示大部分官员都支持9月份实施重大的50个基点降息。 在澳大利亚&#…

宝安网站建设中的响应式设计

宝安网站建设中的响应式设计 在数字化时代&#xff0c;网站已成为企业展示形象、吸引客户的重要平台。而在宝安地区&#xff0c;随着互联网的发展&#xff0c;越来越多的企业意识到响应式设计的重要性。响应式设计不仅能够提升用户体验&#xff0c;还能为企业带来更大的市场竞争…

.NET 一款通过DCOM实现系统提权的工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

2024年恩施职称评前公示

此次公示共有422人&#xff0c;初级职称、中级职称、馆员、畜牧师、助理馆员、三级演员、农艺师等均在一起进行评审前的公示。 根据恩施州职称改革工作领导小组办公室《关于报送2024年度恩施州中初级专业技术职务评审材料的通知》&#xff08;恩施州职改办〔2024〕14号&#xf…

04 什么是线性表

什么是线性表 一、为什么需要线性表 例如&#xff1a; ​ 在程序中保存指定班级的所有的学生信息&#xff08;暂时只需要处理姓名、年龄&#xff09;&#xff0c;该班级最多可容纳30人&#xff0c;且可进行数量上的增减。 业务功能&#xff1a; ​ 1&#xff09;这个项目中…

【分布式架构】分布式锁Redission

一、流程图 二、lua脚本实现原理 由setnxexpire实现 setnx&#xff1a;判断key是否存在&#xff0c;如果不存在&#xff0c;则获取锁 setnx的数据结构&#xff1a;<key,<key1,value>> key&#xff1a;业务声明的key key1&#xff1a;线程id value&#xff1a;次数…