CSS 动画效果实现:图片展示与交互

🌈个人主页:前端青山
🔥系列专栏:Css篇
🔖人终将被年少不可得之物困其一生
依旧青山,本期给大家带来Css篇专栏内容:CSS 动画效果实现:图片展示与交互

前言
在现代网页设计中,动态效果能够显著提升用户体验。本文将通过一个具体的例子,展示如何使用 CSS 实现图片展示与交互效果。我们将创建一个包含多个图片的布局,并通过 CSS 的 transform 和 transition 属性为图片添加动态效果。文章将分为以下几个部分:
-
HTML 结构:介绍页面的基本结构。
-
CSS 样式:详细解析每个 CSS 规则的作用。
-
动态效果:解释如何通过 CSS 实现图片的动态效果。
-
总结:回顾整个过程并提供进一步学习的建议。
HTML 结构
首先,我们来看一下页面的基本 HTML 结构。这个结构包含一个外层的 .box 容器,内部有四个 .bigbox 容器,每个容器内包含多张图片。
html<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS 动画效果实现:图片展示与交互</title><link rel="stylesheet" href="css/reset.css"><link rel="stylesheet" href="css/work.css">
</head>
<body><div class="box"><div class="bigbox"><img src="img/con1-1.jpg" alt=""><img src="img/con1-2.jpg" alt=""><img src="img/con1-3.jpg" alt=""><img src="img/con1-4.jpg" alt=""><img src="img/con1-5.jpg" alt=""><img src="img/con1-6.jpg" alt=""></div><div class="bigbox"><img src="img/con2-1.jpg" alt=""><img src="img/con2-2.jpg" alt=""><img src="img/con2-3.jpg" alt=""><img src="img/con2-4.jpg" alt=""><img src="img/con2-5.jpg" alt=""><img src="img/con2-6.jpg" alt=""></div><div class="bigbox"><img src="img/con3-1.jpg" alt=""><img src="img/con3-2.jpg" alt=""><img src="img/con3-3.jpg" alt=""><img src="img/con3-4.jpg" alt=""><img src="img/con3-5.jpg" alt=""><img src="img/con3-6.jpg" alt=""></div><div class="bigbox pic"><img src="img/con4-1.jpg" alt="" class="pic1"><img src="img/con4-2.jpg" alt=""><img src="img/con4-3.jpg" alt=""></div></div>
</body>
</html>
CSS 样式
接下来,我们详细解析每个 CSS 规则的作用。
基本样式重置
html, body, h1, h2, h3, h4, h5, h6, div, ul, ol, li, dl, dt, dd, p {margin: 0;padding: 0;
}
ul, ol, li {list-style: none;
}
a {text-decoration: none;color: #333;
}
img, input, select, iframe, select {vertical-align: middle;
}
.fl {float: left;
}
.fr {float: right;
}
.clear::after {content: "";display: block;clear: both;
}
input, select, textarea {outline: none;border: none;
}
这些规则主要用于重置浏览器默认的样式,确保页面在不同浏览器中表现一致。
容器样式
css.box {width: 1200px;margin: 0 auto;box-sizing: border-box;
}
.bigbox {width: 500px;height: 390px;background: url(../img/bg.jpg);position: relative;overflow: hidden;float: left;margin: 10px 10px;
}
.box 是外层容器,宽度为 1200px 并居中显示。.bigbox 是每个图片容器,宽度为 500px,高度为 390px,背景图设置为 bg.jpg,并使用 position: relative 以便其子元素可以进行绝对定位。
图片样式
.bigbox > img:first-child {width: 400px;height: 300px;position: absolute;left: 30px;top: 40px;transform-origin: 0 0;transition: all 1s;
}
.bigbox:hover > img:first-child {transform: scale(0.7);
}
第一个图片的初始位置在左上角,宽度为 400px,高度为 300px。当鼠标悬停在 .bigbox 上时,图片会缩小到 0.7 倍大小。
.bigbox > img:nth-child(2) {width: 130px;height: 94px;position: absolute;right: 30px;top: -100px;transition: all 1s;
}
.bigbox:hover > img:nth-child(2) {width: 130px;height: 94px;position: absolute;right: 30px;top: 39px;
}
第二个图片的初始位置在右上角,宽度为 130px,高度为 94px。当鼠标悬停在 .bigbox 上时,图片会移动到新的位置。
其他图片的样式类似,通过 nth-child 选择器分别设置不同的初始位置和悬停效果。
特殊图片样式
.pic > img:first-child {width: 300px;height: 330px;
}
.pic:hover > img:first-child {transform: scale(0.8);
}
.pic 容器中的第一张图片在初始状态下宽度为 300px,高度为 330px。当鼠标悬停在 .pic 上时,图片会缩小到 0.8 倍大小。

