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张,所以定义 ...
随机推荐
- 关于html5不支持frameset的解决方法
转自:http://blog.sina.com.cn/s/blog_b2813a790101ejvf.html html5已经不支持frameset了,很郁闷,看了大家的解决方法,无非就是两种1. 使 ...
- 比较StringBuffer字符串内容是否相等?
为什么会有这个问题呢?首先得看看String和StringBuffer的比较区别: ==只能比较两个字符串的内存地址是否一样,不能比较字符串内容: String的equals方法因为重写了Object ...
- JAVA 正则表达式、汉字正则、 java正则代码
转自于:http://blog.csdn.net/q326527970/article/details/7513974 (一)字母.数字.下划线.汉字正则表达式 1. 只有字母.数字和下划线且不能以下 ...
- CC2540开发板学习笔记(九)—— BLE协议简介
一.BLE协议简介 1.协议是什么? 协议是一系列的通信标准,双方需要共同按照这进行正常数据 协议是一系列的通信标准,双方需要共同按照这进行正常数据发射和 接收.协议栈是的具体实现形式,通俗点来理解就 ...
- Code 128 规则解析
1.CODE 128 标准 1.1 code 128码格式: 格式: 从左起: 空白区域,起始字符(Start),数据区域(data),校验码(check),结束字符(Stop),空白区域. ...
- LightOJ1005 Rooks(DP/排列组合)
题目是在n*n的棋盘上放k个车使其不互相攻击的方案数. 首先可以明确的是n*n最多只能合法地放n个车,即每一行都指派一个列去放车. dp[i][j]表示棋盘前i行总共放了j个车的方案数 dp[0][0 ...
- Unity Built-in Shader详解三
上次讲的是Transparent Shader Family,他们是绘制半透明的对象使用的,但他们并不能满足我们全部的要求. Transparent Cutout Shader Family是对半透明 ...
- Cyclic Nacklace[HDU3746]
Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Git Shell 安装版本
#!/bin/sh v1.; do echo "Begin install Git $ver."; git reset --hard git clean -fdx git chec ...
- jQuery Mobile高手必备的十大技巧和代码片段
与任何新技术一样,常常难就难在如何开始入手. 有鉴于此,我们整理出了与jQuery Mobile库有关的我认为最便利的一些技巧.方法和代码片段. 由于本文不是旨在全面介绍使用jQuery Mobile ...