前端训练小项目——视觉打击卡片

锦通  金牌会员 | 2024-7-11 06:06:13 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 893|帖子 893|积分 2679

        媒介: 媒介:在学习完HTML和CSS之后,我们就可以开始做一些小项目了,本篇文章所讲的小项目为——视觉打击卡片

   

  ✨✨✨这里是秋刀鱼不做梦的BLOG
  ✨✨✨想要相识更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客
  先让我们看一下效果:


        那么我们怎样去实现这样的小案例呢?在下文中我们对每一段紧张的代码都举行相识释,读者可以根据解释对代码举行理解。

1.HTML代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <!-- 设置文档使用的字符编码为UTF-8 -->
  5.     <meta charset="UTF-8">
  6.     <!-- 响应式设计,页面宽度等于设备宽度,初始缩放为1.0 -->
  7.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  8.     <!-- 网页标题 -->
  9.     <title>zjy</title>
  10.     <!-- 引入样式表视觉冲击卡片.css -->
  11.     <link rel="stylesheet" href="./视觉冲击卡片.css">
  12. </head>
  13. <body>
  14.     <!-- 网页内容部分 -->
  15.     <div class="shell">
  16.         <!-- 第一个卡片 -->
  17.         <div class="card">
  18.             <!-- 卡片内部包裹层 -->
  19.             <div class="wrapper">
  20.                 <!-- 卡片封面图片 -->
  21.                 <img src="./image/01.png" alt="" class="cover-image">
  22.             </div>
  23.             <!-- 卡片标题文本 -->
  24.             <img src="./image/text-1.png" alt="" class="title">
  25.             <!-- 卡片角色图片 -->
  26.             <img src="./image/02.png" alt="" class="character">
  27.         </div>
  28.         <!-- 第二个卡片 -->
  29.         <div class="card">
  30.             <!-- 卡片内部包裹层 -->
  31.             <div class="wrapper">
  32.                 <!-- 卡片封面图片 -->
  33.                 <img src="./image/03.png" alt="" class="cover-image">
  34.             </div>
  35.             <!-- 卡片标题文本 -->
  36.             <img src="./image/text-2.png" alt="" class="title">
  37.             <!-- 卡片角色图片 -->
  38.             <img src="./image/04.png" alt="" class="character">
  39.         </div>
  40.     </div>
  41. </body>
  42. </html>
复制代码
        这段HTML代码是一个基本的网页模板,展示了两个卡片(card),每个卡片包含一个封面图片(cover-image)、一个标题文本(title)、以及一个脚色图片(character)。解释部门解释了每个标签的作用和功能。

