WEB前端开发:轮播图的实现(H5+C3+JavaScript)(JQuery)
来源:互联网 发布:温州淘宝运营培训班 编辑:程序博客网 时间:2024/06/10 16:23
一、轮播图的概念
轮播图就是一种网站在介绍自己的主打产品或重要信息的传播方式。说的简单点就是将承载着重要信息的几张图片,在网页的某一部位进行轮流的呈现,从而做到让浏览者很快的了解到网站想要表达的主要信息。例如:淘宝,京东,等大型的购物平台。以及各种新闻网站的头版头条都是用这种方式呈现的重要信息。
二、轮播图的设计思想
轮播图的实现方式:例如:有5张轮播的图片,每张图片的宽度为1024px、高度为512px.那么轮播的窗口大小就应该为一张图片的尺寸,即为:1024×512。之后将这5张图片0px水平相接组成一张宽度为:5120px,高度依然为:512px。最后将这张合成后的大图每次向左移动1024px即可实现轮播图。下面介绍HTML代码:
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <link href="Style1.css" type="text/css" rel="stylesheet"> <script src="jquery-1.11.3.min.js"></script> <script src="JaScript.js"></script></head><body><!--轮播图整体div--><div class="banner"> <!--无序列表承载轮播的图片--> <ul class="img"> <li><a href="#"><img src="image/1.png" alt="第1张图片"></a></li> <li><a href="#"><img src="image/2.png" alt="第2张图片"></a></li> <li><a href="#"><img src="image/3.png" alt="第3张图片"></a></li> <li><a href="#"><img src="image/4.png" alt="第4张图片"></a></li> <li><a href="#"><img src="image/5.png" alt="第5张图片"></a></li> <li><a href="#"><img src="image/6.png" alt="第6张图片"></a></li> <li><a href="#"><img src="image/7.png" alt="第7张图片"></a></li> </ul> <!--用来放置圆点具体实施在js代码中呈现--> <ul class="num"></ul> <!--左右点击按钮--> <div class="btn"> <span class="prev"><</span> <span class="next">></span> </div></div></body></html>根据上面的HTML代码:1.div banner就是上文中提到的轮播的窗口,它就是呈现图片的部分。
2.无序列表 img:用来存放要进行呈现的图片,而图片的水平放置与零间隙拼接会在后面的Css和Jquery代码中进行实现。
3.无序列表 num:用来存放图片下方对应的圆点。可以看到在HTML代码中并没有进行圆点的添加,这是因为通过Jquery代码首先获取图片的张数可以动态对应的添加圆点的个数,也可以动态的利用Css属性为圆点添加相应属性。
4.div btn :轮播图的左右按钮的呈现通过<span>标签以及后面的Css代码进行实现。
下面给出Css代码进行分析:
/*整体去除内外边距*/* { margin: 0; padding:0;}/*取消列表的图标内容*/ul{ list-style: none;}/*对整体部分的控制,浏览图片的窗口*/.banner{ width: 1024px; height: 512px; border: 2px solid #ccc; margin: 100px auto; position: relative; overflow: hidden;}/*图片的初步设置后面的动态内容会在js中实现*/.img{ width:1024px; height: 512px; position: absolute; top: 0; left: 0;}/*让没长图片向左浮动*/.img li{ float: left;}/*圆点承载部分的设计*/.num{ position: absolute; bottom: 10px; width: 100%; text-align: center; font-size: 0;}/*圆点设计*/.num li{ width: 10px; height: 10px; background:rgba(0,0,0,0.5); border-radius: 100%; display: inline-block; margin: 0 5px; cursor: pointer;}/*按钮部分初始不可见*/.btn{ display: none;}/*按钮形状设计*/.btn span{ display: block; width: 50px; height: 100px; background: rgba(0,0,0,0.6); color: #fff; font-size: 40px; line-height: 100px; text-align: center; cursor:pointer;}/*上一个设计*/.btn .prev{ position: absolute; left: 0; top: 50%; margin-top: -50px;}/*下一个设计*/.btn .next{ position: absolute; right: 0; top: 50%; margin-top: -50px;}/*对按妞动态呈现的变换进行类选择器的设计为js代码部分进行铺垫*/.num .active{ background-color: #fff;}.hide{ display: none;}通过代码中的注释可以了解各部分代码对应的HTML标签以及相应的功能这里不做详细的介绍。只要对不会的属性进行了解就可以了解实现的效果。
下面对JavaScript代码进行分析:
//界面加载完毕执行以下程序$(function(){ //定义i变量为动态控制图片轮播做准备,i的值与每张图片进行一一的对应 var i=0; //时间变量,为自动轮播以及对光标的影响做出相应的反应 var timer=null; //根据图片的张数动态添加圆点个数 for (var j = 0; j < $('.img li').length; j++) { $('.num').append('<li></li>'); } //默认情况下的第一个圆点进行背景设计 $('.num li').first().addClass('active'); //根据光标的影响控制按钮的显示和隐藏 $('.banner').hover(function(){ $('.btn').show(); },function(){ $('.btn').hide(); }); //将第一张图片复制并添加到img部分下与前五张图片相接 var firstimg=$('.img li').first().clone(); //复制第一张图片 $('.img').append(firstimg).width($('.img li').length*($('.img img').width())); //定时器自动轮播 timer=setInterval(function(){ i++; if (i==$('.img li').length) { i=1; $('.img').css({left:0});//保证无缝轮播,设置left值 } //进行下一张图片 $('.img').stop().animate({left:-i*1024},500); //圆点跟着变化 if (i==$('.img li').length-1) { $('.num li').eq(0).addClass('active').siblings().removeClass('active'); }else{ $('.num li').eq(i).addClass('active').siblings().removeClass('active'); } },1000); //鼠标移入,暂停自动播放,移出,开始自动播放 $('.banner').hover(function(){ clearInterval(timer); },function(){ timer=setInterval(function(){ i++; if (i==$('.img li').length) { i=1; $('.img').css({left:0}); }; //进行下一张图片 $('.img').stop().animate({left:-i*1024},500); //圆点跟着变化 if (i==$('.img li').length-1) { $('.num li').eq(0).addClass('active').siblings().removeClass('active'); }else{ $('.num li').eq(i).addClass('active').siblings().removeClass('active'); } },1000) }); //上一个按钮 $('.prev').click(function(){ i--; if (i==-1) { i=$('.img li').length-2; $('.img').css({left:-($('.img li').length-1)*1024}); } $('.img').stop().animate({left:-i*1024},500); $('.num li').eq(i).addClass('active').siblings().removeClass('active'); }); // 下一个按钮 $('.next').click(function(){ i++; if (i==$('.img li').length) { i=1; //这里不是i=0 $('.img').css({left:0}); }; $('.img').stop().animate({left:-i*1024},500); if (i==$('.img li').length-1) { //设置小圆点指示 $('.num li').eq(0).addClass('active').siblings().removeClass('active'); }else{ $('.num li').eq(i).addClass('active').siblings().removeClass('active'); }; }); //鼠标划入圆点 $('.num li').mouseover(function(){ var _index=$(this).index(); //维持i变量控制的对应关系不变 i = _index; $('.img').stop().animate({left:-_index*1024},300); $('.num li').eq(_index).addClass('active').siblings().removeClass('active'); });})
这部分代码的难点在于是否了解JQuery中的相应方法,许多语句实现的功能我都在代码的注释中进行了介绍,而一些方法,不知道的可以去查询JQuery的API进行了解,再通过对不了解部分代码的删除,运行。在比对中真切的了解其实现的功能。
实现效果截图:
- WEB前端开发:轮播图的实现(H5+C3+JavaScript)(JQuery)
- 校招季--献给前端求职路上的你们(H5+C3)
- JavaScript & jQuery交互式Web前端开发
- JavaScript & JQuery 交互式Web前端开发
- JavaScript & jQuery交互式Web前端开发pdf
- JavaScript&jQuery交互式Web前端开发
- 《JavaScript & jQuery交互式Web前端开发》之JavaScript基础指令
- Web前端-HeadFirst-笔记-Ch12-h5的视频实现
- html5(h5)和css3(c3)绘制的太阳系
- web前端H5培训开发设计师好不好
- H5学习web前端开发设计师怎么样
- web前端H5培训开发设计师好吗
- H5+C3+JS实现焦点轮换图
- H5+C3+JS实现五子棋 - UI篇
- H5+C3+JS实现五子棋 - AI篇
- Web前端开发【html+css+javascript+Dom+jQuery】问题笔记
- 《 JavaScript&jQuery交互式Web前端开发》读书笔记二:各种页面加载事件的区别
- 【JavaScript】H5多线程的实现 — Web Worker
- python爬虫:http请求头部(header)详解
- 利用Costura.Fody制作绿色单文件程序(C#程序(含多个Dll)合并成一个Exe)
- 周末小总结
- CodeForces
- 生成VS2010的BOOST库
- WEB前端开发:轮播图的实现(H5+C3+JavaScript)(JQuery)
- CodeCoder vs TopForces Gym
- Spring-Session源码研究之Start_Servlet3.0
- 基于tesseract-orc的koa2 OCR Web小应用
- spring cloud使用Feign实现远程接口的调用
- python: 切片符号(slice notation)
- HTTP 500
- [2017.11.11特辑]以一个光棍节表白案例浅谈ECMAScript6模块化的使用方法
- 软件工程(C语言实践篇)学习心得总结