js基础教程四之无缝滚动

前面学习了相关js的一些基础知识,这节主要针对定时器作综合运用:

无缝滚动-基础

效果演示:

*物体运动基础

*让div移动起来

*offsetLeft的作用

*用定时器让物体连续移动

<style type="text/css">
#div1{ width:100px; height:100px; background:#CCC; margin-top:10px; position:absolute; left:0px;}
</style>
<script type="text/javascript">
window.onload=function()
{
	var begin = document.getElementById("begin");
	var stopp = document.getElementById("stopp");
	var div1 = document.getElementById("div1");
	var timer = null;

	begin.onclick = function()
	{
	    timer = setInterval(function(){
	    div1.style.left = div1.offsetLeft + 5 + "px";
	     },30);
             //alert(div1.offsetLeft);   返回0
             ////在用offsetLeft时一定要在css里设置其left,否则取到的将是Null值,还有相应的position

	};
	stopp.onclick = function()
	{
        clearTimeout(timer);
	};
};
</script>
</head>
<body>
<input id="begin" type="button" value="向左移动" />
<input id="stopp" type="button" value="停止移动" />
<div id="div1"></div>
</body>

--效果原理

让ul一直向左移动

复制li

a),innerHTML和 + ‘‘

b),修改ul的width

滚动过界后,重设位置

a).判断过界

相关代码:

