当前位置:   article > 正文

创建一个具有背景轮播和3D卡片翻转效果的个人名片网页_轮播卡片网页

轮播卡片网页

目录

项目展示

图片展示

前言

项目目标

项目目标

步骤 3:CSS 样式

步骤 4:JavaScript 动画

项目源码

知识点介绍 (大佬请绕道)

HTML 结构的构建

2. CSS 样式的设计

3. JavaScript 动画的实现

4. 背景图轮播的逻辑

5. CSS 3D变换的使用

结语


项目展示

点击下面链接(第一次打开可能会有些慢)

点击进入个人名片(手机版)

图片展示

前言

在本篇博客中,我们将学习如何创建一个具有多个功能的个人名片网页。这个项目包括背景轮播效果和3D卡片翻转效果,适合前端开发初学者。

项目目标

在开始之前,我们先明确一下这个项目的主要目标:

  • 创建一个响应式的网页,可以适应不同屏幕大小。
  • 实现一个背景图像轮播效果,每隔一段时间切换一张背景图。
  • 使用CSS 3D变换来创建一个具有多个面的卡片效果。

项目目标

在开始之前,我们先明确一下这个项目的主要目标:

  • 创建一个响应式的网页,可以适应不同屏幕大小。
  • 实现一个背景图像轮播效果,每隔一段时间切换一张背景图。
  • 使用CSS 3D变换来创建一个具有多个面的卡片效果。
  1. <div id="wrapper">
  2. <div class="btn"></div>
  3. <input class="range" type="range" min="0" max="5" step="1" value="0" oninput="change()" onchange="change()" />
  4. <div class="card">
  5. <div class="cube show">
  6. <div class="is_top">
  7. <span class="avater"></span>
  8. <span class="username">命运之光</span>
  9. <span class="content">其实我的梦想是拯救世界</span>
  10. </div>
  11. <div class="is_bottom">
  12. <span class="title">个人介绍</span>
  13. <span class="content">你好,我是命运之光,一个热爱生活和技术的程序员。我喜欢挑战自己,不断学习新知识和技能。除了编程,我还喜欢旅行、阅读和尝试新鲜事物。我的座右铭是“活出自己想要的样子”,我相信只要我们敢于追求自己的梦想,就能够创造属于自己的精彩人生。
  14. </span>
  15. </div>
  16. <div class="is_left">
  17. <span class="title">最近在看(德芙)</span>
  18. <span class="img" style="background:url(222.png)"></span>
  19. </div>
  20. <div class="is_right">
  21. <span class="title">最近在玩(原神)</span>
  22. <span class="img" style="background:url(https://img1.baidu.com/it/u=2692659307,1253870257&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=590)"></span>
  23. </div>
  24. <div class="is_front">
  25. <span class="title">兴趣爱好</span>
  26. <span class="hobby">
  27. <img src="https://pic.imgdb.cn/item/63c2d285be43e0d30eeb5146.png" />
  28. <img src="https://pic.imgdb.cn/item/63c2d285be43e0d30eeb513b.png" />
  29. <img src="https://pic.imgdb.cn/item/63c2d285be43e0d30eeb512d.png" />
  30. <img src="https://pic.imgdb.cn/item/63c2d285be43e0d30eeb5122.png" />
  31. </span>
  32. </div>
  33. <div class="is_back">
  34. <span class="title">Hello World</span>
  35. <span class="img" style="background:url(https://pic.imgdb.cn/item/63c2d710be43e0d30ef68b9c.gif)"></span>
  36. </div>
  37. </div>
  38. </div>
  39. </div>
步骤 3:CSS 样式

