html和css3 js 3D 相框动画翻转效果cid1084-网页前端设计

html and css

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <style>
  7. /*
  8. Full-page view:
  9. https://codepen.io/GeorgePark/full/gegavO/
  10. */
  11. @import url(https://fonts.googleapis.com/css?family=Montserrat:500);
  12. :root {
  13. /* Base font size */
  14. font-size: 10px;
  15. /* Border color variable */
  16. --border-color: #f5f3f1;
  17. }
  18. * {
  19. box-sizing: border-box;
  20. }
  21. body {
  22. font-family: "Montserrat", Arial, sans-serif;
  23. font-weight: 500;
  24. line-height: 1.5;
  25. text-align: center;
  26. min-height: 100vh;
  27. padding: 4rem 2rem;
  28. color: #fafafa;
  29. }
  30. h1 {
  31. font-size: 4rem;
  32. }
  33. h2 {
  34. font-size: 2rem;
  35. margin-bottom: 2.5rem;
  36. }
  37. .cube-container {
  38. position: relative;
  39. width: 30rem;
  40. height: 30rem;
  41. margin: 5rem auto 6rem;
  42. perspective: 100rem;
  43. }
  44. .cube {
  45. position: absolute;
  46. width: 100%;
  47. height: 100%;
  48. transform-style: preserve-3d;
  49. transition: transform 1s cubic-bezier(0.32, 0.05, 0.35, 1.6);
  50. }
  51. .cube-face-image {
  52. display: block;
  53. position: absolute;
  54. }
  55. .image-buttons {
  56. display: grid;
  57. grid-template-columns: repeat(3, auto);
  58. grid-gap: 1.5rem;
  59. justify-content: center;
  60. }
  61. .image-buttons input {
  62. border: 0.2rem solid #fafafa;
  63. }
  64. .image-buttons input:focus {
  65. outline: none;
  66. }
  67. /* Transform images to create cube */
  68. .image-1 {
  69. transform: translateZ(15rem);
  70. }
  71. .image-2 {
  72. transform: rotateX(-180deg) translateZ(15rem);
  73. }
  74. .image-3 {
  75. transform: rotateY(90deg) translateZ(15rem);
  76. }
  77. .image-4 {
  78. transform: rotateY(-90deg) translateZ(15rem);
  79. }
  80. .image-5 {
  81. transform: rotateX(90deg) translateZ(15rem);
  82. }
  83. .image-6 {
  84. transform: rotateX(-90deg) translateZ(15rem);
  85. }
  86. /* Transform cube to show correct image */
  87. .cube.initial-position {
  88. transform: translateZ(-15rem) translateY(-2rem) rotateX(-15deg) rotateY(18deg) rotateZ(2deg);
  89. }
  90. .cube.show-image-1 {
  91. transform: translateZ(-15rem);
  92. }
  93. .cube.show-image-2 {
  94. transform: translateZ(-15rem) rotateX(180deg);
  95. }
  96. .cube.show-image-3 {
  97. transform: translateZ(-15rem) rotateY(-90deg);
  98. }
  99. .cube.show-image-4 {
  100. transform: translateZ(-15rem) rotateY(90deg);
  101. }
  102. .cube.show-image-5 {
  103. transform: translateZ(-15rem) rotateX(-90deg);
  104. }
  105. .cube.show-image-6 {
  106. transform: translateZ(-15rem) rotateX(90deg);
  107. }
  108. </style>
  109. </head>
  110. <body>
  111. <div class="cube-container">
  112. <div class="cube initial-position">
  113. <img class="cube-face-image image-1" src="one.jpg">
  114. <img class="cube-face-image image-2" src="two.jpg">
  115. <img class="cube-face-image image-3" src="three.jpg">
  116. <img class="cube-face-image image-4" src="four.jpg">
  117. <img class="cube-face-image image-5" src="five.jpg">
  118. <img class="cube-face-image image-6" src="six.jpg">
  119. </div>
  120. </div>
  121. <div class="image-buttons">
  122. <input type="image" class="show-image-1" src="1.jpg"></input>
  123. <input type="image" class="show-image-2" src="2.jpg"></input>
  124. <input type="image" class="show-image-3" src="3.jpg"></input>
  125. <input type="image" class="show-image-4" src="4.jpg"></input>
  126. <input type="image" class="show-image-5" src="5.jpg"></input>
  127. <input type="image" class="show-image-6" src="6.jpg"></input>
  128. </div>
  129. <script>
  130. "use strict";
  131. //DOM load event
  132. window.addEventListener("DOMContentLoaded", function () {
  133. var cube = document.querySelector(".cube"),
  134. imageButtons = document.querySelector(".image-buttons");
  135. var cubeImageClass = cube.classList[1]; //Add click event listener to image buttons container
  136. imageButtons.addEventListener("click", function (e) {
  137. //Get node type and class value of clicked element
  138. var targetNode = e.target.nodeName,
  139. targetClass = e.target.className; //Check if image input has been clicked and isn't the currently shown image
  140. if (targetNode === "INPUT" && targetClass !== cubeImageClass) {
  141. console.log("Show Image: ".concat(targetClass.charAt(11))); //Replace previous cube image class with new class
  142. cube.classList.replace(cubeImageClass, targetClass); //Update cube image class variable with new class
  143. cubeImageClass = targetClass;
  144. }
  145. });
  146. });
  147. </script>
  148. </body>
  149. </html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    /*

Full-page view:

https://codepen.io/GeorgePark/full/gegavO/

*/

@import url(https://fonts.googleapis.com/css?family=Montserrat:500);

:root {
  /* Base font size */
  font-size: 10px;

  /* Border color variable */
  --border-color: #f5f3f1;
}

* {
  box-sizing: border-box;
}

body {
  font-family: "Montserrat", Arial, sans-serif;
  font-weight: 500;
  line-height: 1.5;
  text-align: center;
  min-height: 100vh;
  padding: 4rem 2rem;
  color: #fafafa;
     
 
}

h1 {
  font-size: 4rem;
}

h2 {
  font-size: 2rem;
  margin-bottom: 2.5rem;
}

.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;
  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);
  grid-gap: 1.5rem;
  justify-content: center;
}

.image-buttons input {
  border: 0.2rem solid #fafafa;
     
}

.image-buttons input:focus {
  outline: none;
  
}

/* Transform images to create cube */

.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);
}

/* Transform cube to show correct image */

.cube.initial-position {
  transform: translateZ(-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>
</head>
<body>
    

<div class="cube-container">

  <div class="cube initial-position">

    <img class="cube-face-image image-1" src="one.jpg">
    
    <img class="cube-face-image image-2" src="two.jpg">
    
    <img class="cube-face-image image-3" src="three.jpg">
    
    <img class="cube-face-image image-4" src="four.jpg">
    
    <img class="cube-face-image image-5" src="five.jpg">
    
    <img class="cube-face-image image-6" src="six.jpg">

  </div>

</div>

 

<div class="image-buttons">

  <input type="image" class="show-image-1" src="1.jpg"></input>

  <input type="image" class="show-image-2" src="2.jpg"></input>

  <input type="image" class="show-image-3" src="3.jpg"></input>

  <input type="image" class="show-image-4" src="4.jpg"></input>

  <input type="image" class="show-image-5" src="5.jpg"></input>

  <input type="image" class="show-image-6" src="6.jpg"></input>

</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
下载数:96人次, 文件大小: 343.8 KB, 上传日期: 2020年-11 月-25日

公众号回复:gcode  获取解压密码

qrcode_for_gh_6ea2c28a1709_258 (1)

2,850 人查阅

类似文章