js之div盒子的移动和网页轮播图

轮播图效果的实现 轮播图效果的实现,实现自动轮播,左右按钮切换,点选图片 阅读详情

目录

一、盒子的移动

1.匀速运动

2.缓动运动

二、网页轮播图

节流阀


一、盒子的移动

1.匀速运动

通过函数封装代码段

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>盒子的移动</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        .box{
            width: 200px;
            height: 200px;
            background-color: blue;
            position: absolute;
            left: 0px;
        }
        .box2{
            background-color: red;
            margin-top: 210px;
        }
    </style>
</head>
<body>
    <div class="box box1"></div>
    <div class="box box2"></div>
    <script>
        var box1=document.querySelector('.box1');
        var box2=document.querySelector('.box2');
        // var myInter=setInterval(function () {
        //     var offsetLeft=box1.offsetLeft;
        //     // console.log(offsetLeft);
        //     var num=10;//每次都移动10个像素
        //     var target=100;
        //     if(offsetLeft==target){
        //         clearInterval(myInter);
        //     }else{
        //         box1.style.left=offsetLeft+num+'px';
        //     }
        // },1000)
        //匀速运动  封装上面的代码块设计一个匀速运动的函数
        function move(obj,target){
            obj.myInter=setInterval(function () {
            var offsetLeft=obj.offsetLeft;
            // console.log(offsetLeft);
            var num=10;//每次都移动10个像素
            // var target=100;
            if(offsetLeft==target){
                clearInterval(obj.myInter);
            }else{
                obj.style.left=offsetLeft+num+'px';
            }
        },1000)
        }
        box1.onclick=function(){
            move(this,100);
        }

        
    </script>
</body>
</html>

2.缓动运动

注意:有一个滑动效果,每次移动的距离都是由大到小

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>盒子的移动</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        .box{
            width: 200px;
            height: 200px;
            background-color: blue;
            position: absolute;
            left: 0px;
        }
        .box2{
            background-color: red;
            margin-top: 210px;
        }
    </style>
</head>
<body>
    <div class="box box1"></div>
    <div class="box box2"></div>
    <script>
        var box1=document.querySelector('.box1');
        var box2=document.querySelector('.box2');
        // var myInter=setInterval(function () {
        //     var offsetLeft=box1.offsetLeft;
        //     // console.log(offsetLeft);
        //     var num=10;//每次都移动10个像素
        //     var target=100;
        //     if(offsetLeft==target){
        //         clearInterval(myInter);
        //     }else{
        //         box1.style.left=offsetLeft+num+'px';
        //     }
        // },1000)
        //匀速运动  封装上面的代码块设计一个匀速运动的函数
        function move(obj,target){
            obj.myInter=setInterval(function () {
            var offsetLeft=obj.offsetLeft;
            // console.log(offsetLeft);
            var num=10;//每次都移动10个像素
            // var target=100;
            if(offsetLeft==target){
                clearInterval(obj.myInter);
            }else{
                obj.style.left=offsetLeft+num+'px';
            }
        },1000)
        }
        box1.onclick=function(){
            move(this,100);
        }

        //缓动运动 有个滑动效果  每次移动的距离 由大到小改变
        //思路  要移动100 可以先走40  再走30 再走20 最后走10 这样移动越来越慢

        function slow(obj,target){
            obj.myInter=setInterval(function(){
                var offsetLeft=obj.offsetLeft;
                var num=(target-offsetLeft)/10;
                num>0?num=Math.ceil(num):num=Math.floor(num);
                //注意 随着定时器的运行 num数值会由大到小变化
                //因为offsetLeft的值在变大
                if(offsetLeft==target){
                    clearInterval(obj.myInter);//清除定时器
                }else{
                    obj.style.left=offsetLeft+num+'px';
                }
            },1000)
        }
        box2.onclick=function(){
            slow(this,100);
        }
    </script>
</body>
</html>

二、网页轮播图

节流阀

防止轮播图按钮连续点击造成播放过快。

节流阀目的:当上一个函数动画内容执行完毕,再去执行下一个函数动画,让事件无法连续触发。

核心实现思路:利用回调函数,添加一个变量来控制,锁住函数和解锁函数。


