当前位置: 首页 > news >正文

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

​🌈个人主页:前端青山
🔥系列专栏:Css篇
🔖人终将被年少不可得之物困其一生

依旧青山,本期给大家带来Css篇专栏内容:CSS 动画效果实现:图片展示与交互

前言

在现代网页设计中,动态效果能够显著提升用户体验。本文将通过一个具体的例子,展示如何使用 CSS 实现图片展示与交互效果。我们将创建一个包含多个图片的布局,并通过 CSS 的 transformtransition 属性为图片添加动态效果。文章将分为以下几个部分:

  1. HTML 结构:介绍页面的基本结构。

  2. CSS 样式:详细解析每个 CSS 规则的作用。

  3. 动态效果:解释如何通过 CSS 实现图片的动态效果。

  4. 总结:回顾整个过程并提供进一步学习的建议。

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 选择器分别设置不同的初始位置和悬停效果。

动态效果

通过 transformtransition 属性,我们可以轻松地为图片添加动态效果。transform 属性用于改变元素的形状、大小或位置,而 transition 属性用于定义过渡效果的时间和方式。

例如,当鼠标悬停在 .bigbox 上时,第一张图片会缩小到 0.7 倍大小,其他图片会移动到新的位置。这些效果通过 transformtransition 属性实现,使得页面更加生动有趣。

总结

本文通过一个具体的例子,展示了如何使用 CSS 实现图片展示与交互效果。通过合理的 HTML 结构和详细的 CSS 样式,我们可以为页面添加丰富的动态效果,提升用户体验。希望本文对您有所帮助,如果您想进一步学习 CSS 动画效果,可以查阅相关的文档和教程。

http://www.lryc.cn/news/497151.html

相关文章:

  • 【机器学习】—Transformers的扩展应用:从NLP到多领域突破
  • Linux权限机制深度解读:系统安全的第一道防线
  • NineData云原生智能数据管理平台新功能发布|2024年11月版
  • Vue中控制组件的挂载位置
  • 查看docker容器日志
  • Apache Commons工具类库使用整理
  • 力扣第89题 格雷编码
  • Linux C/C++编程中的多线程编程基本概念
  • 解决Tomcat运行时错误:“Address localhost:1099 is already in use”
  • C/C++中的调用约定
  • 微信创建小程序码 - 数量不受限制
  • springboot/ssm美食分享系统Java代码web项目美食烹饪笔记分享交流
  • 【Redis篇】 List 列表
  • 多级IIR滤波效果(BIQUAD),system verilog验证
  • 【WPF中ControlTemplate 与 DataTemplate之间的区别?】
  • Keil5配色方案修改为类似VSCode配色
  • ndp协议简介
  • stable diffusion实践操作-大模型介绍:SD的发展历史,SD1.5和SDXL之间的差别
  • 系统无法运行提示:sqlsut.dll初始化错误怎么解决?多种解决方法汇总一览
  • 通过waitress启动flask应用
  • Redis高阶之容错切换
  • 蓝桥杯准备训练(lesson2 ,c++)
  • 【力扣】2094.找出3为偶数
  • 利用红黑树封装map,和set,实现主要功能
  • 网络(TCP)
  • CSS 选择器的优先级
  • 留学生数学辅导作业随机过程高等线性代数概率论微积分优化统计
  • 移动机器人课程建图实验-ROSbug汇总
  • 小家电出海,沃丰科技助力保障售后服务的及时性与高效性
  • vscode 如何支持点击跳转函数,以C++为例,Python等其它编程语言同理,Visual Studio Code。