无缝滚动的算法

一早上的时间做了一个简单的无缝滚动,遇到的问题特别的多,而且对无缝滚动的算法也不是特别的清楚。

无缝滚动效果的原理:就是几个图片  浮动成为一排;然后让图片滚动,正常情况下图片滚完,就留下了后面的空白,而我们的处理的逻辑就是让图片滚动到ul长度的一半的时候,迅速将ul拉回开始的位置。

遇到的问题:1、图片的路径问题

      2、/、\这两个的区别;windows系统:反斜杠“\“用来表示目录;正斜杠“/”用来表示网址、Url地址。

      3、绝对定位 相对定位

      4、算法的问题,包括 ul的width,滚动到ul长度的一半的时候,设置为0;

      5、初始化的问题,若没有初始化,ul和div会有出入;

      6、margin 0 auto,无法居中的问题;解决办法:要居中的元素,无浮动,无定位(居中前至少么有)

解决办法:

如果不给一个div添加绝对定位或者相对定位属性,而就去改动他的left和top值 是没有效果的。div的left和top会一直是初始值。
相对定位是“相对于”元素在文档中的初始位置;
绝对定位是“相对于”最近的已定位祖先元素,如果不存在已定位的祖先元素,那么“相对于”整个document.
windows系统:反斜杠“\“用来表示目录;正斜杠“/”用来表示网址、Url地址。

 

<style>* {margin: 0px;padding: 0px;//若没有初始化,会出现div和ul尽管宽度高度一样,却无法重合的怪像;
}#div1{width:1120px;height: 151px;margin: 100px auto; //居中的元素不能有定位,不能有浮动(至少该行代码之前并无)background: red;position: relative;//相对定位是让div相对自己来移动overflow: hidden;}#div1 ul{position: absolute;//要让一个物体运动起来,必须要给加上position属性。给ul加绝对定位,用意在于滚动的时候整个ul可以以一个整体来动,不用单个li运动

     left:0px;
        top:0px;}#div1 ul li{float: left;list-style-type:none;width: 280px;height: 151px;}
</style>
<body><div id="div1"><ul><li><img src="img/1.png" /></li><li><img src="img/3.jpg" /></li><li><img src="img/4.jpg" /></li><li><img src="img/5.jpg" /></li></ul></div>
</body>
<script>window.onload = function(){var oDiv = document.getElementById('div1');var oUl = oDiv.getElementsByTagName('ul')[0];var aLi = oUl.getElementsByTagName('li');oUl.innerHTML = oUl.innerHTML+oUl.innerHTML;oUl.style.width = aLi[0].offsetWidth * aLi.length+'px';setInterval(function(){if(oUl.offsetLeft<-oUl.offsetWidth/2){

oUl.style.left = '0';}else{oUl.style.left = oUl.offsetLeft-2+'px';}},30);} </script>
//offsetLeft 和 offsetTop 是元素自身在绝对定位时相对于父元素的值。

//style.left是可写的,他接受offsetleft的赋值。
//style.left设置某个元素的位置,是实时刷新的,而且left是可以设置的。返回的是字符串。

//这里意思是,用任意一个li的宽度*li的length.这样算出的就是ul的宽度,这样就避免了ul占2行的情况。