<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			*{
				padding: 0px;
				margin: 0px;
			}
			.banner{
				 width: 600px;
				 margin: auto;
				 border: 10px solid green;
				 height: 350px;
				 position: relative;
				 /* overflow: hidden; */
			}
			.imgList img{
				width: 600px;
				 height: 350px;
			}
			.imgList{
                /* width: 2600px; */
                /* left: -1240px; */
				 position: absolute;
			}
			.imgList li{
				float:left;
				margin-right: 20px;
				 list-style: none;
			}
			.circle{position: absolute;bottom: 15px;left:50%;transform: translateX(-50%);}
			.circle a{
				 width: 15px;
				 height: 15px;
				 background: green;
				 display: block;
				 border-radius: 50%;
				 opacity: .8;
				 float: left;
				 margin-right: 10px;
                 cursor: pointer;
			}
			.circle a.hover{
				background: black;
				 opacity: .7;
			}
		</style>
	</head>
	<body>
		<div class="banner">
			
			<ul class="imgList">
				<li><img src="./img/1.png"/></li>
				<li><img src="./img/2.jpg"/></li>
				<li><img src="./img/3.jpg"/></li>
				<li><img src="./img/4.jpg"/></li>
				
			</ul>
			<div class="circle">
				<!-- <a href="javascript:;"></a>
				<a href="javascript:;"></a>
				<a href="javascript:;"></a> -->
			</div>
		</div>
        <!-- 节流阀理解 -->
		<!-- 点击圆圈    是不是有个动画
			再点击圆圈   是不是有个动画
			自动切换   是不是又是一个动画
			那么这些动画再同时执行时 可能会出问题
			怎么解决? ->  一个动画执行完 再去执行另外一个动画
			
			flag = true;
			a动画
			if(flag){这里面再执行动画
				flag = false
				move(a,b,function(){
					flag = true  函数执行完后将flag改成true
				})这是个动画
			}
			
			b动画
			if(flag){是true时执行动画
				flag = false
				move(a,b,function(){
					flag = true  函数执行完后将flag改成true
				})
				这是个动画
			} -->	
        
        <!-- 实现 点击小圆点 图片滑动  小圆点样式改变 -->
		<script type="text/javascript">
			// 确定ul的宽度 动态的创建小圆点
			var imgList = document.querySelector('.imgList');
			var circle = document.querySelector('.circle');
			var circleA = circle.children;
			var imgListli = imgList.children;
			// console.log(imgListli);
			// thisIndex默认索引值是0
			var thisIndex = 0;
			// console.log(imgList.children.length);
			// window.onload延迟加载函数
			var flag = true;//再全局设置flag为true 让所有动画都可执行
			window.onload = function(){
				//给ui标签设置宽度
				 imgList.style.width =imgList.children.length*620+'px';
				 
				 //下面动态创建a标签
				 for (var i = 0; i < imgList.children.length; i++) {
				 	var aNode = document.createElement('a');
					
					//我们在这里创建index属性来记录索引值
					aNode.setAttribute('index',i);
					circle.appendChild(aNode);
				 }
				 
				 
				 // a动画
				 //给小圆点加点击事件
				circle.addEventListener('click',function(e){
					
					//这里给a标签点击事件有个小bug 就是我们鼠标点击到.circle标签时候图片也滑动了 
					//解决上面小bug的方法
					if(e.target.nodeName !='A'){
						return false;
					}
					
					if(flag){
						flag = false;
						// e.target指向的是a标签
						console.log(e.target);
						// console.log(e.target.nodeName);
						// 获得索引值
						 thisIndex = e.target.getAttribute('index');
						// console.log(thisIndex);
						//图片移动的规则 0索引值 ->0  1 ->-1*620  2 ->-2*620 
						
						// 这里的图片移动 我们可以用封装好的缓动动画来实现
						// imgList.style.left = -thisIndex*620+'px';
						slow(imgList,-thisIndex*620,function(){
							flag = true;
						});
						//调用小圆点改变样式的函数
						circlechange();
					}
				
				})
				
				// b动画
				//自动切换动画
				function autoChange(){
					// 设置定时器
					setInterval(function(){
						if(flag){
							flag = false;
							if(thisIndex>=imgListli.length){
								thisIndex = 0;
							}
							
							
							slow(imgList,-thisIndex*620,function(){
								flag = true;
							});
							circlechange();
							// console.log(thisIndex);
							//利用缓动函数 让图片动起来
							//注意 这里先图片移动 再thisIndex自增
							 thisIndex++;
						}
						
						
						
					},2000)
					
				}
				
				autoChange();
				
				
				function circlechange(){
					//先清除样式 再添加样式
					for (var i = 0; i <circleA.length; i++) {
						circleA[i].className = '';
					}
					circleA[thisIndex].className = 'hover';
				}
				
				//缓动动画
				function slow(obj,target,getflag){
					obj.myInter = setInterval(function(){
						var  offsetLeft = obj.offsetLeft;
						var num = (target-offsetLeft)/10;
						// Math.ceil向上取整 Math.floor向下取整
						num>0?num = Math.ceil(num):num=Math.floor(num);
						//注意 随着定时器的运行 num数值会由大到小发生变化
						// 因为offsetLeft的值在变大
						if(offsetLeft==target){
							clearInterval(obj.myInter);//清除定时器
							
							//再动画执行完了 执行将flag改为true的函数
							// 下面是固定写法
							getflag && getflag();
						}else{
							obj.style.left = offsetLeft+num+'px';
						}
					},10)
				}
			}
			
			
			
		</script>
	</body>
