在我们准备动手之前先了解下几个属性  dom元素的位置的几个相关属性

dom元素宽度/高度

clientWidth/clientHeight   元素的内尺寸   content + padding

offsetWidth/offsetHeight  元素的外尺寸  content + padding + border

clientLeft/clientTop  padding最外侧与border最外侧的距离  也就是左边的border宽度和上面的border宽度

offsetLeft/offsetTop  指的是dom元素的左上角(上面和左面border相交处)与以定位父元素的左上角的相对距离

element.style.left  element.style.top 它跟offsetLeft和offsetTop是相似的 他们之前还是有一定的区别

1)当你在css中对一个元素的left top进行设置的时候 你在js中是无法取到这个值的 准确的说是一个空的字符串 难道我们只能在html中写我们的css了吗???

2)offsetLeft offsetTop 能获取我们在CSS中设置的left top

3)offsetLeft offsetTop 是只读的属性 并且返回值是数字       style.left style.top 是读写的属性 返回的是字符串  也就是 “100px”

所以结合offsetLeft offsetTop  和 style.left style.top 我们就可以操作dom元素的位置了

下面我们来实现一个简单的轮播的例子

  <div id="container">
<ul id="show">
<li><img src="1.jpg" alt=""></li>
<li><img src="2.jpg" alt=""></li>
<li><img src="3.jpg" alt=""></li>
<li><img src="4.jpg" alt=""></li>
</ul>
</div> <input type="button" id="next" value="next" />
<input type="button" id="prev" value="prev" />

在这样的页面结构下我们一步一步实现轮播的效果

首先先对样式进行一些基本的设置

    body {
margin:;
}
ul {
margin:;
padding:;
}

为了清除浏览器对元素的一些默认的设置

现在展示的效果是这样的

接下来我们让列表元素做浮动 并且对父容器和展示区域进行了一些设置

            ul > li {
float:left;
list-style: none;
} #container {
position: relative;
/*width:100px*/
height:100px; //因为我的图片就是100*100的想让一次点击就显示一张图片 也可以一次显示多张 width进行调整
       /*overflow:hidden;*/
}
#show {
position: absolute;
left:;
top:; //由于最近的父元素设置了定位relative 所以这个top left是相对于父元素左上角的定位
}

在container不设置width和overflow的时候 页面变成了这样

我们将注释消去  此时我们只能看见第一个图片了 但是其他的图片还是像上面一样排列着 而我们想要实现简单的轮播效果就可以操作显示区域相对于父元素的left值来实现

下面是相应的js实现


var page = 1,//初始化页数
i = 1,//每页显示的图片数
nextBtn = document.getElementById("next"),
prevBtn = document.getElementById("prev"),
showPart = document.getElementById("show"),//获得显示区域
width = document.getElementById("container").offsetWidth;//获得父元素的宽度
length = showPart.getElementsByTagName("li").length,//获得显示区域显示条目数
page_count = Math.ceil(length/i);//总页数


nextBtn.onclick = function() {
if(page == page_count) { //当为最后一页的时候 回到第一页
showPart.style.left = "0px";
page = 1;
} else {
showPart.style.left = showPart.offsetLeft - width + "px";
page++;//不是最后一个的时候就修改left的值
}
}


prevBtn.onclick = function() {
if(page == 1) {
showPart.style.left = showPart.offsetLeft - width*(page_count-1) + "px";
page = page_count;
} else {
showPart.style.left = showPart.offsetLeft + width + "px";
page--;
}
}

上面就实现了一个简单的轮播效果 通过点击按钮就能进行图片的展示 当然你也可以通过创建一个函数默认的一直往后展示图片 在页面加载后每隔一定时间去运行这个函数,也就实现了动态的展示功能

参考  http://www.cnblogs.com/dolphinX/archive/2012/11/19/2777756.html

http://www.jb51.net/article/47811.htm

锋利的jquery

