html轮播效果的实现
要实现如下图的效果

点击可以选择图片;不点击的时候自动轮播;并且点击完后再次自动轮播。
思路:如同在房子里透过窗子看路过的火车一样,窗子是不动的,但火车是陆续经过窗子的,所以透过窗子可以看到依次看完所有的火车。
1. 让将图片排成一列“火车”:ul中li(li中放着轮播图片)漂浮起来后,就排列成一溜了
2. 要有一个“窗口”,把“火车”放到“窗口”里:设置div的固定长度,使它宽度等于ul中一个li的宽度
3. 让“火车”动起来:利用margin-left样式可以选择要在“窗口”显示的图片。
代码如下:
<!DOCTYPE html>
<html>
<head>
<title>图片轮播效果</title>
<link rel="stylesheet" type="text/css" href="./css/reset.css" />
<style>
.container{
width:100%;
margin:0 auto;
}
/* 轮播容器 */
.img_wrap{
width:440px;
height:440px;
margin:0 auto;
position:relative;
}
.img_wrap ul li{
float:left;
}
/* 轮播索引 */
.img_wrap .img_index{
position:absolute;
right:20px;
bottom:20px;
}
.img_wrap .img_index ul li{
width:16px;
height:16px;
background:gray;
border-radius:8px;
cursor:pointer;
margin-right:4px;
}
.img_wrap .img_index ul li.on{
background:#fd4b4b;
}
/* 轮播图片容器 */
.img_wrap .img_lunbo{
width:440px;
height:440px;
overflow:hidden; }
</style> <script>
window.onload = function(){
var currentIndex = 1; //当前索引
var time = 2000; //时间间隔
var length = 5; //几个索引
var timer = null; //定时器
indexBindClick();
//自动轮播
autoPlay(); //给索引绑定事件
function indexBindClick(){
var lis = document.getElementsByClassName("img_index")[0].getElementsByTagName("li");
for(var i=0; i<lis.length; i++){
lis[i].onclick = function(){
//换图片显示
currentIndex = getIndex(this);
clearInterval(timer);
showImg();
autoPlay();
};
}
}
function autoPlay(){
timer = setInterval(function(){
showImg();
currentIndex++;
},time);
}
//显示图片
function showImg(){
if(currentIndex >= 5){
currentIndex = 0;
}
//改变小图标样式
var lis = document.getElementsByClassName("img_index")[0].getElementsByTagName("li");
for(var j=0; j<lis.length; j++){
lis[j].className = "";
}
lis[currentIndex].className = "on"; //显示当前图片
var ul = document.getElementsByClassName("img_lunbo")[0].getElementsByTagName("ul")[0];
var li_width = ul.getElementsByTagName("li")[0].scrollWidth;
var marginLeft = -currentIndex * li_width;
ul.style.marginLeft = marginLeft + "px";
} /* 获取对象在父节点中索引 */
function getIndex(obj){
var children = obj.parentNode.children;
for(var i=0; i<children.length; i++){
if(children[i] == obj){
return i;
}
}
}
};
</script>
</head> <body>
<div class="container">
<div class="img_wrap">
<div class="img_index">
<ul>
<li class="on"></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<div class="img_lunbo">
<ul>
<li><img src="./images/lunbo1.jpg" /></li>
<li><img src="./images/lunbo2.jpg" /></li>
<li><img src="./images/lunbo3.jpg" /></li>
<li><img src="./images/lunbo4.jpg" /></li>
<li><img src="./images/lunbo5.jpg" /></li>
</ul>
</div>
</div>
</div>
</body>
</html>
reset.css初始化代码和图片要自己准备。
html轮播效果的实现的更多相关文章
- jQuery个性化图片轮播效果
jQuery个性化图片轮播效果 购物产品展示:图片轮播器<效果如下所示> 思路说明: 每隔一段时间,实现图片的自动切换及选项卡选中效果,鼠标划入图片动画停止,划出或离开动画开始 两个区域: ...
- Android使用ViewPager实现左右循环滑动及轮播效果
边界的时候会看到一个不能翻页的动画,可能影响用户体验.此外,某些区域性的ViewPager(例如展示广告或者公告之类的ViewPager),可能需要自动轮播的效果,即用户在不用滑动的情况下就能够看到其 ...
- JQuery实现图片轮播效果源码
======================整体结构======================== <div class="banner"> <ul class ...
- 基于css3的轮播效果
花了一上午来调整页面在ie10上的显示问题,sass编译生成的css文件在ie内核下一直不能正确加载,果然兼容性的问题还需要好好研究.转入正题,用css3实现轮播效果主要是基于css3的framewo ...
- 调用MyFocus库,简单实现二十几种轮播效果
一.首先点击这里下载myFocus库文件,标准文件库就行了,很小仅仅1.4M. myFocus库有以下的好处: a . 文件小巧却高效强大,能够实现二十几种轮播的效果. b . 极其简单的使用,只需要 ...
- viewPager+Handler+Timer简单实现广告轮播效果
基本思想是在Avtivity中放一个ViewPager,然后通过监听去实现联动效果,代码理由详细的解释,我就不说了. MainActivity.java package com.example.adm ...
- Bootstrap插件之Carousel轮播效果(2015年-05月-21日)
<!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"& ...
- 常见的仿Flash图片轮播效果
现在基本在很多网站上都能看到轮播效果,虽然有点烂大街的赶脚,但是这个效果确实很好看,很时尚,今天分享下代码相对较少的轮播框架,望采纳 . ①向左滑动: 思路: 将几个图片用分别用几个 li 包住,并且 ...
- JQuery简单实现图片轮播效果
很多页面都需要用到界面轮播,但是用原生js相对来说比较复杂,用jQuery实现效果比较迅速,写个简单的demo 1.首先在HTML页面要放置轮播图案位置插入div,这里写了轮播图片数量为3张,所以定义 ...
随机推荐
- Android SQLite总结(一) (转)
Android SQLite总结(一) 郑海波 2012-08-21 转载请声明:http://blog.csdn.net/nuptboyzhb/article/details/7891887 前言 ...
- Win7-64bit系统下安装mysql的ODBC驱动
安装过mysql数据库后,有些软件在调用mysql数据库时不会直接调用,需要安装mysql数据库的ODBC驱动,再来调用.这里就介绍下,如何在win7系统下安装mysql的ODBC驱动. Win7系统 ...
- javascript优化--04高质量编码
库和API的设计: 在参数设计中保持好的习惯:如顺序,width,height;top,right,bottom,left;如命名: 将undefined看作没有值而不要表示非特定的值: 在允许0,空 ...
- Xamarin如何生成Android项目的APK
Xamarin如何生成Android项目的APK 首先需要选择Release模式生成项目.然后从“生成”菜单中选择Export Android Package命令,就可以导出APK包.APK保存在An ...
- http://www.cnblogs.com/yjmyzz/p/3941043.html
http://www.cnblogs.com/yjmyzz/p/3941043.html
- Lazy Acquisition
为什么要延迟? 延迟加载模式是用于快速启动.保证初始化时不必浪费时间去加载和运算,而在需要的时候再去调用. 框架中有实现吗? .NET典型的使用在4.0中已经有了,Lazy<T> 特性:线 ...
- BZOJ4399 : 魔法少女LJJ
将所有权值离散化,建立权值线段树,维护区间内数字个数以及对数的和,用于比较乘积大小. 对于每个连通块维护一棵权值线段树,合并时用线段树合并. 对于操作3和4,暴力删除所有不合法节点,然后一并修改后插入 ...
- BZOJ4158 : [POI2007]Railway
论文题. 随便取个关键点,求出最短路树. 求出所有关键点组成的虚树,将两端都在虚树上的边保留. 对剩下的边求出最小生成树即可得到一组可行解. #include<cstdio> #inclu ...
- 10个国内外jQuery的CDN性能大比拼
jQuery是前端开发最常见也是最流行的javascript库,如何去加载它才能使我们的项目性能更好以及问什么要用CDN?当用户访问自己的站点时从服务器加载文件,每个服务器同时只能下载2-4个文件,这 ...
- PHP + Redis 实现一个简单的twitter
原文位于Redis官网http://redis.io/topics/twitter-clone Redis是NoSQL数据库中一个知名数据库,在新浪微博中亦有部署,适合固定数据量的热数据的访问. 作为 ...