</html>

 

移动端网页轮播图 移动端网页轮播图,不必考虑兼容性问题,CSS两个属性实现元素的动画效果及缓冲特效,通过 classList 属性移除、添加类名,轻松实现小圆点的跟随效果。 阅读详情

相关推荐

JS实例——手写网页轮播图

JS手写网页轮播图,拆分模块进行手写。含有自动播放,但没有添加节流操作。 需要准备四个模块: 一个大的盒子进行包裹(main)、(focus f1) 左右元素按钮(arrow-l、arrow-r) 小圆点滚动显示(circle) 核心滚动模块图片

Thaley的博客 2397

多个div实现轮播效果

四个div实现轮播效果先上效果图图片附件贴代码(自己修改内嵌图片,需要引入jquery库文件) 先上效果图 注:非专业人士,图片视觉效果奇丑,请自觉忽略 图片附件 贴代码(自己修改内嵌图片,需要引入jquery库文件) 去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片. <!DOCTYPE html> <html lang="zh-CN"> &...

小乙的博客 1万+

【JavaScript】缓动动画、网页轮播图

缓动动画动画函数封装1.1 动画实现原理缓动动画1.1 缓动效果原理1.2 动画函数多个目标值之间移动1.3 动画函数添加回调函数1.4 动画函数封装到单独JS文件里面案例:京东侧边栏滑动案例:网页轮播图1.5 节流阀案例:筋斗云 动画函数封装 1.1 动画实现原理 核心原理:通过定时器setInterval0 不断移动盒子位置。 实现步骤: 1.获得盒子当前位置 2.让盒子在当前位置加上1个移动距离 3.利用定时器不断重复这个操作 4.加一个结束定时器的条件 5.注意此元素需要添加定位,才能使用eleme

耍酷的李世达的博客 1079

如果使用div+CSS实现自动轮播效果

在 HTML 中编写 div 区域内的内容,并用一个父级元素包裹,在父级元素上增加固定高度和。数量为 2 行 1 个,超过了显示范围的部分被隐藏,当设置。具体的样式和动画时间需要根据具体的需求进行调整。时,则可以全部展示。代码中设置的动画持续时间为。的高度设置为超过容器高度的值,再设置。进行 CSS 样式的设置。实现这个效果可以使用 CSS3 的。的高度,以及实现循环效果,最后在。的高度,实现滚动展示效果,属性则将这个动画应用在了。

qq_33774165的博客 2411

移动端、PC端 网页特效

文章目录PC端网页特效偏移量系列 offset可视区系列 client滚动系列 scroll PC端网页特效 偏移量系列 offset offset 翻译过来就是偏移量, 使用 offset 系列相关属性可以 动态 的得到该元素的位置(偏移)、大小等。 获得元素距离带有定位父元素的位置 获得元素自身的大小(宽度高度) 注意: 返回的数值都不带单位 常用属性: 图示: offset与style区别: offset style 可以得到任意样式表中的样式值 只能得到行内样式表中的样式值

YuLong的博客 5853

原生Js实现自动无缝轮播图

javascript实现自动无缝轮播图 1、实现原理 轮播图实现原理是用一个大盒子组容器,里面包含一个小盒子,小盒子用来移动,小盒子里装着要轮播的图片,图片水平排放,当小盒子移动的时候带动图片一起移动,要想实现无缝轮播,则要在最后放一张与第一张一摸一样的图片,当图片滚动到最后一张时,用户会感觉这是第一张,然后再跳到第一张,这样用户就不会感觉图片是跳过去的,实现无缝轮播 2、实现效果 (图片上传有大小限制,这里就展示一部分。。。) 3、代码展示 3.1 网页结构布局(html代码) <!DOCTYPE

cty13697011482的博客 2799

JS实现轮播图(自动+手动)

