qq_53454002 2021-05-29 16:51 采纳率: 100%
浏览 72
已结题

一个html+CSS+Js的3D动画代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<style>

	*
	{
	box-sizing:border-box;}
	

	.cube-container img
		{
			width:400px;
			height:400px;
		}
	.image-buttons input
		{
		width:100px;
		height:100px;
		}
	.cube-container{
		position:relative;
		width:30rem;
		height:30rem;
		margin:5rem auto 6rem;
		perspective:100rem;
		}
	.cube
	{
		
		position:absolute;
		width:100%;
		height:100%;
		transform-style:preserve-3d;/*transform--style属性指定嵌套元素是怎样在三维空间中呈现。*/
		transition:transform 1s cubic-bezier(0.32,0.05,0.35,1.6);
		
		}
	.cube-face-image
	{
		display:block;
		position:absolute;
		}
	.image-buttons
	{
		display:grid;
		grid-template-columns:repeat(3,auto);/*3列网格平铺,尺寸自适应*/
		grid-gap:1.5rem; /*行与列格子之间的间隙*/
		justify-content:center; /*项目位于容器的正中间*/
		}
		
		.image-buttons input
		{
			border:0.2rem solid #000;}
		
		.image-buttons input:focus
		{
			outline:none;}
		
		.image-1{
			/*正值移向观察者,负值远离观察者*/
			transform:translateZ(15rem)
			}
		.image-2
		{
			transform:rotateX(-180deg)translateZ(15rem)
			}
		
		.image-3
		{
			transform:rotateY(90deg)translateZ(15rem)
			}
		
		.image-4
		{
			transform:rotateY(-90deg)translateZ(15rem)
			}
		.image-5
		{
			transform:rotateX(90deg)translateZ(15rem)
			}
		.image-6
		{
			transform:rotateX(-90deg)translateZ(15rem)
			}
			.cube initial-position
		{
			transform:tanslateZ(-15rem) translateY(-2rem)
			rotateX(-15deg) rotateY(18deg) rotateZ(2deg);
			;
			
			}
		
		.cube.show-image-1
		{
			transform:translateZ(-15rem);
			}
		.cube.show-image-2
		{
			transform:translateZ(-15rem)rotateX(180deg);
			}
		.cube.show-image-3
		{
			transform:translateZ(-15rem)rotateY(-90deg);
			}
		.cube.show-image-4
		{
			transform:translateZ(-15rem)rotateY(90deg);
			}
		.cube.show-image-5
		{
			transform:translateZ(-15rem)rotateX(-90deg);
			}
		.cube.show-image-6
		{
			transform:translateZ(-15rem)rotateX(90deg);
			}
</style>
<body>
	<div class="cube-container">
    	<div class="cube initial-position">
        	
            <img class="cube-face-image image-1" src="img/1.jpg" alt="" />
            <img class="cube-face-image image-2" src="img/2.jpg" alt="" />
            <img class="cube-face-image image-3" src="img/3.jpg" alt="" />
            <img class="cube-face-image image-4" src="img/4.jpg" alt="" />
            <img class="cube-face-image image-5" src="img/5.jpg" alt="" />
            <img class="cube-face-image image-6" src="img/6.jpg" alt="" />
        </div>
 
    </div>
    
    <div class="image-buttons">
    	<input type="image" class="show-image-1" src="img/1.jpg" />
        <input type="image" class="show-image-2" src="img/2.jpg" />
        <input type="image" class="show-image-3" src="img/3.jpg" />
        <input type="image" class="show-image-4" src="img/4.jpg" />
        <input type="image" class="show-image-5" src="img/5.jpg" />
        <input type="image" class="show-image-6" src="img/6.jpg" />
    </div>
<script>
"use strict";
//DOM load event
window.addEventListener("DOMContentLoaded", function () {
  var cube = document.querySelector(".cube"),
      imageButtons = document.querySelector(".image-buttons");
  var cubeImageClass = cube.classList[1]; //Add click event listener to image buttons container
  imageButtons.addEventListener("click", function (e) {
    //Get node type and class value of clicked element
    var targetNode = e.target.nodeName,
        targetClass = e.target.className; //Check if image input has been clicked and isn't the currently shown image
    if (targetNode === "INPUT" && targetClass !== cubeImageClass) {
      console.log("Show Image: ".concat(targetClass.charAt(11))); //Replace previous cube image class with new class
      cube.classList.replace(cubeImageClass, targetClass); //Update cube image class variable with new class
      cubeImageClass = targetClass;
    }
  });
});
</script>
</body>
</html>

代码中间有几段代码我看不懂意思 求大佬帮忙解释解释

.cube.show-image-1
		{
			transform:translateZ(-15rem);
			}
		.cube.show-image-2
		{
			transform:translateZ(-15rem)rotateX(180deg);
			}
		.cube.show-image-3
		{
			transform:translateZ(-15rem)rotateY(-90deg);
			}
		.cube.show-image-4
		{
			transform:translateZ(-15rem)rotateY(90deg);
			}
		.cube.show-image-5
		{
			transform:translateZ(-15rem)rotateX(-90deg);
			}
		.cube.show-image-6
		{
			transform:translateZ(-15rem)rotateX(90deg);
			}
<script>
"use strict";
//DOM load event
window.addEventListener("DOMContentLoaded", function () {
  var cube = document.querySelector(".cube"),
      imageButtons = document.querySelector(".image-buttons");
  var cubeImageClass = cube.classList[1]; //Add click event listener to image buttons container
  imageButtons.addEventListener("click", function (e) {
    //Get node type and class value of clicked element
    var targetNode = e.target.nodeName,
        targetClass = e.target.className; //Check if image input has been clicked and isn't the currently shown image
    if (targetNode === "INPUT" && targetClass !== cubeImageClass) {
      console.log("Show Image: ".concat(targetClass.charAt(11))); //Replace previous cube image class with new class
      cube.classList.replace(cubeImageClass, targetClass); //Update cube image class variable with new class
      cubeImageClass = targetClass;
    }
  });
});
</script>

为什么定义两个类.cube.show-image-6在一块 以及js各句代码什么用处

运行结果

  • 写回答

3条回答 默认 最新

  • CSDN专家-showbo 2021-05-29 17:06
    关注

    .cube.show-image-6连在一起,则2个样式需要在一个dom对象才会有效,如下面的,单独加一个无效

    <div class="cube show-image-6">

    
    
            window.addEventListener("DOMContentLoaded", function () {//添加DOMContentLoaded事件
                var cube = document.querySelector(".cube"),//获取样式为cube的第一个出现dom对象
                    imageButtons = document.querySelector(".image-buttons");//获取样式为image-buttons的第一个出现的dom对象
                var cubeImageClass = cube.classList[1]; //获取cube dom对象的样式表中的第2个样式,classList存储加到这个样式上的所有样式,为DOMTokenList,这里的值为initial-position
    
                imageButtons.addEventListener("click", function (e) {//给按钮添加click事件
                    //Get node type and class value of clicked element
                    var targetNode = e.target.nodeName,//e.target为当前点击的dom对象,如果点击的input就是input,如果非input就是imageButtons对象,等价于this,this为imageButtons,注意区分这2点
                        targetClass = e.target.className; //点击的dom
                    if (targetNode === "INPUT" && targetClass !== cubeImageClass) {//这里判断点击的按钮样式不是initial-position或者上次点击的按钮的样式时执行下面的代码
                        console.log("Show Image: ".concat(targetClass.charAt(11))); //Replace previous cube image class with new class  //获取点击的按钮的数字部分,charAt获取字符串指定位置的字符
                        cube.classList.replace(cubeImageClass, targetClass); //Update cube image class variable with new class  这里切换样式,替换掉初始化样式或者上次点击的按钮样式为当前的
                        cubeImageClass = targetClass;//更换变量值为当前点击的按钮的样式,这样点击击相同的按钮时,if判断不是同一才会切换样式
                    }
                });
            });
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月31日
  • 已采纳回答 3月23日

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序