• 创建一个具有背景轮播和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 Worldspan>
    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文档通常由, , , 和 等标签组成。 声明定义了文档类型, 标签包含整个文档内容, 标签包含文档的元信息,如标题和样式表链接,而 标签包含网页内容。
    1. html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>My Personal Cardtitle>
    6. head>
    7. <body>
    8. body>
    9. html>

    HTML 元素: 标签内,我们可以使用各种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卡片翻转效果的个人名片网页。这不仅仅是一个有趣的项目,还是学习前端开发的绝佳方式。希望这篇博客对您有所帮助,如果您有任何问题或建议,请随时留言。

     🌌点击下方个人名片,交流会更方便哦~(欢迎到博主主页加入我们的 CodeCrafters联盟一起交流学习↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓   

  • 相关阅读:
    Linux —— 网络基础(一)
    LSTMviz配置
    应用ceph块存储(ceph-13.2.10)
    【微软漏洞分析】MS10-015 Windows 内核异常处理程序漏洞(CVE-2010-0232)
    leetcode 671. 二叉树中第二小的节点(java)
    paramiko 3
    Word控件Spire.Doc 【页面设置】教程(10) ;通过 Spire.Doc 在 Word 文档的不同部分添加页码
    JavaScript学习总结(对象)
    ABP微服务系列学习-搭建自己的微服务结构(一)
    资源道具化
  • 原文地址:https://blog.csdn.net/VLOKL/article/details/134084979