原生banner

本文介绍了如何使用HTML、CSS和JavaScript实现在网页上平滑地切换三个内容区域,每个区域在滚动时逐渐升起或下降,形成无缝滚动效果。通过监听`wheel`事件,控制内容的CSS`transform`属性实现动画效果。
摘要由CSDN通过智能技术生成

效果:

某个页面有3个内容,这3个内容都分别能撑满整个屏幕,默认显示第一屏的内容;如果当前是第一屏,向下滚动鼠标,第一屏的内容不滚动,第二屏的内容缓缓升起,覆盖住第一屏的内容;然后再向下滚动鼠标,第2屏的内容不滚动,第3屏的内容缓缓升起,覆盖住第2屏的内容;然后再向上滚动鼠标,第2屏内容不动,第3屏缓缓下降出屏幕范围,随着第3屏的下降缓缓显露出第2屏;然后再向上滚动鼠标,第1屏内容不动,第2屏缓缓下降出屏幕范围,随着第2屏的下降缓缓显露出第1屏;在内容移动的时候,滚动鼠标不生效,只有内容移动完成后,滚动鼠标才会生效

html

<div class="banner">
    <div class="section section1 active">Section 1</div>
    <div class="section section2 ">Section 2</div>
    <div class="section section3 ">Section 3</div>
</div>

css

body, html {
    margin: 0;
    padding: 0;
    overflow: hidden;
}

.banner {
    position: relative;
    width: 100%;
    height: 100vh;
    overflow: hidden;
}

.section {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 5rem;
    transition: transform 1.5s ease;
    z-index: 1;
    transform: translateY(0);
}

.active {
    z-index: 2;
}
.section1 {
    transform: translateY(0);
    background: green;
}

.section2 {
    transform: translateY(100%);
    background: yellow;
}

.section3 {
    transform: translateY(100%);
    background: #00a2d4;
}

js

document.addEventListener('DOMContentLoaded', function() {
	let currentSection = 1;
	let isTransitioning = false; // 添加一个标志来表示切换是否正在进行中
	const numSections = document.querySelectorAll('.section').length;

	window.addEventListener('wheel', function(event) {
		// 当切换正在进行中时,忽略滚动事件
		if (isTransitioning) return;

		const moveScreen = event.deltaY > 0 ? currentSection : currentSection -1;
		if (moveScreen >= 1 && moveScreen <= numSections) {
			// 设置切换进行中标志为 true
			isTransitioning = true;
			if (event.deltaY > 0 && currentSection < numSections) {
				currentSection++;
			} else if (event.deltaY < 0 && currentSection > 1) {
				currentSection--;
			}
			updateSections(moveScreen, event.deltaY > 0 ? "up" : "down");
			// 在切换完成后,将切换进行中标志重置为 false
			setTimeout(() => {
				isTransitioning = false;
			}, 1500); // 此处的延迟时间应该与 CSS 中的 transition 时间一致
		}
	});

	function updateSections(targetScreen, direction) {
		const sections = document.querySelectorAll('.section');
		sections.forEach((section, index) => {
			if (index === targetScreen) {
				const translateYValue = direction==="up"? '0': '100%';
				section.style.transform = 'translateY(' + translateYValue + ')';
				section.classList.add('active');
			}
		});
	}
});






全屏banner原生是一种广告形式,通常以图片或视频的形式展现在网页的顶部,并占据整个屏幕的宽度和高度。原生广告是指广告融入网页的内容,与网页的风格和布局相一致,给用户一种更符合自然流畅的广告体验。 全屏banner原生广告的优点之一是能够吸引用户的注意力,因为它的占位面积较大,可以更好地获取用户的关注。与传统的广告形式相比,全屏banner原生广告更具有视觉冲击力,能够更好地传达广告主想要传递的信息。 另外,全屏banner原生广告也能够提高广告的点击率和用户参与度。由于广告融入了网页的内容,用户在浏览网页时更容易与广告进行互动,提高了用户点击广告的可能性。同时,用户对原生广告的接受度也更高,因为它不会给人强烈的广告感。 然而,全屏banner原生广告也存在一些缺点。首先,由于广告占据了整个屏幕,可能会对用户的浏览体验造成干扰,特别是在移动设备上,屏幕空间本就有限,全屏banner广告可能会给用户带来不便。 其次,全屏banner原生广告可能存在与网页内容不相关的情况。如果广告的内容与用户浏览的网页内容无关,用户可能会感到不舒服,甚至会对广告产生厌恶情绪。 综上所述,全屏banner原生广告作为一种广告形式,具有吸引用户、提高点击率和参与度等优点,但也需要注意用户体验和广告内容的相关性,以避免对用户造成不良影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值