网页轮播图效果: 核心原理: tips:代码在文章末尾 这个ul就是我们这四张图片的父盒子,我们通过对这个父盒子添加动画函数来实现移动,然后给父盒子来一个溢出隐藏就达到了轮播的效果 动画函数如下: function animate(obj,target,callback) { //先清除以前的定时器,只保留当前的一个定时器执行 clearInterval(obj.timer); obj.timer = setInterval(function() { //步长值写到定时器

qq_49900295的博客 2万+

JavaScript中的div是什么意思?

总结一下,div是JavaScript编程中常用的HTML元素,用于创建和组织网页布局。它可以将网页划分为不同的部分,使得开发者可以更好地管理和控制页面的结构。在JavaScript编程中,div是指HTML文档中的一个重要元素,它是用于创建和组织网页布局的常用标签。每个部分都使用了不同的CSS样式,以实现不同的外观效果。标签是一个块级元素,它没有特定的语义含义,但可以通过CSS样式和JavaScript脚本来控制其外观和行为。标签,可以将网页分成逻辑上的模块,使得开发者可以更好地组织和管理页面的结构。

HackMasterX的博客 1062

【JavaScript】回调地狱以及网页轮播图底层分析

回调地狱,网页轮播图底层分析

ztK63LrD的博客 772

动画调整顺序】使用JavaScript实现动画序列的重新排序

有时候,我们可能需要对动画序列进行重新排序,以改变它们的播放顺序或创建不同的效果。通过以上的代码,我们可以实现动画序列的重新排序。你可以根据自己的需求和创造力,对动画序列进行不同的调整和排列,以创建出独特的动画效果。首先,我们需要一个包含动画序列的数组。然后,我们将第二个动画的值赋给第一个动画,最后将临时变量的值赋给第二个动画,完成两个动画的交换。该函数将接受两个参数,分别是要交换位置的两个动画的索引。现在,让我们尝试重新排序动画序列。运行以上代码,你会发现动画序列已经被重新排序,并按照新的顺序播放。

HsvvDatabase的博客 284

OpenClaw:深度学习驱动的智能编程工具实战解析

智能编程工具通过深度学习技术革新传统开发流程,其核心在于代码语义理解与实时协作能力。这类工具采用AI代码补全、错误预测等技术,显著降低开发者认知负荷,尤其适用于复杂业务逻辑开发和遗留系统维护场景。以OpenClaw为例,其智能填充和上下文感知功能可提升40%编码效率,减少65%调试时间。关键技术实现包含自然语言处理、代码静态分析等,在金融科技、电商系统等领域具有广泛应用前景。热词提示:代码理解引擎、智能工作流整合展现了当前AI辅助开发的最新趋势。

chubaisheng8627的博客 320

HTML+CSS+JS实例——匀速动画与轮播图的实现

回顾以前的博文,我们用HTML+CSS+JS实现了很多有趣的功能,有: 模拟日历 发布会倒计时 鼠标跟随 商品图片局部放大 现在我们用HTML+CSS+JS来实现匀速动画与轮播图 匀速动画:每间隔30ms,移动盒子10px【重要】 代码如下: <!DOCTYPE html> <html> <head lang="en"> <meta charset...

liuzuoping的博客 2160

解决MATLAB2020B关于找不到vs2019C++编译器问题

解决MATLAB2020B关于找不到vs2019C++编译器问题

wcm2577的博客 7607

网页轮播图——原生JS

网页轮播图——原生JS 1.使用onmouseenter();onmouseleave();这两个方法对左右箭头进行显示与隐藏的操作。并且实现光标移上时显示左右箭头,光标离开时隐藏左右箭头。 2.声明变量Timer代表轮播一次图片所用的时间。 3.声明变量TimerLittle代表轮播一小次图片所用时间。因为图片的移动都是一点点移动的! 4.声明MoveImage(dis);函数,并给予参数,参数...

qq_41557293的博客 565

Streamlit安装避坑指南:从零到一键启动你的第一个数据可视化应用

本文提供了一份详尽的Streamlit安装避坑指南,帮助用户从零开始快速启动第一个数据可视化应用。文章深入剖析了安装过程中常见的网络超时、依赖冲突、环境变量缺失等核心问题,并给出了使用虚拟环境、配置国内镜像源、利用.whl文件离线安装等多种经过验证的解决方案,确保安装过程顺畅无阻。

weixin_29065015的博客 616

立创·庐山派-K230-CanMV(嘉楠勘智)开发板通过ATK-ESP8266实现图像识别数据无线传输至原子云

本文详细介绍了如何使用立创·庐山派-K230-CanMV开发板,通过ATK-ESP8266 WIFI模块实现图像识别数据的无线传输至原子云平台。内容包括硬件连接、软件环境搭建、AT指令控制、原子云连接及数据上传的全过程,并提供了实用的调试技巧和常见问题解决方案,为物联网应用开发提供了完整实践指南。

potato的博客 743

【移动端网页特效】02-移动端轮播图(原生JS)

移动端轮播图:利用css3动画效果及classList属性实现图片自然滚动及焦点图的跟随变化;利用触屏事件实现图片拖动功能

SevgiliD的博客 630

关于MII、RMII、GMII、RGMII、PHY、网络变压器、RJ45的硬件总结

文章目录前言一、网络传输结构及原理1.以太网的工作原理2.TCP/IP协议3.数据链路层(MAC)二、介质独立接口MII,RMII,GMII,RGMII1.MII(Media Independent interface)2.RMII(Reduced Media Independent Interface)3.GMII(Gigabit Medium Independent)4.RGMII(Reduced Gigabit Media Independent Interface)三、物理层芯片(PHY)二、使用步

weixin_44415816的博客 3万+

js轮播图

使用原生js写pc端轮播图和移动端轮播图。

TKOP_的博客 822

AAAI 2025杰出论文解读:神经符号推理与生物多样性计算的突破性进展

本文深度解读了AAAI 2025两篇杰出论文的突破性进展。南京大学周志华团队提出“溯因反射”框架,高效解决神经符号推理中的“不一致性”核心难题,为构建可靠、可解释的AI系统提供了新路径。斯坦福大学等机构的DiVShift研究,则系统分析了公民科学数据中的复杂分布偏移,为利用海量数据精准监测生物多样性及应对AI数据偏差提供了关键方法论。

weixin_29085865的博客 501

AWR射频仿真基本操作(一)

这里只讲述一个基本的操作: 软件是AWR 14版本

钢丝 2万+

JS 实现动态轮播图

JavaScript实现轮播图思路 + html/css + js源码 整个轮播图的效果是通过js代码,操作dom, 拿到html我们需要的元素,控制整个ul的距离浏览器左边的位置,让排好的图片依次出现在相框中,不在相框中的元素会被css中的 overflow : hidden 隐藏掉, 其次,图片是经过处理的 ,正好和我们的相关等宽等高! 动态的创建元素,下面我们会动态创建li,并...

weixin_30709809的博客 1249

MySQL——cost成本计算之MySQL如何选择使用索引(trace)

文章目录前言trace工具分析执行计划 前言 在之前博客中,根据测试案例,发现同样的sql语句,因为传入的条件值的不同,导致MySQL有时候选择使用索引,有时候又不适用索引。 如下所示sql的执行计划: EXPLAIN SELECT * FROM employees WHERE name > 'aaa'; EXPLAIN SELECT * FROM employees WHERE name > 'zzzz'; 在MySQL中,为什么会出现上述这种玄乎的现象呢? 本篇博客重点说明原因。 在说

专注写bug 681

移动端轮播图插件使用说明+代码详解

此案例中:移动端轮播图使用的是swiper 3.4.2 版本 引入css样式文件: 引入轮播图HTML代码块: 引入swiper 3.4.2 版本js文件 初始化swiper功能 调节样式(即.将轮播图图片样式:高度100%,display:block) class = swiper-*** 的div, 是必须要有的. jd-layout 是body标签内网页内容最大的盒子 jd-ban...

陈皮糖的博客 1814

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

JS基础—移动端网页特效

目录 一、触屏事件 1.1 触屏事件概述 移动端浏览器兼容性较好,我们不需要考虑以前 JS 的兼容性问题,可以放心的使用原生 JS 书写效果,但是移动 端也有自己独特的地方。 比如触屏事件 touch(也称触摸事件),Android 和 IOS 都有。 touch 对象代表一个触摸点。触摸点可能是一根手指,也可能是一根触摸笔。触屏事件可响应用户手指(或触控 笔)对屏幕或者触控板操作。 常见的触屏事件如下: <script> var div = docum.

m0_57726319的博客 1171

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

网页轮播图的实现方式

轮播图 轮播图是Web开发中常见的组件之一,通常第三方框架都自带这个组件,或是通过使用第三方插件实现,无需程序员自己重新编码,但在面试中会被问道其实现原理。轮播图的实现方式有很多种,本文轮播图实现代码来自[黑马程序员的视频教程],纯js实现,支持无缝滚动。 动画 在实现轮播图前,我们需要封装一个动画函数。 function animate(obj, target) { obj.timer = ...

乌药ice 2290

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: DOM对象之节点操作(2)
下一篇: ES6(一)
码 码 码
博客等级 码龄6年 14粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值