要实现滚动时动态更换 logo 图片的效果,可以用 CSS 配合 JavaScript 来实现。基本思路是:
准备两张 logo 图片: 一张是默认显示的 logo,另一张是滚动到特定位置或超过特定距离后显示的 logo。
HTML 结构: 将两个 logo 图片都放在同一个容器元素中,例如 <div>,并分别设置不同的 class 或 id,用于后续 CSS 和 JavaScript 的操作。
CSS 样式:
默认情况下,将其中一张 logo 图片设置为显示,另一张设置为隐藏(可以使用 display: none;)。设置容器元素的样式,例如 position: relative;,以便后续使用绝对定位来控制 logo 图片的位置。JavaScript 控制:
监听页面的滚动事件。在滚动事件的处理函数中,判断滚动距离或当前位置是否满足条件。如果满足条件,则通过 JavaScript 修改两张 logo 图片的 CSS 样式,例如切换 display 属性的值,来实现 logo 的切换效果。下面是一个简单的示例代码:
<!DOCTYPE html>
<html>
<head>
<title>滚动切换 Logo</title>
<style>
body {
height: 2000px; /* 设置页面高度以便测试滚动效果 */
}
.logo-container {
position: relative;
width: 200px;
height: 100px;
}
.logo {
position: absolute;
top: 0;
left: 0;
transition: opacity 0.5s ease-in-out; /* 添加过渡效果 */
}
.logo.hidden {
opacity: 0; /* 使用 opacity 实现淡入淡出效果 */
}
</style>
</head>
<body>
<div class="logo-container">
<img src="logo1.png" alt="Logo 1" class="logo">
<img src="logo2.png" alt="Logo 2" class="logo hidden">
</div>
<script>
window.addEventListener('scroll', function() {
var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
var logoContainer = document.querySelector('.logo-container');
var logo1 = logoContainer.querySelector('img:first-child');
var logo2 = logoContainer.querySelector('img:last-child');
if (scrollTop > 100) {
logo1.classList.add('hidden');
logo2.classList.remove('hidden');
} else {
logo1.classList.remove('hidden');
logo2.classList.add('hidden');
}
});
</script>
</body>
</html> 代码解释:
HTML 中,logo1.png 是默认显示的 logo,logo2.png 是滚动后显示的 logo。CSS 中,.logo.hidden 类名用于隐藏 logo,并添加了 opacity 过渡效果。JavaScript 中,监听了 scroll 事件,根据滚动距离添加或移除 logo 的 hidden 类名,实现 logo 的切换。你可以根据自己的需求修改 CSS 样式和 JavaScript 代码,例如修改触发 logo 切换的滚动距离、添加动画效果等等。
网友回复


