html5 视觉差滚动效果怎么实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html5 视觉差滚动效果怎么实现相关的知识,希望对你有一定的参考价值。

参考技术A html5 视觉差滚动效果
原理就是一种利用控制各个图片层之间滚动的速度,来产生一种立体空间的效果,每个层都用一个png透明图片做为背景,然后滚动的时候控制一下每个不同的速度。

不过有两个方面需要注意:
1、以大量图片为特色的网站应该考虑图像的预加载问题,以便为用户提供更好更流畅的视觉体验;
2、某些网站页面在移动设备上的效果可能较之在PC上有所不同,一些功能也可能无法正常使用。本回答被提问者采纳
参考技术B 可以使用wow.js 参考技术C 只要给每个div加上如下代码即可实现视差滚动效果

每天学一个jquery插件-滚动视觉差

每天一个jquery插件-滚动视觉差

滚动视觉差

图片搞了那个感觉实际做出来有点麻烦,所以直接写了一下效果出来,像是background-attachment还没搞清楚咋用,所以先弄一下效果

效果如下
在这里插入图片描述

代码部分

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>滚动视觉差</title>
		<script src="js/jquery-3.4.1.min.js"></script>
		<style>
			*{
				margin: 0;
				padding: 0;
			}
			.fixed{
				position: fixed;
				bottom: 0;
				left: 0;
				right: 0;
				font-size: 200px;
				font-weight: bold;
				overflow: hidden;
			}
			.boxs{
				width: 100%;
				display: flex;
				justify-content: center;
				align-items: center;
				position: absolute;
				bottom: 0;
			}
			.fixed[data-ind='0']{
				z-index: 1;
			}
			.fixed[data-ind='1']{
				z-index: 2;
			}
			.fixed[data-ind='2']{
				z-index: 3;
			}
			.fixed[data-ind='3']{
				z-index: 4;
			}
			.fixed[data-ind='4']{
				z-index: 5;
			}
			#box1{
				background-color: #1abc9c;
				color: white;
			}
			#box2{
				background-color: #3498db;
				color: white;
			}
			#box3{
				background-color: #9b59b6;
				color: white;
			}
			#box4{
				background-color: #f1c40f;
				color: white;
			}
			#box5{
				background-color: #e74c3c;
				color: white;
			}
		</style>
	</head>
	<body>
		<div class="fixed" data-ind="0" style="height: 100%;">
			<div id="box1" class="boxs">1</div>
		</div>
		<div class="fixed" data-ind="1">
			<div id="box2" class="boxs">2</div>
		</div>
		<div class="fixed" data-ind="2">
			<div id="box3" class="boxs">3</div>
		</div>
		<div class="fixed" data-ind="3">
			<div id="box4" class="boxs">4</div>
		</div>
		<div class="fixed" data-ind="4">
			<div id="box5" class="boxs">5</div>
		</div>
	</body>
</html>
<script>
	$(function(){
		var h = $(window).height();
		var arr  =$(".fixed");
		$("body").height(h*arr.length);
		$(".boxs").height(h);
		$(document).scroll(function(){
			var top = $(document).scrollTop();
			var ind = parseInt(top/h);//第几个
			var rem = top%h;//余数
			var per = parseInt((rem/h)*100);//变化百分比
			console.log(ind,per)
			$(".fixed[data-ind='"+(ind+1)+"']").css('height',per+'%')
		})
	})
	$.prototype.arr = function () {
	    var that = this;
	    var arr = [];
	    for (var i = 0; i < that.length; i++) {
	        arr.push($(that[i]));
	    }
	    return arr;
	}
</script>

思路解释

  • 就是在滚动事件中关联上对应的效果
  • 然后给每一个图层一个z-index的层级,这样子就可以展现出效果了
  • 未完,缓缓

以上是关于html5 视觉差滚动效果怎么实现的主要内容,如果未能解决你的问题,请参考以下文章

全屏背景视觉差滚动效果

每天学一个jquery插件-滚动视觉差

原生JS和JQuery代码编写窗口捕捉函数和页面视觉差效果(scroll()offsetTop滚动监听的妙用)

每天学一个juqery插件-水一下滚动

网页中的图片滚动效果是怎么实现的啊?

如何用html5实现左侧是滚动菜单,选中后右边呈现效果