使用CSS来设计网页的样式,包括背景图、按钮、卡片等的样式。

  1. body {
  2. margin: 0;
  3. padding: 0;
  4. background-size: cover;
  5. background-position: center;
  6. background-image: url('bk1.jpg'); /* 使用 bk1.jpg 作为背景图像 */
  7. height: 100vh;
  8. display: flex;
  9. align-items: center;
  10. justify-content: center;
  11. transition: background-image 1s ease-in-out;
  12. }
  13. #wrapper {
  14. width: 590px; /* 设置容器宽度,可以根据需要调整 */
  15. height: 960px; /* 设置容器高度,可以根据需要调整 */
  16. background-size: cover; /* 设置背景图像适应屏幕,保持纵横比 */
  17. background-position: -55px;
  18. transform-origin: 0 0;
  19. position: absolute;
  20. left: 50%;
  21. transform: translateX(-50%); /* 将容器水平居中 */
  22. margin-top: 450px; /* 增加上边距以垂直居中 */
  23. }
  24. .range{
  25. position: absolute;
  26. width: 300px;
  27. left: calc(50% - 150px);
  28. bottom: 190px;
  29. display: none;
  30. }
  31. .btn {
  32. cursor: pointer;
  33. position: absolute;
  34. left: calc(50% - 50px);
  35. bottom: 150px;
  36. width: 100px;
  37. height: 100px;
  38. background: url(555.png)
  39. no-repeat center/cover;
  40. /* 其他样式 */
  41. background: url(555.png) no-repeat center/cover;
  42. opacity: 0.8; /* 添加这一行设置透明度为0.6 */
  43. }
  44. .btn::after {
  45. content: "";
  46. width: 100px;
  47. height: 100px;
  48. position: absolute;
  49. background: url(555.png)
  50. no-repeat center/cover;
  51. transform-origin: center;
  52. transform: scale(1);
  53. animation: scale 3s infinite;
  54. }
  55. @keyframes scale {
  56. 0% {
  57. transform: scale(0.4);
  58. opacity: 1;
  59. }
  60. 50% {
  61. transform: scale(1);
  62. opacity: 0.4;
  63. }
  64. 100% {
  65. transform: scale(1.4);
  66. opacity: 0;
  67. }
  68. }
  69. .btn::before {
  70. font-size:14px;
  71. text-align: center;
  72. color:#ccc;
  73. content:"人生苦短,一天当作两天卷";
  74. height:20px;
  75. width:180px;
  76. background-color:#fff;
  77. position:absolute;
  78. left:-40px;
  79. top: -30px;
  80. border-radius:10px;
  81. opacity:0;
  82. transition:all .5s;
  83. }
  84. .btn:hover:before {
  85. opacity:1;
  86. transition:all 1s;
  87. }
  88. .card{
  89. width: 300px;
  90. height:300px;
  91. perspective: 1000px;
  92. margin: 200px auto;
  93. opacity: 0;
  94. transition: all 1s ease-in;
  95. }
  96. .cube{
  97. width:100%;
  98. height: 100%;
  99. transform-style: preserve-3d;
  100. transition: transform ease 1s;
  101. }
  102. .cube div{
  103. border: 2px solid #5968be;
  104. width: 100%;
  105. height: 100%;
  106. position: absolute;
  107. background-color: rgba(255, 161, 161, 0.5);
  108. background-size: 100% 100%;
  109. }
  110. .is_top {
  111. background: red;
  112. transform: rotateX(90deg) translateZ(150px);
  113. }
  114. .is_bottom {
  115. background: blue;
  116. transform: rotateX(-90deg) translateZ(150px);
  117. }
  118. .is_left {
  119. background: green;
  120. transform: rotateY(-90deg) translateZ(150px);
  121. }
  122. .is_right {
  123. background: pink;
  124. transform: rotateY(90deg) translateZ(150px);
  125. }
  126. .is_front {
  127. background: yellow;
  128. transform: translateZ(150px);
  129. }
  130. .is_back {
  131. background: orange;
  132. transform: rotateX(-180deg) translateZ(150px);
  133. }
  134. .title{
  135. color: #fff;
  136. font-size: 22px;
  137. display: block;
  138. margin-top: 15px;
  139. margin-bottom: 20px;
  140. text-align: center;
  141. }
  142. .title::before{
  143. display: block;
  144. position: absolute;
  145. left:118px;
  146. top: 50px;
  147. content: '';
  148. width: 70px;
  149. height: 3px;
  150. background-color: #fff;
  151. }
  152. .content{
  153. display: block;
  154. width: 100%;
  155. box-sizing: border-box;
  156. padding: 0 30px;
  157. text-align:center;
  158. font-size: 12px;
  159. color: #eee;
  160. }
  161. .img{
  162. display: block;
  163. margin: 0 auto;
  164. width: 200px;
  165. height: 200px;
  166. background-size: 100% 100% !important;
  167. }
  168. .avater{
  169. width: 150px;
  170. height: 150px;
  171. margin: 40px auto 10px;
  172. border-radius: 50%;
  173. display: block;
  174. background:url(666.jpg);
  175. background-size: 100%;
  176. border: 5px solid #fff;
  177. }
  178. .username{
  179. display: block;
  180. text-align:center;
  181. font-size: 30px;
  182. color: #fff;
  183. margin-bottom: 10px;
  184. }
  185. .hobby{
  186. display: flex;
  187. margin: 60px auto 0;
  188. width: 200px;
  189. height: 200px;
  190. }
  191. .hobby img{
  192. width: 50px;
  193. height: 50px;
  194. }
