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

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日

相关文章

  • CSS3中Animation动画属性用法详解

    针对“CSS3中Animation动画属性用法详解”,我将给出以下内容: CSS3中Animation动画属性用法详解 介绍 CSS3中的Animation动画属性可以帮助我们实现更加生动的页面动效。 Animation动画属性包含了很多可用的子属性,如 Timing Function、Iteration Count、Direction、Delay、Dura…

    css 2023年6月9日
    00
  • Bootstrap CSS组件之输入框组

    下面就为大家详细讲解Bootstrap CSS组件之输入框组的完整攻略。 Bootstrap CSS组件之输入框组 在网页的开发中,输入框组(Input Group)是非常常见的一个组件。Bootstrap提供的输入框组组件可以帮助我们方便地创建出各种样式的输入框组,从而提高开发效率。 基本结构 Bootstrap输入框组组件的基本结构如下(注意:下面的代码…

    css 2023年6月10日
    00
  • jQuery 表格隔行变色代码[修正注释版]

    当我们需要在网页中展示数据表格时,隔行变色可以更直观地展示不同的数据行。使用jQuery,我们可以很方便地实现表格隔行变色的效果。下面我们来详细讲解“jQuery 表格隔行变色代码[修正注释版]”的完整攻略。 1. 准备工作 首先要准备好需要隔行变色的数据表格,以及引入jQuery库。 <!DOCTYPE html> <html> &…

    css 2023年6月9日
    00
  • 关于图片与文字垂直方向不对齐问题的解决方法

    当网站中同时存在图片和文字时,经常会遇到图片与文字垂直方向不对齐的问题,这不仅影响美观度,也会影响用户的体验。下面,我们来讲解如何解决这一问题。 问题的原因 首先要了解,这种问题的原因通常是因为图片和文字所在的盒子(box)使用了不同的属性,导致文本所在的行盒(line-box)和图像所在的行盒不在同一水平线上。 常见的有以下两种情况: 图片设置了 vert…

    css 2023年6月10日
    00
  • IE9+已经不对document.createElement向下兼容的解决方法

    IE9+不再对document.createElement向下兼容,主要原因是因为IE9以下的版本存在一些安全隐患。因此,我们需要寻找一些解决方法来兼容IE9+。 解决方法 1. 使用createElementNS方法 createElementNS(namespaceURI, qualifiedName)方法是createElement方法的一个变体,它可…

    css 2023年6月10日
    00
  • js实现仿百度瀑布流的方法

    下面是实现仿百度瀑布流的方法的完整攻略,主要包括以下步骤: 步骤一:添加HTML结构和CSS样式 首先需要在HTML中添加列表结构,以及定义每个元素的CSS样式。通常瀑布流等容器都是由 div 元素嵌套而成: <div class="waterfall"> <div class="item">&…

    css 2023年6月11日
    00
  • vue动画之点击按钮往上渐渐显示出来的实例

    下面就是详细讲解“vue动画之点击按钮往上渐渐显示出来的实例”的完整攻略: 1. 理解基本动画原理 在 Vue 中实现动画可以使用 Vue 提供的 transition 组件。Vue 的过渡效果依赖于 CSS3 过渡和动画,我们可以通过添加一些 CSS3 的类来定义动画效果,例如 fade-enter、fade-enter-active、fade-leave…

    css 2023年6月10日
    00
  • jquery实现可自动判断位置的弹出层效果代码

    下面就来详细讲解如何使用jquery实现可自动判断位置的弹出层效果。 1. 准备工作 首先,在你的HTML文档中引入jQuery库,以便我们可以使用jQuery函数。 <!–引入 jQuery 库–> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jqu…

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