<script>window.onload = function(){var oDiv = document.getElementById('div1');var oUl = oDiv.getElementsByTagName('ul')[0];var aLi = oUl.getElementsByTagName('li');oUl.innerHTML = oUl.innerHTML+oUl.innerHTML;oUl.style.width = aLi[0].offsetWidth * aLi.length+'px';setInterval(function(){if(oUl.offsetLeft<-oUl.offsetWidth/2){
                oUl.style.left = '0';}if(oUl.offsetLeft>0){oUl.style.left=-oUl.offsetWidth/2+'px';//处理图片滚完断层的问题,向右边滚动,当滚动一半的时候要将ul往左扯,扯回去的位置肯定是负的,所以要加-号
            }oUl.style.left = oUl.offsetLeft+2+'px';//这个是向右边滚动},30);}
</script>

 

转载于:https://www.cnblogs.com/Jerry-spo/p/6514184.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ACM题目————一笔画问题

描述 zyc从小就比较喜欢玩一些小游戏&#xff0c;其中就包括画一笔画&#xff0c;他想请你帮他写一个程序&#xff0c;判断一个图是否能够用一笔画下来。 规定&#xff0c;所有的边都只能画一次&#xff0c;不能重复画。 输入第一行只有一个正整数N(N<10)表示测试数据的组数…

HALCON示例程序color_fuses_lut_trans.hdev通过颜色对保险丝进行分类

HALCON示例程序color_fuses_lut_trans.hdev通过颜色对保险丝进行分类 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_off ()定义变量并初始化&#xff0c;这些变量都是下边识别要用到的 FuseColors : [‘Orange’,‘Red’,‘Blue’,‘Yellow’,…

上海电驱动

从行业前景上来说还可以&#xff0c;但这个公司不行&#xff0c;公司各种坑&#xff0c;从上到下各种腐败&#xff0c;打酱油的人比较多&#xff0c;在薪资方面除了技术部稍好一点&#xff0c;其他部门我建议你最好别去了&#xff0c;整体上这个公司员工没幸福感&#xff01;只…

1056. 组合数的和(15)

1056. 组合数的和(15) 时间限制400 ms内存限制65536 kB乙级练习题解目录给定N个非0的个位数字&#xff0c;用其中任意2个数字都可以组合成1个2位的数字。要求所有可能组合出来的2位数字的和。例如给定2、5、8&#xff0c;则可以组合出&#xff1a;25、28、52、58、82、85&#…

3、时间和随机数

一、时间 1.1 使用Calendar/[ˈkləndɚ]/类获取时间 1.1.1 常用方法 (1)public static Calendar getInstance&#xff08;&#xff09;: 使用默认时区和语言环境获取一个基于当前时间的Calendar对象。 (2)public int get(int field) 返回给定日历字段表示的日历部分的数字…

哥尼斯堡的“七桥问题” (欧拉回路,并查集)

哥尼斯堡的“七桥问题” (25分) 哥尼斯堡是位于普累格河上的一座城市&#xff0c;它包含两个岛屿及连接它们的七座桥&#xff0c;如下图所示。 可否走过这样的七座桥&#xff0c;而且每桥只走过一次&#xff1f;瑞士数学家欧拉(Leonhard Euler&#xff0c;1707—1783)最终解决…

HALCON示例程序color_pieces.hdev通过MLP训练器对彩色棋子进行分类识别

HALCON示例程序color_pieces.hdev通过MLP训练器对彩色棋子进行分类识别&#xff1b;分别在彩色图像下与灰度图像下进行&#xff0c;从而产生对比。 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_off () dev_close_window () dev_open_window (…

无人驾驶汽车之争本田为何未战先败

摘要 : 本田汽车的研发部门对于汽车虽然理解深刻&#xff0c;但从整体而言&#xff0c;本田的造车理念还停留在上个时代&#xff0c;在未来的无人驾驶竞争中&#xff0c;本田已经有未战先啊败的苗头。 百度百家The BIG Talk硅谷站连续5小时的高密度头脑风暴&#xff0c;果然让人…

理解git结构与简单操作(四)合并分支的方法与策略

接上节&#xff0c;此时的dev分支与master分支的进度就不一样了&#xff0c;所以需要将dev分支与master分支同步。这里需要的就是合并分支的操作&#xff0c;大家应该都知道用git merge或者git rebase。 git merge merge&#xff0c;即「合并」。 fast-forward 当出现我们上面图…

HALCON示例程序color_segmentation_pizza.hdev披萨肉饼识别。

HALCON示例程序color_segmentation_pizza.hdev披萨肉饼识别。 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_off () dev_close_window () read_image (Image, ‘color/pizza_01’) get_image_size (Image, Width, Height) dev_open_window (0,…

摄像机标定

利用摄像机所拍摄到的图像来还原空间中的物体。在这里&#xff0c;不妨假设摄像机所拍摄到的图像与三维空间中的物体之间存在以下一种简单的线性关系&#xff1a;[像]M[物],这里&#xff0c;矩阵M可以看成是摄像机成像的几何模型。 M中的参数就是摄像机参数。通常&#xff0c;这…

Linux下Tomcat重新启动

在Linux系统下&#xff0c;重启Tomcat使用命令操作的&#xff01; 首先&#xff0c;进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 使用Tomcat关闭命令 ./shutdown.sh 查看Tomcat是否以关闭 ps -ef|grep java 如果显示以下相似信息&#xff0c;说明Tomcat还没有关闭 root …

大数据和人工智能的关系是什么?

何为大数据&#xff1f;何为人工智能&#xff1f; 大数据&#xff0c;百度百科上是这么定义的&#xff0c;指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率…

【2017-03-09】SQL Server 数据库基础、四种约束

一、数据库和内存的区别 数据库&#xff1a;一些存储在硬盘上的数据文件 内存&#xff1a;计算机临时存储的一些数据 二、常用数据库 .Net - SQL Server PHP - MySql Java - Oreacl 三、SQL Server使用方法 1、新建数据库 右键点击“数据库”&#xff0c;点击“新建数据库”。在…

HALCON示例程序color_simple.hdev在HSV空间筛选黄色线

HALCON示例程序color_simple.hdev在HSV空间筛选黄色线 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_close_window () dev_open_window (0, 0, 640, 480, ‘black’, WindowHandle) for i : 1 to 2 by 1 read_image (Image, ‘cable’ i) 将彩色图片…

张正友标定法 【计算机视觉学习笔记--双目视觉几何框架系列】

三、致敬“张正友标定” 此处“张正友标定”又称“张氏标定”&#xff0c;是指张正友教授于1998年提出的单平面棋盘格的摄像机标定方法。张氏标定法已经作为工具箱或封装好的函数被广泛应用。张氏标定的原文为“A Flexible New Technique forCamera Calibration”。此文中所提到…

SQL基础三

关系数据库操作语言 对关系数据库进行操作标准语言是所谓的结构化查询语言SQL&#xff0c;和其他程序语言不一样的是&#xff0c;它是非过程语言。 SQL采用自然英语的结构&#xff0c;比较容易上手&#xff0c;目前SQL已经有了ANSI标准&#xff0c;哥哥数据库厂商除了SQL语法外…

HTTP状态码详解

HTTP状态码介绍 createTime--2016年9月24日09:41:48 参考链接&#xff1a;http://www.w3school.com.cn/tags/html_ref_httpmessages.asp概括&#xff1a;   1字开头&#xff1a;消息。信息性状态码&#xff0c;代表请求已被接受&#xff0c;需要继续处理。&#xff08;接受的…

HALCON示例程序connection.hdev分割连通域

HALCON示例程序connection.hdev分割连通域 示例程序源码&#xff08;加注释&#xff09; read_image (Image, ‘mreut’) 二值化 threshold (Image, Region, 190, 255)分割连通域 connection (Region, ConnectedRegions)使用面积进行筛选 select_shape (ConnectedRegions, S…

一张图学习常见this的指向

在写JS代码时&#xff0c;this的出场频率颇高&#xff0c;担负了传递对象&#xff0c;作用域等等功能&#xff0c;堪称全能超人。 但是this复杂多变&#xff0c;初学的时候想弄清楚并不简单&#xff0c;绕着绕着就迷路了。“我是谁&#xff1f;我从哪来&#xff1f;我要到哪去&…