首页 教程 Web前端 前端练习小项目——视觉冲击卡片

前端练习小项目——视觉冲击卡片

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


前端练习小项目——视觉冲击卡片

✨✨✨这里是秋刀鱼不做梦的BLOG

✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客

先让我们看一下效果:

前端练习小项目——视觉冲击卡片

    那么我们如何去实现这样的小案例呢?在下文中我们对每一段重要的代码都进行了解释,读者可以根据注释对代码进行理解。

1.HTML代码

<!DOCTYPE html> <html lang="en"> <head> <!-- 设置文档使用的字符编码为UTF-8 --> <meta charset="UTF-8"> <!-- 响应式设计,页面宽度等于设备宽度,初始缩放为1.0 --> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- 网页标题 --> <title>zjy</title> <!-- 引入样式表视觉冲击卡片.css --> <link rel="stylesheet" href="./视觉冲击卡片.css"> </head> <body> <!-- 网页内容部分 --> <div class="shell"> <!-- 第一个卡片 --> <div class="card"> <!-- 卡片内部包裹层 --> <div class="wrapper"> <!-- 卡片封面图片 --> <img src="./image/01.png" alt="" class="cover-image"> </div> <!-- 卡片标题文本 --> <img src="./image/text-1.png" alt="" class="title"> <!-- 卡片角色图片 --> <img src="./image/02.png" alt="" class="character"> </div> <!-- 第二个卡片 --> <div class="card"> <!-- 卡片内部包裹层 --> <div class="wrapper"> <!-- 卡片封面图片 --> <img src="./image/03.png" alt="" class="cover-image"> </div> <!-- 卡片标题文本 --> <img src="./image/text-2.png" alt="" class="title"> <!-- 卡片角色图片 --> <img src="./image/04.png" alt="" class="character"> </div> </div> </body> </html>

      这段HTML代码是一个基本的网页模板,展示了两个卡片(card),每个卡片包含一个封面图片(cover-image)、一个标题文本(title)、以及一个角色图片(character)。注释部分解释了每个标签的作用和功能。

2.CSS代码