步骤 4:JavaScript 动画

通过JavaScript代码来实现背景轮播效果和3D卡片翻转效果。

  1. // 背景图像数组
  2. const backgroundImages = ['bk1.jpg', 'bk2.jpg', 'bk3.jpg', 'bk4.jpg'];
  3. let currentIndex = 0; // 当前背景图像的索引
  4. // 函数用于更改背景图像
  5. function changeBackgroundImage() {
  6. document.body.style.backgroundImage = `url('${backgroundImages[currentIndex]}')`;
  7. currentIndex = (currentIndex + 1) % backgroundImages.length;
  8. }
  9. // 初始更改背景图像
  10. changeBackgroundImage();
  11. // 设置定时器,每4秒更改一次背景图像
  12. setInterval(changeBackgroundImage, 4000);
  13. ScreenAuto();
  14. window.onresize = () => ScreenAuto();
  15. function ScreenAuto() {
  16. const scale = document.documentElement.clientHeight / 960;
  17. document.querySelector(
  18. "#wrapper"
  19. ).style.transform = `scale(${scale}) translate(-50%)`;
  20. }
  21. let rotateList = [
  22. "rotateX(-90deg)",
  23. "rotateX(90deg)",
  24. "rotateY(90deg)",
  25. "rotateY(-90deg)",
  26. "",
  27. "rotateX(-180deg)",
  28. ];
  29. let range = document.getElementsByClassName("range")[0];
  30. let show = document.getElementsByClassName("show")[0];
  31. let btn = document.getElementsByClassName("btn")[0];
  32. let card= document.getElementsByClassName("card")[0];
  33. btn.addEventListener('click',()=>{
  34. btn.style.display = 'none'
  35. range.style.display = 'block'
  36. card.style.opacity = '1'
  37. show.style.transform = rotateList[0];
  38. })
  39. function change() {
  40. show.style.transform = rotateList[range.value];
  41. }

项目源码

您可以在GitHub上找到完整的项目源码,点击这里查看。

没有GitHub也没关系,我已经将所有代码都放在上面的文章里面了,直接用就行,想换图片的也可以找自己喜欢的图片加以改动。

知识点介绍 (大佬请绕道)

在这个项目中,我们涉及了许多前端开发的核心知识点,包括:

  • HTML 结构的构建
  • CSS 样式的设计
  • JavaScript 动画的实现
  • 背景图轮播的逻辑
  • CSS 3D变换的使用

HTML 结构的构建

HTML(HyperText Markup Language)是用于构建网页结构的标记语言。在我们的项目中,HTML被用于定义页面的内容和结构。

  • HTML 文档结构: HTML文档通常由<!DOCTYPE>, <html>, <head>, 和 <body>等标签组成。<!DOCTYPE> 声明定义了文档类型,<html> 标签包含整个文档内容,<head> 标签包含文档的元信息,如标题和样式表链接,而 <body> 标签包含网页内容。
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>My Personal Card</title>
  6. </head>
  7. <body>
  8. <!-- 内容将在这里插入 -->
  9. </body>
  10. </html>