<style type="text/css">
#div1{ width:100px; height:100px; background:#CCC; margin-top:10px; position:absolute; left:0px;}
.roll{ width:400px; height:120px; margin:50px auto 0; position:relative;}
img{ width:100px; height:100px; border:#FC9 1px solid;}
.btnLeft { display:block; width:30px; height:30px; background:url(pic/PagePre.png) no-repeat 12px 10px; position:absolute; top:50px; left:1px; z-index:1px; }
.btnLeft:hover { background:url(pic/PagePre.png) no-repeat 12px 9px;}
.btnRight{ display:block; width:30px; height:30px; background:url(pic/PageNext.png) no-repeat 1px 16px; position:absolute; top:50px; right: 0; z-index:1;}
.btnRight:hover { background:url(pic/PageNext.png) no-repeat 1px 15px;}
.warp { width:400px; height:120px; margin:0 auto; position:relative; overflow:hidden;}
ul{ list-style-type:none; position:absolute;}
li{ float:left; width:100px; height:100px; text-align:center;}
</style>
<script type="text/javascript">
window.onload=function()
{
	var oDiv= document.getElementById("roll");
	var oUI = document.getElementsByTagName("ul")[0];
	var oLi = document.getElementsByTagName("li");

	//var oLeft = document.getElementById("left"); 向左按钮
	//var oRight = document.getElementById("right"); 向右按钮

	var wapDiv = document.getElementById("wap");
	var timer = null;
	var isSpeed = -5;

    oUI.innerHTML += oUI.innerHTML;
    oUI.style.width = oLi[0].offsetWidth * oLi.length + "px"; //400  

	timer = setInterval(function margin(){
	    oUI.style.left = oUI.offsetLeft + isSpeed + "px";
	    if(oUI.offsetLeft < -oUI.offsetWidth/2)
		{
		  oUI.style.left = ‘0px‘ ;
		}else if(oUI.offsetLeft > 0)
		{
           oUI.style.left = -oUI.offsetWidth /2;
		}
	    },30);

	wapDiv.onmouseout = function()  //鼠标放上去
	{
	    timer = setInterval(function margin(){
	    oUI.style.left = oUI.offsetLeft + isSpeed + "px";
	    if(oUI.offsetLeft < -oUI.offsetWidth/2)
		{
		  oUI.style.left = ‘0px‘ ;
		}else if(oUI.offsetLeft > 0)
		{
                 oUI.style.left = -oUI.offsetWidth /2;
		}
	    },30);
	};

	wapDiv.onmouseover = function() //鼠标移走
	{
		clearTimeout(timer);
	};
<div class="roll" id="roll">
<a href="javascript:void(0);" id="left" class="btnLeft"></a>
<a href="javascript:void(0);" id="right" class="btnRight"></a>
<div id="wap" class="warp">
 <ul>
  <li> <img src="pic/1.jpg" /> </li>
  <li> <img src="pic/2.jpg" /> </li>
  <li> <img src="pic/3.jpg" /> </li>
  <li> <img src="pic/4.jpg" /> </li>
  <li> <img src="pic/1.jpg" /> </li>
  <li> <img src="pic/2.jpg" /> </li>
  <li> <img src="pic/3.jpg" /> </li>
  <li> <img src="pic/4.jpg" /> </li>
</ul>
</div>
</div>

向左向右的功能还有待完善,只需改变isSpeed=5;的参数,这里只有鼠标移入移出事件,类似效果图:

时间: 2024-11-13 07:30:17

js基础教程四之无缝滚动的相关文章

js函数——倒计时模块和无缝滚动

倒计时 效果: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>倒计时函数</title> <script> var timer=(function(){ return function (json){ if(json.currentTime){ var now=new Date();

js从右向左无缝滚动原理

今天公司的首页新增一个公告需求,类似于如下这段代码的效果,做完以后仔细思考了一下其中的原理 在说原理之前建议先看看我上一篇 HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth之完全详解 这篇文章,里面例图即视化的解释了各种定位的不同,以及在各浏览器下不同的解析结果. 不敲太多的文字,直接上代码,干货都在注释里 <!DOCTYPE html> <head> <meta http-equiv="Content-

js原生选项(包含无缝滚动轮播图)一

原生js选项卡的几种写法,整片文章我会由简及难的描述几种常用的原生选项卡的写法: Improve little by little every day! 1>基本选项卡: 思路:循环中先清除再添加,注意this的指向和自定义属性的应用 html代码: <div id="tab"> <input class="on" type="button" value="aaa"> <input type

js基础教程学习笔记

document.write(); document.getElementById(); <script type="text/javascript"></script> 表示在<script></script>之间的文本类型text,javascript是为了告诉浏览器里面的文本是javascript语言 我们可以把js代码与html代码分开,并在html中引用: <script src="script.js"

Three.js基础探寻四——立方体、平面与球体

前面简单介绍了webGL和Three.js的背景以及照相机的设定,接下来介绍一些Three.js中的几何形状. 1.立方体 虽然这一形状的名字叫立方体(CubeGeometry),但它其实是长方体,也就是长宽高可以设置为不同的值.其构造函数是: THREE.CubeGeometry(width,height,depth,widthSegments,heightSegments, depthSegments) width:x方向上的长度 height:y方向上的长度 depth:z方向上的长度 w

js中的数组/对象(阮一峰的js基础教程)

//打印出键值1 Object.keys(array1) 2 ["0", "1", "2", "3", "4", "5"] Object.keys方法返回数组的所有键名.js规定:对象的键名一律为字符串,所以,数组的键名其实也是字符串.之所以可以用数值读取,是因为非字符串的键名会被转为字符串. arr.0的写法不合法,因为单独的数值不能作为标识符(identifier).所以,数组成员只

React.js 基础入门四--要点总结

JSX语法,像是在Javascript代码里直接写XML的语法,实质上这只是一个语法糖,每一个XML标签都会被JSX转换工具转换成纯Javascript代码,React 官方推荐使用JSX, 当然你想直接使用纯Javascript代码写也是可以的,只是使用JSX,组件的结构和组件之间的关系看上去更加清晰. 1. HTML 标签 和 React 组件 在JS中写HTML标签,也许小伙伴们都惊呆了,那么React又是怎么区分HTML标签,React组件标签? HTML标签: var myDivEle

js基础第四天

多个tab栏切换class封装 <style>         *{margin:0;padding:0;}         ul{list-style:none;}         .box {             width: 350px;             height: 300px;             border:1px solid #ccc;             margin: 100px auto;             overflow: hidden; 

HTML/CSS基础教程 四

CSS CSS(Cascading Style Sheets): 层叠样式表 . 它是一种用来表现HTML或XML等文件样式的计算机语言. CSS能够让网页表现与内容分离, 相对于HTML的表现而言, CSS能够对网页中的对象的位置排版进行像素级的精确控制, 支持几乎所有的字体字号样式, 拥有对网页对象和模型样式编辑的能力, 并能够进行初步交互设计, 是目前基于文本展示最优秀的表现设计语言. 上面这段来自百度百科对CSS的定义,我的理解是CSS将每个HTML标签的style进行单独的定义,这样就