
本教程详细介绍了如何使用css构建一个底部弹出式组件,实现图像模糊、缩放及平滑的弹出动画。我们将探讨如何利用`position: absolute`和`transform`属性来避免页面内容跳动,并解决子元素遮挡父元素`hover`事件的问题,从而创建用户体验更佳的交互式底部提示框。
在网页设计中,底部弹出式组件常用于展示额外信息或导航。然而,在实现这类组件时,开发者常遇到两个主要挑战:
为了解决这些问题,我们将采用更现代且性能更优的CSS技术:
首先,我们定义组件的HTML结构。一个外部容器#hidden用于裁剪弹出层的初始状态,内部的#popup元素包含图像和导航链接。div.contents用于模拟页面主要内容,以演示弹出层如何不影响主内容布局。
<div class="contents">
<!-- 页面其他内容,用于演示弹出层不影响主内容 -->
contents<br />
contents<br />
contents<br />
contents<br />
contents Last Row<br />
</div>
<div id="hidden">
<div id="popup">
<img src="https://placekitten.com/g/600/100" alt="popup box image" />
<nav>
<ul>
<li>All Projects</li>
<li>Work ></li>
</ul>
</nav>
</div>
</div>接下来,我们详细编写CSS样式,实现预期的效果。
立即学习“前端免费学习笔记(深入)”;
body,
html {
margin: 0;
padding: 0; /* 确保无默认边距 */
}
.contents {
line-height: 2em;
padding: 20px; /* 增加一些内边距,使内容更清晰 */
}
/* 1. 外部容器:裁剪弹出层 */
#hidden {
position: relative; /* 为内部绝对定位的#popup提供定位上下文 */
height: 100px; /* 控制可见区域高度 */
overflow: hidden; /* 隐藏超出容器的部分 */
}
/* 2. 弹出层本体:定位与初始状态 */
#popup {
position: absolute; /* 相对于#hidden进行定位 */
bottom: 0; /* 底部对齐 */
left: 0; /* 左侧对齐 */
right: 0; /* 右侧对齐,确保宽度填充 */
overflow: hidden; /* 隐藏弹出层内部超出部分 */
transform: translateY(30px); /* 初始状态下向上平移30px,部分隐藏 */
transition: transform .5s ease; /* 为transform属性添加平滑过渡动画 */
}
/* 3. 鼠标悬停时弹出层效果 */
#popup:hover {
transform: translateY(10px); /* 悬停时向上平移10px,露出更多 */
}
/* 4. 弹出层内图像样式与初始模糊效果 */
#popup img {
width: 100%; /* 确保图片宽度填充容器 */
height: auto; /* 保持图片比例 */
border-radius: 5px; /* 圆角效果 */
filter: blur(3px); /* 初始模糊效果 */
transition: all .5s ease; /* 为所有属性变化添加平滑过渡 */
}
/* 5. 鼠标悬停时图像效果 */
#popup:hover img {
filter: blur(0); /* 悬停时取消模糊 */
transform: scale(1.1); /* 悬停时放大1.1倍 */
}
/* 6. 底部弹出框文本链接样式 */
#popup nav ul {
position: absolute; /* 绝对定位,浮动在图片上方 */
top: 0; /* 顶部对齐 */
width: 100%; /* 宽度填充 */
margin-top: 5px; /* 顶部外边距 */
padding: 0; /* 移除默认内边距 */
display: flex; /* 使用Flexbox布局 */
justify-content: space-between; /* 元素两端对齐 */
font-size: 23px; /* 字体大小 */
list-style: none; /* 移除列表默认标记 */
color: white; /* 文本颜色,确保在模糊背景上可见 */
text-shadow: 1px 1px 2px rgba(0,0,0,0.5); /* 文本阴影增强可读性 */
}
#popup nav ul li {
padding: 0 15px; /* 增加列表项内边距 */
cursor: pointer; /* 鼠标指针样式 */
}transform: translateY() 实现平滑动画
父级hover控制子级样式
filter: blur() 与 transform: scale() 结合
position: relative 和 position: absolute 的配合
以上就是CSS教程:实现底部弹出层模糊效果及平滑高度变化的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号