HTML+CSS 动态卡片

效果演示

21-动态卡片.gif

实现了一个带有动态背景和图片放大效果的卡片展示。卡片的背景是由两种颜色交替组成的斜线条纹,同时背景会以一定速度循环滚动。当鼠标悬停在卡片上时,卡片的图片会放大,并且卡片的背景会变为彩色。

Code

HTML
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>动态卡片</title><link rel="stylesheet" href="./21-动态卡片.css">
</head>
<body><div class="container"><div class="box"><img src="./images/male.png" alt=""></div><div class="box"><img src="./images/female.png" alt=""></div></div>
</body>
</html>
CSS
* {margin: 0;padding: 0;
}body {min-height: 100vh;display: flex;justify-content: center;align-items: center;background-color: #333;
}.container {display: flex;
}.container .box {position: relative;display: flex;justify-content: center;width: 320px;height: 400px;--c1: #c7cc97;--c2: #e6a28c;background: linear-gradient(45deg, var(--c1) 25%, #444 25%, #444 50%, var(--c1) 50%, var(--c1) 75%, #444 75%, #444 100%);background-size: 40px 40px;border-radius: 20px;margin: 0 20px;filter: grayscale(1);transition: filter 1s;animation: animateBg 0.5s linear infinite;animation-play-state: paused;
}.container .box:nth-child(2) {background: linear-gradient(135deg, var(--c2) 25%, #444 25%, #444 50%, var(--c2) 50%, var(--c2) 75%, #444 75%, #444 100%);background-size: 40px 40px;
}.container .box img {height: 90%;position: absolute;bottom: 0;transition: 0.5s;
}.container .box:hover img {height: 480px;
}.container .box:hover {filter: grayscale(0);animation-play-state: running;
}@keyframes animateBg {0% {background-position: 0;}100% {background-position: 40px;}
}

实现思路拆分

* {margin: 0;padding: 0;
}

这段代码是将所有元素的外边距和内边距都设置为0,以便更好地控制页面布局。

body {min-height: 100vh;display: flex;justify-content: center;align-items: center;background-color: #333;
}

这段代码设置了body元素的最小高度为100vh,使得页面的高度至少占满整个视口。同时,将body元素的display属性设置为flex,使得其内部的元素可以使用flex布局。justify-content和align-items属性分别设置了flex容器的主轴和交叉轴的对齐方式,这里都设置为居中对齐。background-color属性设置了body元素的背景颜色为#333。

.container {display: flex;
}

这段代码设置了一个名为.container的元素,将其display属性设置为flex,使得其内部的元素可以使用flex布局。

.container .box {position: relative;display: flex;justify-content: center;width: 320px;height: 400px;--c1: #c7cc97;--c2: #e6a28c;background: linear-gradient(45deg, var(--c1) 25%, #444 25%, #444 50%, var(--c1) 50%, var(--c1) 75%, #444 75%, #444 100%);background-size: 40px 40px;border-radius: 20px;margin: 0 20px;filter: grayscale(1);transition: filter 1s;animation: animateBg 0.5s linear infinite;animation-play-state: paused;
}

这段代码设置了一个名为.box的元素,它是.container元素的子元素。position属性设置为relative,使得其内部的元素可以使用相对定位。display属性设置为flex,使得其内部的元素可以使用flex布局。justify-content属性设置为center,使得其内部的元素在主轴上居中对齐。width和height属性分别设置了.box元素的宽度和高度。–c1和–c2是自定义的CSS变量,分别表示两种颜色。background属性设置了.box元素的背景颜色为一个斜线条纹,由两种颜色交替组成。background-size属性设置了斜线条纹的大小为40px * 40px。border-radius属性设置了.box元素的圆角半径为20px。margin属性设置了.box元素的外边距为0 20px,即左右各20px。filter属性设置了.box元素的灰度值为1,即将其变为灰色。transition属性设置了.box元素的过渡效果,当filter属性发生变化时,过渡时间为1秒。animation属性设置了.box元素的动画效果,即背景颜色的滚动效果。animateBg是一个自定义的动画名称,0.5s表示动画的持续时间,linear表示动画的缓动函数,infinite表示动画无限循环。animation-play-state属性设置了动画的播放状态为paused,即初始状态下动画不播放。

.container .box:nth-child(2) {background: linear-gradient(135deg, var(--c2) 25%, #444 25%, #444 50%, var(--c2) 50%, var(--c2) 75%, #444 75%, #444 100%);background-size: 40px 40px;
}

这段代码设置了.container元素下的第二个.box元素的背景颜色为另一种斜线条纹,由两种颜色交替组成。background-size属性设置了斜线条纹的大小为40px * 40px。

.container .box img {height: 90%;position: absolute;bottom: 0;transition: 0.5s;
}

这段代码设置了.box元素内的img元素的高度为90%,即占据.box元素的90%高度。position属性设置为absolute,使得img元素可以使用绝对定位。bottom属性设置为0,使得img元素位于.box元素的底部。transition属性设置了img元素的过渡效果,当高度发生变化时,过渡时间为0.5秒。

.container .box:hover img {height: 480px;
}

这段代码设置了当鼠标悬停在.box元素上时,其内部的img元素的高度变为480px,即放大效果。

.container .box:hover {filter: grayscale(0);animation-play-state: running;
}

这段代码设置了当鼠标悬停在.box元素上时,其内部的灰度值变为0,即恢复彩色。同时,将动画的播放状态设置为running,即播放动画。

@keyframes animateBg {0% {background-position: 0;}100% {background-position: 40px;}
}

这段代码定义了一个名为animateBg的动画,它控制了.box元素的背景颜色的滚动效果。0%表示动画的起始状态,background-position属性设置为0,即背景颜色的起始位置。100%表示动画的结束状态,background-position属性设置为40px,即背景颜色的结束位置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/27271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单聊一下Oracle,MySQL,postgresql三种锁表的机制,行锁和表锁

MySQL&#xff1a; MySQL使用行级锁定和表级锁定。行级锁定允许多个会话同时写入表&#xff0c;适用于多用户、高并发和OLTP应用。表级锁定只允许一个会话一次更新表&#xff0c;适用于只读、主要读取或单用户应用。 比如mysql开启一个窗口执行 begin; update xc_county_a…

【STM32】飞控设计

【一些入门知识】 1.飞行原理 【垂直运动】 当 mg&#xff1e;F1F2F3F4&#xff0c;此时做下降加速飞行 当 mg&#xff1c;F1F2F3F4&#xff0c;此时做升高加速飞行 当 mgF1F2F3F4 &#xff0c;此时垂直上保持匀速飞行。 【偏航飞行】 ω 4 ω 2 ≠ ω 1 ω 3 就会产生水…

我的考研经历

当我写下这篇文章时&#xff0c;我已经从考研 的失败中走出来了&#xff0c;考研的整个过程都写在博客日志里面了&#xff0c;在整理并阅读考研的日志时&#xff0c;想写下一篇总结&#xff0c;也算是为了更好的吸取教训。 前期日志模板&#xff1a;时间安排的还算紧凑&#x…

【启明智显分享】Model系列工业级HMI芯片:开源RISC-V+RTOS实时系统,开放!高效!

前言 「Model系列」芯片是启明智显针对工业、行业以及车载产品市场推出的系列HMI芯片&#xff0c;主要应用于工业自动化、智能终端HMI、车载仪表盘、两轮车彩屏仪表、串口屏、智能中控、智能家居、充电桩显示屏、储能显示屏、工业触摸屏等领域。此系列具有高性能、低成本的特点…

C4D如何预览动画?C4D动画云渲染助力

C4D是一款功能丰富的3D设计软件&#xff0c;以其快速的预览渲染和多样的渲染插件而闻名&#xff0c;其卓越的渲染效果赢得了CG行业专业人士的广泛赞誉。尽管C4D的渲染功能十分强大&#xff0c;但对于初学者而言&#xff0c;其复杂的渲染设置可能会带来一些挑战。本文一起来看看…

最好用的邮箱管理软件推荐,邮箱管理软件哪个好?(干货篇)

在快节奏的工作与生活中&#xff0c;有效管理电子邮件成为提升个人与团队效率的关键。 面对海量信息流&#xff0c;一款好的邮箱管理软件不仅能够帮助我们高效地整理收件箱&#xff0c;还能确保重要邮件不会错过&#xff0c;同时提升通讯的便捷性和安全性。 本文将为您推荐几款…

Http协议JSON格式

1. 计算机网络 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统。 思考:计算机网络…

【第三篇】SpringSecurity请求流程分析

简介 本篇文章主要分析一下SpringSecurity在系统启动的时候做了那些事情、第一次请求执行的流程是什么、以及SpringSecurity的认证流程是怎么样的,主要的过滤器有哪些? SpringSecurity初始化流程 1.加载配置文件web.xml 当Web服务启动的时候,会加载我们配置的web.xml文件…

【记录与感想】CS61b-21sp project0(2048游戏)

项目概述 本项目是cs61b课程开课以来的第一个项目&#xff0c;游戏本身非常简单。它在 44 的方格网格上进行&#xff0c;每个方格可以是空的&#xff0c;也可以包含一个带有整数&#xff08;大于或等于 2 的 2 的幂&#xff09;的图块。在第一步之前&#xff0c;应用程序会将一…

Python第二语言(十四、高阶基础)

目录 1. 闭包 1.1 使用闭包注意事项 1.2 小结 2. 装饰器&#xff1a;实际上也是一种闭包&#xff1b; 2.1 装饰器的写法&#xff08;闭包写法&#xff09; &#xff1a;基础写法&#xff0c;只是解释装饰器是怎么写的&#xff1b; 2.2 装饰器的语法糖写法&#xff1a;函数…

半导体笔记汇总

半导体笔记汇总 介于导体与绝缘体之间的材质就叫做半导体。半导体器件主要分三类&#xff1a;二极管、三极管、MOS管。 一、半导体理论基础 1、导体、半导体和绝缘体 我们根据物质的导电性能强弱将物质分为导体、半导体和绝缘体。电导率与电阻率互为倒数&#xff0c;下图中…

3d模型文件格式有那些,什么区别?---模大狮模型网

3D模型文件格式有很多种&#xff0c;每种格式都有其特点和应用场景。常见的3D模型文件格式包括OBJ、FBX、STL、3DS、DAE等&#xff0c;下面将逐一介绍这些格式的区别。 1. OBJ格式&#xff1a;OBJ是一种开放的3D模型文件格式&#xff0c;可以被几乎所有的3D软件所支持。OBJ格式…

小程序 UI 风格,构建美妙视觉

小程序 UI 风格&#xff0c;构建美妙视觉

【DIY飞控板PX4移植】BARO模块BMP388气压计的PCB硬件设计和PX4驱动配置

BARO模块BMP388气压计的PCB硬件设计和PX4驱动配置 BMP388简介硬件设计封装原理图PCB设计引脚选择问题 PX4驱动配置飞控板的配置文件夹结构default.px4board文件nuttx-config/nsh/defconfig文件nuttx-config/include/board.h文件src/board_config.h文件src/i2c.cpp文件init/rc.b…

安卓/iOS/Linux系统影音边下边播P2P传输解决方案

在当今的数字时代&#xff0c;IPTV 影音行业正经历着快速的发展和变革&#xff0c;但影音行业的流量带宽成本一直很高&#xff0c;有没有什么办法既能保证现有的用户观看体验&#xff0c;又能很好降低流量带宽成本呢? P2P技术可能是一个很好的选择&#xff0c;它不仅仅可以提…

Vue2+Element-ui后台系统常用js方法

el-dialog弹框关闭清空form表单并清空验证 cancelDialog(diaLog, formRef) {this[diaLog] falseif (formRef) {this.$refs[formRef].resetFields()} }页面使用&#xff1a; <el-dialog :visible.sync"addSubsidyDialog.dialog" close"cancelDialog(addSub…

大模型赛道有前景吗?普通人该如何入门大模型?(附AI大模型资源)

大模型赛道有前景吗&#xff1f; 这个问题&#xff0c;是个热门话题&#xff0c;但不是个好问题。 因为&#xff0c;它基于不同的提问人、提问意图&#xff0c;会有不同的答案。 对于一个职业发展初期的新人&#xff0c;提问的意图可能是&#xff1a;我要不要转行去大模型赛…

如何实现一个合格的分布式锁

1、概述 在多线程的环境下&#xff0c;为了保证一个代码块在同一时间只能由一个线程访问&#xff0c;Java中我们一般可以使用 synchronized 语法和 ReentrantLock 去保证&#xff0c;这实际上是本地锁的方式。而在如今分布式架构的热潮下&#xff0c;如何保证不同节点的线程同…

聚道云软件连接器:企业数字化转型新动力

在当今数字化浪潮中&#xff0c;企业如何高效整合内部资源、优化业务流程、提升客户满意度&#xff0c;已成为每个企业亟需解决的问题。该公司作为行业内的佼佼者&#xff0c;近期借助聚道云软件连接器成功实现了飞鱼CRM与金蝶云星辰的对接&#xff0c;开启了数字化转型的新篇章…

macOS Sequoia 将 Mac 生产力与智能化提升至全新高度

本文转载自 官方新闻&#xff1a;https://www.apple.com.cn/newsroom/2024/06/macos-sequoia-takes-productivity-and-intelligence-on-mac-to-new-heights/ 文章目录 1、借助 iPhone 镜像 直接在 Mac 上无线使用 iPhone2、Safari 浏览器迎来重大更新3、升级的游戏体验与备受瞩…