HTML+CSS+JavaScript实现图片3D展览的示例代码

yizhihongxing

HTML+CSS+JavaScript实现图片3D展览,其基本思路是通过HTML布局实现图片容器,CSS样式实现3D旋转效果,JavaScript实现交互和事件。下面我们就来一步步讲解实现的具体方法。

第一步:布局HTML

在HTML中创建一个外层容器div,设置宽高以及透视效果,然后在容器中添加一个内层容器ul,设置相应的宽高和位置。在ul中添加li标签作为图片容器,设置宽高和背景图片等属性,这里为了方便示例,直接采用本地图片。

<html>
<head>
  <style>
    .container {
      width: 600px;
      height: 400px;
      perspective: 800px;
      margin: 0 auto;
    }
    .showbox {
      position:absolute;left:0;top:0;width:450px;height:350px;
    }
    ul {
      width: 100%;
      height: 100%;
      margin: 0;
      padding: 0;
      position: relative;
      transform-style: preserve-3d;
    }
    li {
      position: absolute;
      width: 320px;
      height: 200px;
      overflow: hidden;
      border: 1px solid gray;
      text-align: center;
      color: white;
      background-size: cover;
      background-position: center;
      list-style: none;
      transform-style: preserve-3d;
    }
    li:nth-child(1) {
      left: 0;
      top: 80px;
      transform-origin: left center;
      transform: translateZ(220px);
      background-image: url("images/1.jpg");
    }
    li:nth-child(2) {
      left: 340px;
      top: 40px;
      transform-origin: center center;
      transform: translateZ(240px);
      background-image: url("images/2.jpg");
    }
    li:nth-child(3) {
      right: 0;
      top: 80px;
      transform-origin: right center;
      transform: translateZ(220px);
      background-image: url("images/3.jpg");
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="showbox"></div>
    <ul>
      <li></li>
      <li></li>
      <li></li>
    </ul>
  </div>
</body>
</html>

第二步:编写CSS样式

在CSS样式中设置li的3D旋转效果,使用transform属性完成,当鼠标进入图片区域时,图片旋转至正面展示。同时,为了让图片呈现空中浮动的效果,我们可以添加hover效果,当鼠标经过图片时,图片向上移动一段距离,就好像图片正在浮动一样。

    li:hover {
      transform: translateZ(150px);
    }
    li:hover .showbox { display:none }
    li:hover::before {
      content: "";
      display: block;
      position: absolute;
      left: -20px;
      top: -20px;
      right: -20px;
      bottom: -20px;
      background-color: rgba(0,0,0,.4);
      z-index: 1;
      pointer-events: none;
    }
    li:hover .showbox,li:hover::before {
      transform: translateZ(200px);
    }

第三步:编写JavaScript代码

在JavaScript中添加鼠标点击事件,当鼠标点击图片时,图片自动旋转到正面展示。可以使用事件代理的方式,为每一个li元素添加事件监听,代码如下:

const lis = document.querySelectorAll('li');
for(let i = 0 ; i < lis.length ; i++) {
  lis[i].onclick = function() {
    for(let j = 0 ; j < lis.length ; j++) {
      lis[j].classList.remove('active');
    }
    this.classList.add('active');
  }
}

示例说明1

在示例中,我们已经创建好了图片展示的HTML布局,下一步要实现的是3D旋转效果。具体做法是在CSS中给li元素设置3D旋转的transform属性,通过设置transform-origin属性可以控制旋转的中心点。需要注意的是,还要设置transform-style属性为preserve-3d,以保留3D空间的形态。

li:nth-child(1) {
  left: 0;
  top: 80px;
  transform-origin: left center;
  transform: translateZ(220px);
  background-image: url("images/1.jpg");
}

其中,li:nth-child(1)表示选择第一个li元素,left和top分别指定该元素的左和上的位置,transform-origin设置旋转中心点在左侧中心,transform设置3D旋转的距离。

示例说明2

在示例中,我们还添加了鼠标hover效果,当鼠标经过图片时,图片向上浮动一段距离,同时背景色也会加深,仿佛图片正在浮动。在CSS中,我们使用:hover伪类来实现鼠标hover效果,同时在li元素上添加了一个伪元素before,用于实现浮动时的背景遮罩层。

li:hover {
  transform: translateZ(150px);
}
li:hover::before {
  content: "";
  display: block;
  position: absolute;
  left: -20px;
  top: -20px;
  right: -20px;
  bottom: -20px;
  background-color: rgba(0,0,0,.4);
  z-index: 1;
  pointer-events: none;
}

其中,hover效果通过transform: translateZ(150px)来实现,背景遮罩层则是使用伪元素before和背景色实现的,通过设置pointer-events:none可以让点击事件穿透该元素。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:HTML+CSS+JavaScript实现图片3D展览的示例代码 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • table表格某一td内容太多导致样式混乱的解决方案

    当一个<td>单元格中的内容过多时,可能会导致整个表格的样式混乱,这通常是因为文本换行、单元格内部宽度过小等原因造成的。下面提供两种解决方案: 方案一:使用CSS属性“word-break” word-break属性可以指定一个元素内部单词如何被断开换行,从而避免单词长到导致单元格内部宽度过大或者被挤出整个表格的情况。可以将该属性添加到<t…

    css 2023年6月10日
    00
  • CSS 的简写【新手必看】

    当我们使用 CSS 为网页添加样式时,会遇到很多重复的样式设置。为了提高编码效率,CSS 提供了简写属性,用于同时设置多个属性值。 什么是 CSS 的简写属性? CSS 的简写属性是将多个属性声明同时设置在一个属性中的方式,如:margin、padding 等。使用简写属性可以让我们更方便地编写 CSS 样式,减少 CSS 代码量,提高代码的可读性和可维护性…

    css 2023年6月9日
    00
  • 对CSS中的Position、Float属性的一些深入探讨

    对CSS中的Position、Float属性的一些深入探讨 Position属性 概述 position 属性用于定义元素的定位方式。它常用于一些特殊的定位需求。这个属性的值有4个:static、relative、absolute和fixed。 static: 默认值,表示元素的定位不会受到影响,元素会遵循正常的文档流(normal flow)。 relat…

    css 2023年6月10日
    00
  • AngularJS中的指令全面解析(必看)

    AngularJS中的指令全面解析(必看) 什么是AngularJS指令 AngularJS指令是一种在HTML标记中被AngularJS框架扫描和识别的特殊标记,用于扩展HTML对于不同业务逻辑和场景的控制能力。 在AngularJS中,指令由属性名、元素名、class名或注释名构成,其中属性名和元素名常被用于指令的标记,而class名和注释名通常用于辅助…

    css 2023年6月9日
    00
  • vscode配置setting.json文件实现eslint自动格式代码

    下面是详细的攻略: 配置 setting.json 文件实现 ESLint 自动格式代码 1. 安装 ESLint 插件 在 VS Code 插件商店中搜索 ESLint 并安装。安装成功后,在 VS Code 左下角会出现 ESLint 的图标,表示已经成功安装。如果没有出现图标,可以按 Ctrl + Shift + P 或 Cmd + Shift + P…

    css 2023年6月10日
    00
  • 基于vue中对鼠标划过事件的处理方式详解

    基于Vue中对鼠标划过事件的处理方式详解 1. 什么是鼠标划过事件? 鼠标划过事件是指光标经过一个元素时触发的事件。在前端开发中,常常使用这个事件来实现网站上的一些交互效果,如下拉菜单的展开、图像的放大等等。 2. 在Vue中如何实现鼠标划过事件? Vue对于鼠标划过事件的处理方式有两种,分别是通过v-on绑定事件和通过@绑定事件。下面我们将分别介绍这两种方…

    css 2023年6月10日
    00
  • 洛克王国法老王怎么得_法老王在哪抓_法老王获得方法图文攻略

    洛克王国法老王怎么得 如果你正在玩《洛克王国》游戏,你可能会遇到获取法老王的任务。那么如何获得法老王呢?下面是详细的攻略: 法老王在哪抓 在游戏中,法老王位于“金字塔”地图中,需要先打败前面的几个BOSS才能到达。具体步骤如下: 进入游戏后选择“世界地图”,在地图中找到“金字塔”地图,点击。 进入“金字塔”地图后,需要先依次打败“骷髅兵”、“撒旦”以及“巨型…

    css 2023年6月10日
    00
  • 网络爬虫案例解析

    网络爬虫案例解析 网络爬虫是一种自动化获取互联网信息的技术,可以帮助我们从互联网上获取大量的有用信息。本文将详细讲解网络爬虫的完整攻略,包含以下步骤: 确定爬取目标 分析目标网站结构 编写网络爬虫程序 存储数据 反爬虫处理 确定爬取目标 在开始编写网络爬虫程序之前,需要确定爬取目标。可以选择一些常见的目标,比如新闻网站、电商平台、社交媒体等。也可以选择一些特…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部