.pic > img:nth-child(2) {width: 120px;height: 135px;top: -198px;left: 500px;position: absolute;
}
.pic:hover > img:nth-child(2) {width: 120px;height: 135px;position: absolute;top: 30px;left: 330px;
}
第二张图片的初始位置在右上角,宽度为 120px,高度为 135px。当鼠标悬停在 .pic 上时,图片会移动到新的位置。
其他图片的样式类似,通过 nth-child 选择器分别设置不同的初始位置和悬停效果。

动态效果
通过 transform 和 transition 属性,我们可以轻松地为图片添加动态效果。transform 属性用于改变元素的形状、大小或位置,而 transition 属性用于定义过渡效果的时间和方式。
例如,当鼠标悬停在 .bigbox 上时,第一张图片会缩小到 0.7 倍大小,其他图片会移动到新的位置。这些效果通过 transform 和 transition 属性实现,使得页面更加生动有趣。

总结
本文通过一个具体的例子,展示了如何使用 CSS 实现图片展示与交互效果。通过合理的 HTML 结构和详细的 CSS 样式,我们可以为页面添加丰富的动态效果,提升用户体验。希望本文对您有所帮助,如果您想进一步学习 CSS 动画效果,可以查阅相关的文档和教程。
相关文章:
CSS 动画效果实现:图片展示与交互
🌈个人主页:前端青山 🔥系列专栏:Css篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Css篇专栏内容:CSS 动画效果实现:图片展示与交互 前言 在现代网页设计中,动态效果能够显著…...
【机器学习】—Transformers的扩展应用:从NLP到多领域突破
好久不见!喜欢就关注吧~ 云边有个稻草人-CSDN博客 目录 引言 一、Transformer架构解析 (一)、核心组件 (二)、架构图 二、领域扩展:从NLP到更多场景 1. 自然语言处理(NLP) 2…...
Linux权限机制深度解读:系统安全的第一道防线
文章目录 前言‼️一、Linux权限的概念‼️二、Linux权限管理❕2.1 文件访问者的分类(人)❕2.2 文件类型和访问权限(事物属性)✔️1. 文件类型✔️2. 基本权限✔️3. 权限值的表示方法 ❕2.3 文件访问权限的相关设置方法✔️1. ch…...
NineData云原生智能数据管理平台新功能发布|2024年11月版
本月发布 8 项更新,其中重点发布 2 项、功能优化 6 项。 重点发布 数据库 Devops - 数据生成支持多个数据源 NineData 支持在数据库中自动生成符合特定业务场景的随机数据,用于模拟实际生产环境中的数据情况,帮助用户在不使用真实数据的情况…...
Vue中控制组件的挂载位置
在 Vue 中,append-to-body“true” 主要用于一些第三方组件(如 Element UI 或 Ant Design Vue 中的弹出框、下拉菜单等)来控制组件的挂载位置。具体来说,当你设置 append-to-body“true” 时,它会将该组件的 DOM 元素插…...
查看docker容器日志
容器里面的服务运行报错了,要查看容器的日志 要查看 Docker 容器的日志,可以使用 docker logs 命令。以下是一些常见的使用方法: 基本用法 docker logs <container_name_or_id> 查看最近的日志 docker logs --tail 100 <contai…...
Apache Commons工具类库使用整理
文章目录 Apache Commons工具类库分类- commons-lang3字符串工具:StringUtils日期工具:DateUtils数值工具:NumberUtils对象工具:ObjectUtils数组工具:ArrayUtils异常工具:ExceptionUtils枚举工具࿱…...
力扣第89题 格雷编码
题目描述 格雷编码序列是一个二进制数字序列,其中的每两个相邻的数字只有一个二进制位不同。给定一个整数 n,表示格雷编码的位数,要求返回 n 位的格雷编码序列。 示例 1 输入: n 2输出: [0, 1, 3, 2]解释&#x…...
Linux C/C++编程中的多线程编程基本概念
【图书推荐】《Linux C与C一线开发实践(第2版)》_linux c与c一线开发实践pdf-CSDN博客《Linux C与C一线开发实践(第2版)(Linux技术丛书)》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com…...
解决Tomcat运行时错误:“Address localhost:1099 is already in use”
目录 背景: 过程: 报错的原因: 解决的方法: 总结: 直接结束Java.exe进程: 使用neststat -aon | findstr 1099 命令: 选择建议: 背景: 准备运行Tomcat服务器调试项目时,程序下…...
C/C++中的调用约定
在C/C编程中,调用约定(calling conventions)是一组指定如何调用函数的规则。主要在你调用代码之外的函数(例如OS API,操作系统应用程序接口)或OS调用你(如WinMain的情况)时起作用。如果编译器不知道正确的调用约定,那么你很可能会遇到非常奇怪…...
微信创建小程序码 - 数量不受限制
获取小程序码:小程序码为圆图,且不受数量限制。 目录 文档 接口地址 请求方式 功能描述 注意事项 获取 scene 值 请求参数 返回参数 对接 请求方法 获取小程序码 调用获取小程序码 总结 文档 接口地址 https://api.weixin.qq.com/wxa/get…...
springboot/ssm美食分享系统Java代码web项目美食烹饪笔记分享交流
springboot/ssm美食分享系统ava美食烹饪笔记分享交流系统web美食源码 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库&#…...
【Redis篇】 List 列表
在 Redis 中,List 是一种非常常见的数据类型,用于表示一个有序的字符串集合。与传统的链表结构类似,Redis 的 List 支持在两端进行高效的插入和删除操作,因此非常适合实现队列(Queue)和栈(Stack…...
多级IIR滤波效果(BIQUAD),system verilog验证
MATLAB生成IIR系数 采用率1k,截止频率30hz,Matlab生成6阶对应的biquad3级系数 Verilog测试代码 // fs1khz,fc30hz initial beginreal Sig_Orig, Noise_white, Mix_sig;real fs 1000;Int T 1; //周期int N T*fs; //1s的采样点数// 数组声明…...
【WPF中ControlTemplate 与 DataTemplate之间的区别?】
前言 WPF中ControlTemplate 与 DataTemplate之间的区别? 1. 定义: ControlTemplate 是用于定义 WPF 控件的外观和结构的模板。它允许您重新定义控件的视觉表现,而不改变控件的行为。 DataTemplate 是用于定义如何呈现数据对象的模板。它通…...
Keil5配色方案修改为类似VSCode配色
1. 为什么修改Keil5配色方案 视觉习惯:如果你已经习惯了VSCode的配色方案,尤其是在使用ESP-IDF开发ESP32时,Keil5的默认配色可能会让你感到不习惯。减少视觉疲劳:Keil5的默认背景可能过于明亮,长时间使用可能会导致视…...
ndp协议简介
在IPv6中,ARP(地址解析协议)被替代为邻居发现协议(Neighbor Discovery Protocol,NDP)。NDP是IPv6网络中用于发现邻居节点(相邻设备)的协议,类似于IPv4中的ARP。但与ARP不…...
stable diffusion实践操作-大模型介绍:SD的发展历史,SD1.5和SDXL之间的差别
大家有没有这样的困惑:在找模型时,老是会出现一些奇怪的标签,像 sd1.5、sdxl 之类的模型后缀,真让人摸不着头脑,一会儿 1.0,一会儿 1.5,一会儿 XL,完全搞不清楚状况。今天就来给大家…...
系统无法运行提示:sqlsut.dll初始化错误怎么解决?多种解决方法汇总一览
遇到 sqlsut.dll 初始化错误,这通常意味着 SQL Server 的某些组件未能正确加载或初始化。以下是一些可能的解决方法汇总,旨在帮助您排查和解决问题: 解决方法 1. 检查SQL Server服务状态•确认所有相关的SQL Server服务(如SQL Se…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