2.CSS代码

  1. /* 通用样式重置 */
  2. * {
  3.     padding: 0;
  4.     margin: 0;
  5.     box-sizing: border-box;
  6. }
  7. /* 设置整个页面的样式 */
  8. body {
  9.     width: 100vw; /* 页面宽度等于视口宽度 */
  10.     height: 100vh; /* 页面高度等于视口高度 */
  11.     display: flex; /* 使用flex布局 */
  12.     justify-content: center; /* 水平居中 */
  13.     align-items: center; /* 垂直居中 */
  14.     background-image: linear-gradient(to top, #fbc2eb 0%, #a6c1ee 100%); /* 设置背景为线性渐变色 */
  15. }
  16. /* 外层容器样式 */
  17. .shell {
  18.     display: flex; /* 使用flex布局 */
  19.     justify-content: center; /* 水平居中 */
  20.     align-items: center; /* 垂直居中 */
  21. }
  22. /* 卡片样式 */
  23. .card {
  24.     width: 270px; /* 卡片宽度 */
  25.     height: 545px; /* 卡片高度 */
  26.     position: relative; /* 相对定位,用于内部绝对定位元素的参考 */
  27.     display: flex; /* 使用flex布局 */
  28.     justify-content: center; /* 水平居中 */
  29.     align-items: center; /* 垂直居中 */
  30.     padding: 0 25px; /* 内边距 */
  31.     perspective: 2500px; /* 设置透视效果的观察距离 */
  32.     transition: all 0.5s; /* 所有属性变化过渡效果时长为0.5秒 */
  33.     margin: 0 100px; /* 外边距,控制卡片之间的间距 */
  34. }
  35. /* 卡片内部包裹层样式 */
  36. .wrapper {
  37.     transition: all 0.7s; /* 所有属性变化过渡效果时长为0.7秒 */
  38.     position: absolute; /* 绝对定位,相对于父级卡片 */
  39.     width: 100%; /* 宽度占满父级卡片 */
  40.     z-index: -1; /* 层级设置为低于卡片,用于显示卡片上的其他内容 */
  41. }
  42. /* 卡片封面图片样式 */
  43. .cover-image {
  44.     width: 100%; /* 图片宽度占满父级容器 */
  45.     /* 可选:如果取消注释,可能导致图片拉伸变形 */
  46.     /* height: 100%; */
  47. }
  48. /* 卡片标题文本样式 */
  49. .title {
  50.     width: 100%; /* 标题文本宽度占满父级容器 */
  51.     transition: transform 0.7s; /* transform属性变化过渡效果时长为0.7秒 */
  52. }
  53. /* 卡片角色图片样式 */
  54. .character {
  55.     width: 100%; /* 图片宽度占满父级容器 */
  56.     opacity: 0; /* 初始设置为透明 */
  57.     transition: all 0.7s; /* 所有属性变化过渡效果时长为0.7秒 */
  58.     position: absolute; /* 绝对定位,相对于父级卡片 */
  59.     z-index: -1; /* 层级设置为低于卡片,用于显示卡片上的其他内容 */
  60. }
  61. /* 鼠标悬停时,内部包裹层的效果 */
  62. .card:hover .wrapper {
  63.     transform: perspective(900px) translateY(-5%) rotateX(25deg) translateZ(0); /* 应用透视效果和旋转效果 */
  64.     box-shadow: 2px 35px 32px -8px rgba(0, 0, 0, 0.75); /* 添加阴影效果 */
  65. }
  66. /* 卡片内部包裹层的伪元素样式 */
  67. .wrapper::before,
  68. .wrapper::after {
  69.     content: ""; /* 添加伪元素内容 */
  70.     opacity: 0; /* 初始设置为透明 */
  71.     width: 100%; /* 宽度占满包裹层 */
  72.     height: 80px; /* 高度设置为80px */
  73.     transition: all 0.7s; /* 所有属性变化过渡效果时长为0.7秒 */
  74.     position: absolute; /* 绝对定位,相对于父级包裹层 */
  75.     left: 0; /* 定位到左边界 */
  76. }
  77. /* 包裹层的上方伪元素样式 */
  78. .wrapper::before {
  79.     top: 0; /* 定位到上边界 */
  80.     height: 100%; /* 高度占满包裹层 */
  81.     /* 使用线性渐变背景色 */
  82.     background-image: linear-gradient(to top,
  83.             transparent 46%,
  84.             rgba(12, 13, 19, 0.5) 68%,
  85.             rgba(12, 13, 19) 97%);
  86. }
  87. /* 包裹层的下方伪元素样式 */
  88. .wrapper::after {
  89.     bottom: 0; /* 定位到下边界 */
  90.     opacity: 1; /* 设置为不透明 */
  91.     /* 使用线性渐变背景色 */
  92.     background-image: linear-gradient(to bottom,
  93.             transparent 46%,
  94.             rgba(12, 13, 19, 0.5) 68%,
  95.             rgba(12, 13, 19) 97%);
  96. }
  97. /* 鼠标悬停时,伪元素的效果 */
  98. .card:hover .wrapper::before,
  99. .wrapper::after {
  100.     opacity: 1; /* 设置为不透明 */
  101. }
  102. /* 鼠标悬停时,下方伪元素的高度增加 */
  103. .card:hover .wrapper::after {
  104.     height: 120px; /* 高度增加到120px */
  105. }
  106. /* 鼠标悬停时,标题文本的位移效果 */
  107. .card:hover .title {
  108.     transform: translate3d(0%, -50px, 100px); /* 应用位移和透视效果 */
  109. }
  110. /* 鼠标悬停时,角色图片的显示和位移效果 */
  111. .card:hover .character {
  112.     opacity: 1; /* 设置为不透明 */
  113.     transform: translate3d(0%, -20%, 100px); /* 应用位移和透视效果 */
  114. }
  115. /* 鼠标悬停时,整个卡片的位移效果 */
  116. .card:hover {
  117.     transform: translateY(40px); /* 卡片垂直位移 */
  118. }
复制代码
这段CSS代码实现了以下功能和效果:


  • 通用样式重置 (* {...}): 清除了所有元素的表里边距,以及盒模型的设置,确保样式表现一致性。
  • 页面样式 (body {...}): 设置了整个页面居中显示,并使用了线性渐变背景色作为背景。
  • 外层容器样式 (shell {...}): 通过flex布局,使得包裹卡片的外层容器在页面中水平和垂直居中显示。
  • 卡片样式 (card {...}): 定义了卡片的基本样式,包罗尺寸、位置、内边距、透视效果和过渡动画效果。每个卡片具有固定的宽度和高度,并且当鼠标悬停在卡片上时,会产生动态的变革效果。
  • 卡片内部包裹层样式 (wrapper {...}): 内部包裹层接纳绝对定位,使得卡片的内容(封面图片、标题、脚色图片)可以在动画效果中自由变换位置和形态。
  • 鼠标悬停效果 (card:hover {...}): 当鼠标悬停在卡片上时,通过CSS选择器 .card:hover,触发内部元素(封面、标题、脚色图片)的动态效果。例如,内部包裹层会应用透视变换和旋转效果,标题会有位移效果,脚色图片会显示和位移等。
  • 卡片内部包裹层的伪元素样式 (wrapper::before, wrapper::after {...}): 为卡片内部的包裹层添加了两个伪元素,用于创建上下渐变遮罩效果。这些伪元素在鼠标悬停时,透明度变革和高度变革,产生渐变效果的动画。
这样我们的案例就讲解完毕了!


以上就是本篇文章的全部内容了~~~


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

锦通

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表