js实现轮播

在我们准备动手之前先了解下几个属性  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:0;
        }
        ul {
            margin: 0;
            padding:0;
        }

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

现在展示的效果是这样的

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

            ul > li {
            float:left;
            list-style: none;
        }

        #container {
            position: relative;
            /*width:100px*/
            height:100px;   //因为我的图片就是100*100的想让一次点击就显示一张图片 也可以一次显示多张 width进行调整       /*overflow:hidden;*/
        }
        #show {
            position: absolute;
            left:0;
            top:0;  //由于最近的父元素设置了定位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

时间: 2024-11-03 21:50:58

js实现轮播的相关文章

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

1.js实现轮播图效果 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="Author" content="奇客艺术"> <meta name="keyword" content="关键字"> <meta name=

js图片轮播与索引变色

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

js实现轮播图

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>轮播图</title> 6 <style type="text/css"> 7 *{ 8 margin: 0; 9 padding:0; 10 } 11 .carousel{ 12 margin:0 aut

JS原生轮播图

哈喽!我的朋友们,最近有一个新项目.所以一直没更新!有没有想我啊!! 今天咱们来说一下JS原生轮播图! 话不多说: 直接来代码吧:下面是CSS部分: 1 *{ 2 padding: 0px; 3 margin: 0px; 4 } 5 img{ 6 width: 500px; 7 height: 300px; 8 } 9 li{ 10 float: left; 11 } 12 ul{ 13 width: 2000px; 14 list-style: none; 15 position: absol

js网站轮播图怎么做如何做?鸡哥教你简单制作效果炫酷

日了狗啦,刚刚鸡哥辛苦码了那么多字全丢了又要重新写,这是第二遍写了...今天鸡哥给小白写个不需要写js原生代码,只需要几个插件和一段通俗易懂得jquery代码就能搞定的轮播图,当然js原生代码写着也不算很繁琐,但是有些浪费时间,更何况很多人并不会用js直接写包括鸡哥,当年在学校还是研究过一段时间js的,当时还独自写了一个轮播图俘获了多少同班妹子的芳心,不过现在是基本废了,这东西要常写,不然忘的很快. 唉,本来还有妹子等着鸡哥呢,我这一大意文章丢了,重新写的话估计来不及了,先打个电话让妹子回家吧~

基于css和js的轮播效果图实现

基于css和js的轮播效果图实现 第一篇:效果图 1.先啥也不说直接上效果图 第二篇:详细讲解 1.  建立容器  #box 给其设置相关属性(注意:overflow:hidden;) 2.  Box中包括有ul li 以及a标签.在图片描述的时候,确保span所在层置顶. 3. <div class="innerText"> </div> <span class="innerText1">第一辆车</span> 另外

用原生js封装轮播图

原生js封装轮播图 对于初学js的同学来说,轮播图还是一个难点,尤其是原生js封装轮播图代码,下面是我之前做的一个轮播图项目中封装好的一些代码,有需要的同学可以看一下,有什么不懂的可以看注释,注释看不懂的可以直接私信我 slide.js /* * 轮播图 */ function Slide(elem, ms, d, ind){ this.el = elem; this.w = parseInt(getStyle(elem, "width")); this.h = parseInt(ge

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

轮播图实现的效果为,鼠标移入左右箭头会出现,可以点击切换图片,下面的小圆点会跟随,可以循环播放.本篇文章的主要目的是分享封装插件的思路. 轮播图的我一开始是写成非插件形式实现的效果,后来才改成了封装成插件的形式. 首先要明白轮播图的实现原理和基本布局,大概就是外面有一个容器包裹着(通常是div),容器设置宽高,以及overflow为hidden,超出宽高部分隐藏, 容器里面又包含着另一个容器,包裹着所有的图片,宽为所有图片的总宽度,ul的position为absolute,通过改变ul的left

原生js简单轮播图 代码

在团队带人,突然被人问到轮播图如何实现,进入前端领域有一年多了,但很久没自己写过,一直是用大牛写的插件,今天就写个简单的适合入门者学习的小教程.当然,轮播图的实现原理与设计模式有很多种,我这里讲的是用面向过程函数式编程去实现,相对于面向对象设计模式,代码难免会显得臃肿冗余.但没有面向对象的抽象却很适合新手理解与学习.已经在BAT的同学看到希望少喷点.另外可以多提意见. 轮播图的原理: 一系列的大小相等的图片平铺,利用CSS布局只显示一张图片,其余隐藏.通过计算偏移量利用定时器实现自动播放,或通过

js的轮播效果

图片的轮播效果!主要运用了元素的style样式属性,与 setInterval(); <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> *{ margin: 0; padding: 0; } div{ width: 960px; height: 400px; o