
为了实现图片与文本的叠加效果,我们需要在HTML中为每个画廊项 (
以下是建议的HTML结构示例:
<div class="gallery-container">
<ul class="gallery">
<li class="image">
@@##@@
<div class="image-name">图片名称一</div>
</li>
<li class="image">
@@##@@
<div class="image-name">图片名称二</div>
</li>
<!-- 更多画廊项 -->
</ul>
</div>在这个结构中:
CSS是实现叠加和悬浮效果的核心。我们将利用 position 属性来控制元素的堆叠顺序和位置,opacity 和 transition 来创建平滑的悬浮动画。
SuperDesign
开源的UI设计AI智能体
216
查看详情
首先,为画廊容器和列表项设置基础样式,确保布局的正确性。这里使用Flexbox来创建响应式的图片网格。
.gallery-container {
border: 2px black solid; /* 容器边框,便于观察 */
}
.gallery {
margin-top: 1em;
margin-bottom: 1em;
list-style: none; /* 移除列表默认样式 */
display: flex; /* 启用Flexbox布局 */
flex-wrap: wrap; /* 允许项目换行 */
flex-direction: row; /* 项目水平排列 */
margin-left: auto;
margin-right: auto; /* 居中画廊 */
align-items: center; /* 垂直居中项目 */
justify-content: center; /* 水平居中项目 */
gap: 10px; /* 项目之间的间距 */
}
.gallery li {
max-width: 40%; /* 每个列表项的最大宽度 */
}
img {
display: block; /* 图片作为块级元素 */
margin: 0.5em 0.5em; /* 图片内边距 */
max-width: 90%; /* 图片最大宽度 */
}这是实现叠加效果的关键部分。我们将对
.image { /* 针对每个 <li> 元素 */
position: relative; /* 1. 建立定位上下文 */
transition: 0.4s; /* 悬停时的过渡动画时间 */
cursor: pointer; /* 鼠标样式为手型 */
max-width: 90%;
margin-left: auto;
margin-right: auto;
display: flex; /* 2. 使用Flexbox居中内部内容 */
align-items: center;
justify-content: center;
}
.image-name { /* 针对文本叠加层 */
position: absolute; /* 3. 绝对定位,脱离文档流 */
color: ivory; /* 文本颜色 */
background-color: rgba(94, 88, 94, 0.7); /* 背景颜色,带透明度 */
padding: 10px 15px; /* 内边距 */
opacity: 0; /* 4. 初始状态为完全透明(隐藏) */
pointer-events: none; /* 确保文本层不阻挡鼠标事件到图片 */
text-align: center; /* 文本居中 */
/* 显式居中绝对定位元素 */
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
white-space: nowrap; /* 防止文本换行,如果文本较短 */
}
/* 悬停效果 */
.image:hover {
transform: scale(1.05); /* 鼠标悬停时图片略微放大 */
opacity: 0.8; /* 图片略微变暗 */
}
.image:hover .image-name {
opacity: 1; /* 鼠标悬停时文本完全显示 */
transition: 500ms; /* 文本显示过渡时间 */
}position: relative; on .image (the
display: flex; align-items: center; justify-content: center; on .image: 这些Flexbox属性用于在
position: absolute; on .image-name: 这使得文本层脱离了正常的文档流,可以自由地放置在父元素 (.image) 的任何位置,并且可以覆盖在其他元素(如图片)之上。
opacity: 0; on .image-name: 将文本层的初始不透明度设置为0,使其在页面加载时不可见。
top: 50%; left: 50%; transform: translate(-50%, -50%); on .image-name: 这是将绝对定位元素精确居中于其父元素的经典方法。top: 50%; left: 50%; 将元素的左上角移动到父元素的中心点,然后 transform: translate(-50%, -50%); 将元素自身向左和向上各移动其宽度和高度的一半,从而实现精确居中。
pointer-events: none; on .image-name: 这个属性使得文本层不响应任何鼠标事件(如点击、悬停)。这意味着当鼠标悬停在文本上时,实际上是悬停在下方的图片上,这对于实现.image:hover效果至关重要。
.image:hover .image-name { opacity: 1; transition: 500ms; }: 当鼠标悬停在
结合上述HTML和CSS,您将得到一个完整的、具有交互式悬浮文本效果的画廊。
<div class="gallery-container">
<ul class="gallery">
<li class="image">
@@##@@
<div class="image-name">第一张图片</div>
</li>
<li class="image">
@@##@@
<div class="image-name">第二张图片</div>
</li>
<li class="image">
@@##@@
<div class="image-name">第三张图片</div>
</li>
<li class="image">
@@##@@
<div class="image-name">第四张图片</div>
</li>
<li class="image">
@@##@@
<div class="image-name">第五张图片</div>
</li>
<li class="image">
@@##@@
<div class="image-name">第六张图片</div>
</li>
<li class="image">
@@##@@
<div class="image-name">第七张图片</div>
</li>
<li class="image">
@@##@@
<div class="image-name">第八张图片</div>
</li>
<li class="image">
@@##@@
<div class="image-name">第九张图片</div>
</li>
<li class="image">
@@##@@
<div class="image-name">第十张图片</div>
</li>
<li class="image">
@@##@@
<div class="image-name">第十一张图片</div>
</li>
<li class="image">
@@##@@
<div class="image-name">第十二张图片</div>
</li>
</ul>
</div>
body {
font-family: sans-serif;
background-color: #f0f0f0;
}
.gallery-container {
border: 2px black solid;
max-width: 1200px; /* 限制画廊最大宽度 */
margin: 20px auto; /* 居中容器 */
background-color: #fff;
padding: 10px;
}
.gallery {
margin-top: 1em;
margin-bottom: 1em;
list-style: none;
display: flex;
flex-wrap: wrap;
flex-direction: row;
margin-left: auto;
margin-right: auto;
align-items: center;
justify-content: center;
gap: 15px; /* 增加间距 */
padding: 0; /* 移除默认内边距 */
}
.gallery li {
position: relative;
transition: transform 0.4s ease-out, opacity 0.4s ease-out; /* 统一过渡属性 */
cursor: pointer;
max-width: calc(33.33% - 10px); /* 适应三列布局 */
box-sizing: border-box; /* 边框和内边距包含在宽度内 */
overflow: hidden; /* 隐藏超出部分的图片缩放 */
border-radius: 8px; /* 圆角边框 */
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* 添加阴影 */
/* 居中图片和文本 */
display: flex;
align-items: center;
justify-content: center;
}
.gallery li img {
display: block;
max-width: 100%; /* 图片填充整个 li 宽度 */
height: auto;
margin: 0; /* 移除图片默认外边距 */
transition: transform 0.4s ease-out, opacity 0.4s ease-out; /* 图片自身的过渡 */
}
.image-name {
position: absolute;
color: ivory;
background-color: rgba(94, 88, 94, 0.7); /* 半透明背景 */
padding: 10px 20px;
opacity: 0;
pointer-events: none;
text-align: center;
border-radius: 5px;
font-size: 1.2em;
font-weight: bold;
/* 显式居中绝对定位元素 */
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
white-space: nowrap; /* 防止文本换行 */
transition: opacity 0.5s ease-in-out; /* 文本显示过渡 */
}
/* 悬停效果 */
.gallery li:hover {
transform: translateY(-5px); /* 悬停时略微上浮 */
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); /* 悬停时阴影加深 */
}
.gallery li:hover img {
transform: scale(1.08); /* 图片略微放大 */
opacity:以上就是CSS图片与文本叠加:构建交互式画廊悬浮效果教程的详细内容,更多请关注其它相关文章!
# html
# css
# 明度
# 这是
# 鼠标
# 相对定位
# overflow
# 绝对定位
# css属性
# 垂直居中
# 排列
# css样式
# ai
# 疫情期间怎么做网站推广
# 崇明区百度网站优化定制
# 重庆丰都抖音seo推广
# 谷歌竞价推广网站
# 手机版的网站如何做seo优化
# 广饶seo优化步骤
# 网站端口推广什么意思
# 网站排名搜索优化
# 小红书推广网站
# 视频推广的营销步骤
# 相对于
# 选择器
# 文档
# 使其
# 换行
# 移除
# 设置为
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
如何编写一个符合 composer 规范的 post-install-cmd 脚本?
C++如何实现单例模式_C++线程安全的单例模式写法
优化Leaflet弹出层图片显示:条件渲染策略
不吃碳水化合物是健康减肥的好办法吗
附近酒吧怎么找?
4399小游戏下装链接 4399小游戏下载链接入口
C++中std::thread和std::async的区别_C++并发编程与线程与异步任务比较
国际经济与贸易就业方向解析
《百果园》充值余额方法
J*aScript与HTML元素交互:图片点击事件与链接处理教程
猫眼app抢票快还是小程序快
MongoDB聚合管道:高效统计列表中各项的文档数量
mysql中外键约束如何使用_mysql FOREIGN KEY操作
TikTok私信无法发送表情怎么办 TikTok消息表情发送修复方法
C++中的explicit关键字有什么作用_C++类型转换控制与explicit使用
RxJS中如何高效地在一个函数内处理和合并多个数据集合
更换小红书群背景怎么换?小红书群规则怎么设置?
小红书网页版在线直达 小红书网页版免费登录入口
《伊瑟》凶影追缉库卢鲁boss攻略
J*a中导出MySQL表为SQL脚本的两种方法
12306APP选座怎么选充电位置_12306APP带充电插座座位选择方法与技巧
Win10如何彻底关闭OneDrive Win10禁用云同步功能【纯净】
C#中的Record类型有什么优势?C# 9新特性Record与Class的用法区别
我居然低估了 DeepSeek,这次更新它做到了这些!
悟空浏览器如何恢复关闭的标签页 悟空浏览器撤销关闭网页快捷键设置
使用TinyButStrong生成HTML并结合Dompdf创建PDF教程
Excel如何制作月度销售统计图_Excel动态图表制作与控件应用
Pandas中基于动态偏移量实现DataFrame列值位移的策略
Lar*el Dusk 测试中管理浏览器权限:以剪贴板访问为例
解决Windows上Composer PATH变量冲突导致的命令无法识别问题
一点万象签到领积分指南
微信客户端如何找回密码_微信客户端忘记密码找回方法
Google Drive API服务器端访问指南:服务账户认证详解
安居客移动经纪人怎么设置自动回复?-安居客移动经纪人设置自动回复的方法
《淘票票》添加到苹果钱包教程
@Team是什么?揭秘团队含义
行者app怎样导出日志
抖音团长模式怎么做?团长模式是什么意思?
汽水音乐车机版官网5.0 汽水音乐车机版5.0版本下载入口
win11怎么启用或禁用休眠 Win11 powercfg命令管理休眠文件【技巧】
Win10锁屏时间怎么设置 Win10调整自动锁屏时间方法
睡觉时心跳快是什么原因 夜间心悸如何应对
LocoySpider如何批量采集电商商品_LocoySpider电商采集的模板应用
《兴业银行》注册登录方法
《雷电模拟器》截图方法介绍
顺丰快递在线查询系统 顺丰快递官方查单入口
Three.js中动态更换3D模型纹理的教程
使用 J*aScript 随机化 CSS Grid 布局中的元素顺序
Highcharts雷达图径向轴数值标签实现教程
小红书网页版首页入口 小红书网页版电脑端官方登录链接
2025-09-30
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。