HTML 元素:<body> 标签内,我们可以使用各种HTML元素来创建网页的内容,如标题、段落、图像、链接等。

  1. <h1>欢迎来到我的个人名片</h1>
  2. <p>我是一个前端开发者。</p>
  3. <img src="my-photo.jpg" alt="我的照片">
  4. <a href="https://example.com">查看我的项目</a>

2. CSS 样式的设计

CSS(Cascading Style Sheets)用于定义网页的样式和布局。在我们的项目中,CSS被用于美化和布局网页元素。

  • 样式选择器: CSS通过选择器来选择要应用样式的元素。例如,要选择所有段落元素,可以使用 p 选择器。
  1. p {
  2. color: #333; /* 文字颜色 */
  3. font-size: 16px; /* 字体大小 */
  4. margin: 10px 0; /* 外边距 */
  5. }

 样式属性: CSS属性定义了元素的外观,如颜色、字体、间距等。

  1. h1 {
  2. color: #FF5733; /* 标题文字颜色 */
  3. font-size: 24px; /* 标题字体大小 */
  4. }

布局和定位: CSS还可以用于创建布局和定位元素,如使用 marginpadding 控制元素之间的间距,或使用 positionfloat 属性控制元素的位置。

  1. #my-photo {
  2. width: 150px;
  3. height: 150px;
  4. border-radius: 50%; /* 圆形图片 */
  5. }

3. JavaScript 动画的实现

JavaScript是一种编程语言,可以用于为网页添加交互性和动画效果。在我们的项目中,JavaScript用于实现背景图像轮播和卡片翻转效果。

  • DOM 操作: JavaScript可以用于选择、修改和操作HTML元素,例如使用 document.getElementById() 来选择特定的元素。
  1. const myPhoto = document.getElementById('my-photo');
  2. myPhoto.src = 'new-photo.jpg';

定时器: JavaScript的 setTimeout()setInterval() 函数可以用于在一段时间后执行代码,实现动画效果。

  1. function changeBackground() {
  2. // 更改背景图像的代码
  3. }
  4. setInterval(changeBackground, 4000);

4. 背景图轮播的逻辑

背景图像轮播是一种常见的网页效果,通过定时更改background-image属性来实现。每隔一段时间,我们更改背景图像的URL,从而创造出图像轮播的效果。

  1. const backgroundImages = ['image1.jpg', 'image2.jpg', 'image3.jpg'];
  2. let currentIndex = 0;
  3. function changeBackgroundImage() {
  4. document.body.style.backgroundImage = `url('${backgroundImages[currentIndex]}')`;
  5. currentIndex = (currentIndex + 1) % backgroundImages.length;
  6. }
  7. setInterval(changeBackgroundImage, 4000);

5. CSS 3D变换的使用

CSS 3D变换允许元素在3D空间中旋转和移动,创建出令人印象深刻的3D效果。

  • transform 属性: 使用 transform 属性可以将元素移动、旋转和缩放。
  1. .cube {
  2. width: 100px;
  3. height: 100px;
  4. transform: rotateX(45deg) rotateY(45deg);
  5. }

透视性: 使用 perspective 属性可以设置3D变换的观看距离,影响3D效果的强弱。

  1. .card {
  2. perspective: 1000px;
  3. }

3D变换: 使用 rotateX(), rotateY(), rotateZ(), translateX(), translateY()等函数来进行3D变换。

  1. .is_top {
  2. transform: rotateX(90deg) translateZ(100px);
  3. }

结语

通过这个项目,我们学习了如何创建一个具有背景轮播和3D卡片翻转效果的个人名片网页。这不仅仅是一个有趣的项目,还是学习前端开发的绝佳方式。希望这篇博客对您有所帮助,如果您有任何问题或建议,请随时留言。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/817725
推荐阅读
相关标签