/* 通用样式重置 */ * { padding: 0; margin: 0; box-sizing: border-box; } /* 设置整个页面的样式 */ body { width: 100vw; /* 页面宽度等于视口宽度 */ height: 100vh; /* 页面高度等于视口高度 */ display: flex; /* 使用flex布局 */ justify-content: center; /* 水平居中 */ align-items: center; /* 垂直居中 */ background-image: linear-gradient(to top, #fbc2eb 0%, #a6c1ee 100%); /* 设置背景为线性渐变色 */ } /* 外层容器样式 */ .shell { display: flex; /* 使用flex布局 */ justify-content: center; /* 水平居中 */ align-items: center; /* 垂直居中 */ } /* 卡片样式 */ .card { width: 270px; /* 卡片宽度 */ height: 545px; /* 卡片高度 */ position: relative; /* 相对定位,用于内部绝对定位元素的参考 */ display: flex; /* 使用flex布局 */ justify-content: center; /* 水平居中 */ align-items: center; /* 垂直居中 */ padding: 0 25px; /* 内边距 */ perspective: 2500px; /* 设置透视效果的观察距离 */ transition: all 0.5s; /* 所有属性变化过渡效果时长为0.5秒 */ margin: 0 100px; /* 外边距,控制卡片之间的间距 */ } /* 卡片内部包裹层样式 */ .wrapper { transition: all 0.7s; /* 所有属性变化过渡效果时长为0.7秒 */ position: absolute; /* 绝对定位,相对于父级卡片 */ width: 100%; /* 宽度占满父级卡片 */ z-index: -1; /* 层级设置为低于卡片,用于显示卡片上的其他内容 */ } /* 卡片封面图片样式 */ .cover-image { width: 100%; /* 图片宽度占满父级容器 */ /* 可选:如果取消注释,可能导致图片拉伸变形 */ /* height: 100%; */ } /* 卡片标题文本样式 */ .title { width: 100%; /* 标题文本宽度占满父级容器 */ transition: transform 0.7s; /* transform属性变化过渡效果时长为0.7秒 */ } /* 卡片角色图片样式 */ .character { width: 100%; /* 图片宽度占满父级容器 */ opacity: 0; /* 初始设置为透明 */ transition: all 0.7s; /* 所有属性变化过渡效果时长为0.7秒 */ position: absolute; /* 绝对定位,相对于父级卡片 */ z-index: -1; /* 层级设置为低于卡片,用于显示卡片上的其他内容 */ } /* 鼠标悬停时,内部包裹层的效果 */ .card:hover .wrapper { transform: perspective(900px) translateY(-5%) rotateX(25deg) translateZ(0); /* 应用透视效果和旋转效果 */ box-shadow: 2px 35px 32px -8px rgba(0, 0, 0, 0.75); /* 添加阴影效果 */ } /* 卡片内部包裹层的伪元素样式 */ .wrapper::before, .wrapper::after { content: ""; /* 添加伪元素内容 */ opacity: 0; /* 初始设置为透明 */ width: 100%; /* 宽度占满包裹层 */ height: 80px; /* 高度设置为80px */ transition: all 0.7s; /* 所有属性变化过渡效果时长为0.7秒 */ position: absolute; /* 绝对定位,相对于父级包裹层 */ left: 0; /* 定位到左边界 */ } /* 包裹层的上方伪元素样式 */ .wrapper::before { top: 0; /* 定位到上边界 */ height: 100%; /* 高度占满包裹层 */ /* 使用线性渐变背景色 */ background-image: linear-gradient(to top, transparent 46%, rgba(12, 13, 19, 0.5) 68%, rgba(12, 13, 19) 97%); } /* 包裹层的下方伪元素样式 */ .wrapper::after { bottom: 0; /* 定位到下边界 */ opacity: 1; /* 设置为不透明 */ /* 使用线性渐变背景色 */ background-image: linear-gradient(to bottom, transparent 46%, rgba(12, 13, 19, 0.5) 68%, rgba(12, 13, 19) 97%); } /* 鼠标悬停时,伪元素的效果 */ .card:hover .wrapper::before, .wrapper::after { opacity: 1; /* 设置为不透明 */ } /* 鼠标悬停时,下方伪元素的高度增加 */ .card:hover .wrapper::after { height: 120px; /* 高度增加到120px */ } /* 鼠标悬停时,标题文本的位移效果 */ .card:hover .title { transform: translate3d(0%, -50px, 100px); /* 应用位移和透视效果 */ } /* 鼠标悬停时,角色图片的显示和位移效果 */ .card:hover .character { opacity: 1; /* 设置为不透明 */ transform: translate3d(0%, -20%, 100px); /* 应用位移和透视效果 */ } /* 鼠标悬停时,整个卡片的位移效果 */ .card:hover { transform: translateY(40px); /* 卡片垂直位移 */ }

这段CSS代码实现了以下功能和效果:

  1. 通用样式重置 (* {...}): 清除了所有元素的内外边距,以及盒模型的设置,确保样式表现一致性。

  2. 页面样式 (body {...}): 设置了整个页面居中显示,并使用了线性渐变背景色作为背景。

  3. 外层容器样式 (shell {...}): 通过flex布局,使得包裹卡片的外层容器在页面中水平和垂直居中显示。

  4. 卡片样式 (card {...}): 定义了卡片的基本样式,包括尺寸、位置、内边距、透视效果和过渡动画效果。每个卡片具有固定的宽度和高度,并且当鼠标悬停在卡片上时,会产生动态的变化效果。

  5. 卡片内部包裹层样式 (wrapper {...}): 内部包裹层采用绝对定位,使得卡片的内容(封面图片、标题、角色图片)可以在动画效果中自由变换位置和形态。

  6. 鼠标悬停效果 (card:hover {...}): 当鼠标悬停在卡片上时,通过CSS选择器 .card:hover,触发内部元素(封面、标题、角色图片)的动态效果。例如,内部包裹层会应用透视变换和旋转效果,标题会有位移效果,角色图片会显示和位移等。

  7. 卡片内部包裹层的伪元素样式 (wrapper::before, wrapper::after {...}): 为卡片内部的包裹层添加了两个伪元素,用于创建上下渐变遮罩效果。这些伪元素在鼠标悬停时,透明度变化和高度变化,产生渐变效果的动画。

这样我们的案例就讲解完毕了!


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

评论(0)条

提示:请勿发布广告垃圾评论,否则封号处理!!

    猜你喜欢
    【MySQL】用户管理

    【MySQL】用户管理

     服务器/数据库  2个月前  2.18k

    我们推荐使用普通用户对数据的访问。而root作为管理员可以对普通用户对应的权限进行设置和管理。如给张三和李四这样的普通用户权限设定后。就只能操作给你权限的库了。

    Cursor Rules 让开发效率变成10倍速

    Cursor Rules 让开发效率变成10倍速

     服务器/数据库  2个月前  1.23k

    在AI与编程的交汇点上,awesome-cursorrules项目犹如一座灯塔,指引着开发者们驶向更高效、更智能的编程未来。无论你是经验丰富的老手,还是刚入行的新人,这个项目都能为你的编程之旅增添一抹亮色。这些规则文件就像是你私人定制的AI助手,能够根据你的项目需求和个人偏好,精确地调教AI的行为。突然间,你会发现AI不仅能理解Next.js的最佳实践,还能自动应用TypeScript的类型检查,甚至主动提供Tailwind CSS的类名建议。探索新的应用场景,推动AI辅助编程的边界。

    探索Django 5: 从零开始,打造你的第一个Web应用

    探索Django 5: 从零开始,打造你的第一个Web应用

     服务器/数据库  2个月前  1.16k

    Django 是一个开放源代码的 Web 应用程序框架,由 Python 写成。它遵循 MVT(Model-View-Template)的设计模式,旨在帮助开发者高效地构建复杂且功能丰富的 Web 应用程序。随着每个版本的升级,Django 不断演变,提供更多功能和改进,让开发变得更加便捷。《Django 5 Web应用开发实战》集Django架站基础、项目实践、开发经验于一体,是一本从零基础到精通Django Web企业级开发技术的实战指南《Django 5 Web应用开发实战》内容以。

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

     服务器/数据库  2个月前  1.09k

    mysql_secure_installation 是 MySQL 提供的一个安全脚本,用于提高数据库服务器的安全性

    【MySQL基础篇】概述及SQL指令:DDL及DML

    【MySQL基础篇】概述及SQL指令:DDL及DML

     服务器/数据库  2个月前  489

    数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库不仅仅是数据的简单堆积,而是遵循一定的规则和模式进行组织和管理的。数据库中的数据可以包括文本、数字、图像、音频等各种类型的信息。

    Redis中的哨兵(Sentinel)

    Redis中的哨兵(Sentinel)

     服务器/数据库  2个月前  314

    ​ 上篇文章我们讲述了Redis中的主从复制(Redis分布式系统中的主从复制-CSDN博客),本篇文章针对主从复制中的问题引出Redis中的哨兵,希望本篇文章会对你有所帮助。