前端学习无缝滚动

style-left与offsetleft的区别

1.style.left的值需要事先定义,否则取到的值为空。而且必须要定义在html里,我做过试验,如果定义在
css里,style.left的值仍然 为空,这就是我刚开始碰到的问题,总是取不到style.left的值。

offsetLeft则仍然能够取到,无需事先定义div的位置。
2. style.left 返回的是字符串,如28px,offsetLeft返回的是数值28,如果需要对取得的值进行计算,
还用offsetLeft比较方便。
offsetLeft是一个物体到达左边的距离,是个度量单位,而style.left是一个变量,可以有offsetLeft赋予它值。

无缝滚动

<!DOCTYPE html>
<html>
	<head>
		<title>js.xuexi</title>
		<link href="miaov_style.css" rel="stylesheet" type="text/css" />

		<script type="text/javascript">
		window.onload=function(){
			var oDiv=document.getElementById('roll');
			var oUl=oDiv.getElementsByTagName('ul')[0];
			var aLi=oUl.getElementsByTagName('li');
			var oBtn=oDiv.getElementsByTagName('a');
			var ispeed=5;
			var timer=null;
			oUl.innerHTML+=oUl.innerHTML;
			oUl.style.width=aLi[0].offsetWidth*aLi.length+'px';
			
			timer=setInterval(function(){
				oUl.style.left=oUl.offsetLeft+ispeed+'px';
				if(oUl.offsetLeft<-oUl.offsetWidth/2)
				{
					oUl.style.left='0px';
				}
				else if(oUl.offsetLeft>0)
				{
					oUl.style.left=-oUl.offsetWidth/2+'px';
				}
			
			},30);

		
			oBtn[0].onmouseover=function(){
		 		ispeed=-5;
			};
			oBtn[1].onmouseover=function(){
				ispeed=5;
			};
			oUl.onmouseover=function(){
				clearInterval(timer);

			}
			oUl.onmouseout=function(){

				timer=setInterval(function(){
				oUl.style.left=oUl.offsetLeft+ispeed+'px';
				if(oUl.offsetLeft<-oUl.offsetWidth/2)
				{
					oUl.style.left='0px';
				}
				else if(oUl.offsetLeft>0){
					oUl.style.left=-oUl.offsetWidth/2+'px';
				}
			
			},30);
		
		};
	};





		</script>
	</head>
<body>
	
	<div class="roll" id="roll">
	    <a href="javascript:void(0);" class="btn_left"></a>
	    <a href="javascript:void(0);" class="btn_right"></a>
	    <div class="wrap">
	        <ul>
	            <li><a href="http://www.miaov.com/"><img src="images/1.jpg" /></a></li>
	            <li><a href="http://www.miaov.com/"><img src="images/2.jpg" /></a></li>
	            <li><a href="http://www.miaov.com/"><img src="images/3.jpg" /></a></li>
	            <li><a href="http://www.miaov.com/"><img src="images/4.jpg" /></a></li>
	        </ul>
	    </div>
	</div>
</body>
</html>

获取ul的宽度

oUl.style.width=aLi[0].offsetWidth*aLi.length+‘px’;

offsetLeft (左边距)距离左边的距离

offsetTop(上边距)距离上边的距离

offsetWidth(宽度)这个事物的宽度

offsetHeight(高度)这个事物的高度

前端HTML中实现无缝滚动列表通常可以使用CSS技术和JavaScript来配合完成。下面是一种常见的做法: 1. **使用`<div>`标签**:首先创建一个包含所有项目(如列表项)的`<div>`元素,作为滚动区域。 ```html <div class="scrolling-container"> <ul id="list-items"> <!-- 项目列表 --> </ul> </div> ``` 2. **设置样式**:给`.scrolling-container`添加样式,使其达到无缝滚动的效果。这包括设置高度、overflow属性以及`display`属性等。 ```css .scrolling-container { overflow-y: scroll; height: 200px; /* 设置合适的高度 */ display: flex; align-items: center; justify-content: center; } ``` 3. **使用JavaScript**:如果希望内容超出容器仍然可见,可以在JavaScript中监听滚动事件,当滚动到底部时,动态加载更多数据并插入到列表底部。 ```javascript const listItems = document.getElementById('list-items'); let moreData = true; window.addEventListener('scroll', function() { if (moreData && window.innerHeight + window.scrollY >= listItems.scrollHeight) { // 加载更多数据... loadMoreData(); } }); function loadMoreData() { // 添加新的项目到列表末尾 const newItems = createNewItems(); // 这里需要替换为你实际的数据获取方法 listItems.appendChild(newItems); // 更新是否还有更多数据的状态 moreData = false; } ``` 这样,当你滚动到底部时,列表会自动加载更多项目,看起来就像一个无限滚动的列表,实现了无缝效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值