js实现轮播的更多相关文章

  1. 原生js焦点轮播图

    原生js焦点轮播图主要注意这几点: 1.前后按钮实现切换,同时注意辅助图2.中间的button随着前后按钮对应切换,同时按button也能跳转到相应的index3.间隔调用与无限轮播.4.注意在动画时 ...

  2. 原生js实现轮播图

    原生js实现轮播图 很多网站上都有轮播图,但找到一个系统讲解的却很难,因此这里做一个简单的介绍,希望大家都能有所收获,如果有哪些不正确的地方,希望大家可以指出. 原理: 将一些图片在一行中平铺,然后计 ...

  3. js实现轮播图效果(附源码)--原生js的应用

    1.js实现轮播图效果 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...

  4. js编写轮播图,广告弹框

    1.轮播图 js编写轮播图,需要用到setInterval(计时器):先给一个div,里面放轮播图的图片,将轮播图的图片明明为相同样式的:如:banner1.jpg,banner2.jpg,banne ...

  5. js原生轮播

    js原生轮播 今天用js做了轮播图,做的不怎么好,希望大家能够看懂. 效果: 1.鼠标放在轮播图上自动停止 2.鼠标离开轮播图自动播放 3.鼠标点击轮播图上的小圆点跳转到相应的图上. 代码: < ...

  6. js实现轮播图

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 封装一个简单的原生js焦点轮播图插件

    轮播图实现的效果为,鼠标移入左右箭头会出现,可以点击切换图片,下面的小圆点会跟随,可以循环播放(为了方便理解,没有补2张图做无缝轮播).本篇文章的主要目的是分享封装插件的思路. 轮播图我一开始是写成非 ...

  8. 原生JS实现轮播图的效果

    原生JS实现轮播图的效果: 只要缕清了全局变量index的作用,这个轮播图也就比较容易实现了:另外,为了实现轮这个效果,有几处clearInterval()必须写上.废话不多说,直接上代码,修复了几个 ...

  9. 使用原生js将轮播图组件化

    代码地址如下:http://www.demodashi.com/demo/11316.html   这是一个轮播图组件,这里是代码地址,需要传入容器的id和图片地址,支持Internet Explor ...

  10. js图片轮播效果实现代码

    首先给大家看一看js图片轮播效果,如下图 具体思路: 一.页面加载.获取整个容器.所有放数字索引的li及放图片列表的ul.定义放定时器的变量.存放当前索引的变量index 二.添加定时器,每隔2秒钟i ...

随机推荐

  1. ecshop的订单状态

    ecshop的订单状态都是在ecs_order_info表中的字段里. 订单状态 未确认 取消 确认 已付款 配货中 已发货 已收货 退货 order_status 0 2 1 1 1 5 5 4 s ...

  2. CSS代码原则

    css的团队合作规则以及怎样写出高性能的css代码. 一.使用Reset但并非全局Reset 同浏览器元素的默认属性有所不同,使用Reset可重置浏览器元素的一些默认属性,以达到浏览器的兼容.但需要注 ...

  3. UIView的响应链

    父视图 和子视图的关联 只有当父视图  userInteractionEnabled=YES; 是其子视图才可响应 userInteractionEnabled=NO代表不接受响应 UIView的默认 ...

  4. Apache Tomcat关于shtml和SSI技术

    Tomcat http://blog.csdn.net/leftfist/article/details/8520773 http://webdevelop.jzxue.com/shtml/ http ...

  5. Into concurrent LRU caching once again

    But this time, with a more product oriented point of view, instead of researching. http://openmymind ...

  6. Android ActionBar Home按钮返回事件处理的两种方式

    今早无聊查看了一下android官方文档,最近对ActionBar很感兴趣,它确实对我们的日常开发起到了很便捷的作用. 对于通过点击ActionBar的Home按钮返回,以前我只知道有一种方式:也就是 ...

  7. Angular开发Tips

    1.在使用$routeProvider的时候,需要让模块依赖ngRoute,否则会提示找不到服务,示例: angular.module('module1', ['ngRoute']) .config( ...

  8. Membership三步曲

    http://www.cnblogs.com/jesse2013/p/membership-part1.html http://www.cnblogs.com/jesse2013/p/membersh ...

  9. Robot Framework自动化测试(四)--- 分层思想

    谈到Robot  Framework 分层的思想,就不得不提“关键字驱动”. 关键字驱动: 通过调用的关键字不同,从而引起测试结果的不同. 在上一节的selenium API 中所介绍的方法其实就是关 ...

  10. Web 开发人员必备的随机 JSON 数据生成工具

    在 Web 开发中,经常会需要一些测试数据来测试接口或者功能时候正确.JSON Generator 就是这样一款生成随机 JSON 数据的在线工具,Web 开发人员必备,记得收藏和分享啊. 您可能感兴 ...