javascript 书写无缝滚动。

2024-06-08 19:08
文章标签 java script 滚动 书写 无缝

本文主要是介绍javascript 书写无缝滚动。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

废话少说,献上demo 源码 大家自己下载看效果。

先放上html代码:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>无缝滚动</title><link rel="stylesheet" href="static/css/aio.css" />
</head><body><h1>无缝滚动</h1><div class="btn l-btn" id="l-btn"><</div><div class="btn r-btn" id="r-btn">></div><div class="banner" id="banner"><ul class="move" id="move"><li><a href="#"><img src="static/images/1.jpg" alt=""></a></li><li><a href="#"><img src="static/images/2.jpg" alt=""></a></li><li><a href="#"><img src="static/images/3.jpg" alt=""></a></li><li><a href="#"><img src="static/images/4.jpg" alt=""></a></li></ul></div>	<script type="text/javascript" src="static/js/test.js"></script>
</body>
</html>

接下来就是css文件对页面的格式进行了简单的布局。

/*!/css/demo.scss*/
body{text-align: center;background-color: #FFCCFF;
}
.banner {position: relative;margin: 50px auto 0;width: 800px;height: 120px;border: 2px solid #fff;overflow: hidden;
}.banner .move {position: absolute;
}.banner ul {margin: 0;padding: 0;list-style-type: none;font-size: 0;
}.banner ul li {display: inline-block;
}.btn {margin-top: 40px;width: 30px;height: 100px;background-color: rgba(255, 255, 255, .3);line-height: 100px;text-align: center;font-size: 60px;font-weight: bold;cursor: pointer;
}.l-btn {float: left;
}.r-btn {float: right;
}

接下就是原生的js代码

window.onload =function() {var oDiv = document.getElementById('banner');var oUl = oDiv.getElementsByTagName('ul')[0];var oLi = oUl.getElementsByTagName('li');var speed = -2;oUl.innerHTML+=oUl.innerHTML;oUl.style.width = oLi[0].offsetWidth*oLi.length+'px';function move(){oUl.style.left = oUl.offsetLeft +speed +"px";if(oUl.offsetLeft < -oUl.offsetWidth/2){     //宽度没有负值,但是offsetLeft有,所以(-)不能忘记oUl.style.left = 0;}if(oUl.offsetLeft > 0){oUl.style.left = -oUl.offsetWidth/2 + 'px';}}var time = setInterval(move,30);//鼠标放上去和移出的暂停效果oDiv.onmouseover = function(){clearInterval(time);}oDiv.onmouseout = function(){time = setInterval(move,30);}var lBtn =document.getElementById('l-btn');var rBtn =document.getElementById('r-btn');// 左右控制的效果lBtn.onclick = function(argument) {speed = -2;}rBtn.onclick =function(){speed = 2;}
}
一,首先获取到元素节点。

二,我们先申请一个speed变量,因为到后面 我们可以用它来控制速度和滚动的方向。

三,动态多创建一份li元素,这里不好解释,大家可以注释之后看代码。就能明白它的意义了。

四,为了能让oUl的宽度装下所有的oLi,所以用一个oLi的宽度去乘以oLi的length.加上px就可以了(ps:一定要加‘px’,除非宽度是0.因为style.width是个string类型)

五,在move函数里面,主要就是对位置的判断了。大家可以自己去琢磨一下。(代码无缝滚动效果的原理是:改变了div 的left值。)

我自己在写的时候,总是搞不清element.style.left 和element.offsetLeft。如果你也是一样, 请戳这里!

这篇关于javascript 书写无缝滚动。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1043048

相关文章

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Java中的工具类命名方法

《Java中的工具类命名方法》:本文主要介绍Java中的工具类究竟如何命名,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java中的工具类究竟如何命名?先来几个例子几种命名方式的比较到底如何命名 ?总结Java中的工具类究竟如何命名?先来几个例子JD

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依