原生js实现图片轮播效果

思路:设置父容器(一定宽度,一定高度,相对定位,子容器超出部分进行隐藏),子容器图片并排(浮动,绝对定位,每次点击进行相应的左或右偏移量)

1.html:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title>Carousel figure</title>
 5     <meta charset="utf-8">
 6     <!-- 浏览器标签页显示图标 -->
 7     <link rel="icon" type="image/x-icon" href="./images/1.jpg">
 8     <link rel="stylesheet" type="text/css" href="1.css">
 9 </head>
10 <body>
11     <!-- 构建container父容器 -->
12     <div class="container">
13         <!-- 图片部分,style部分设置便于js中改变偏移量,从而实现图片轮播-->
14         <div class="pic" style="left: 0px;">
15             <!-- 图片部分,建议均加上alt,利于seo -->
16             <img src="./images/1.jpg" alt="1">
17             <img src="./images/2.jpg" alt="2">
18             <img src="./images/3.jpg" alt="3">
19             <img src="./images/4.jpg" alt="4">
20             <img src="./images/5.jpg" alt="5">
21             <img src="./images/6.jpg" alt="6">
22         </div>
23
24         <!-- 箭头部分,实现下一张,上一张效果 -->
25         <a href="javascript:void(0)" class="arrow arrow_left">&lt;</a>
26         <a href="javascript:void(0)" class="arrow arrow_right">&gt;</a>
27
28         <!-- 当前图片id显示 -->
29         <div class="point">
30             <span class="on">1</span>
31             <span>2</span>
32             <span>3</span>
33             <span>4</span>
34             <span>5</span>
35             <span>6</span>
36         </div>
37     </div>
38
39     <!-- html body部分加载完成,最后调用js,进行操作;否则无法有效操作 -->
40     <script type="text/javascript" src="1.js"></script>
41 </body>
42 </html>

1.css:

 1 /* body部分清一下外边距与内边距,不建议*(可能影响效率),主流大网站均未采用*进行清边距 */
 2 body{
 3     margin: 0;
 4     padding: 0;
 5 }
 6 a{
 7     text-decoration: none;
 8     color: green;
 9 }
10 a:visited{
11     color: siver;
12 }
13 a:hover{
14     color: gold;
15 }
16
17 .container{
18     /* container采用相对定位relative,便于子容器进行绝对定位absolute */
19     position: relative;
20
21     /* 左右居中对齐 */
22     margin: 0 auto;
23
24     /* 每张图片的宽度高度均为320px, */
25     width: 320px;
26     height: 320px;
27     /* 图片超出部分隐藏 */
28     overflow: hidden;
29     /* border: 1px solid  */
30     /* 设置阴影:水平阴影偏离0,垂直阴影偏移0,模糊距离10px,颜色 */
31     box-shadow: 0 0 10px orange;
32 }
33 .pic{
34     position: absolute;
35     /* 6张图片进行排放,故宽度为1920px */
36     width: 1920px;
37     height: 320px;
38 }
39 .pic img{
40     /* 设置左浮动,使6张图片排成一排 */
41     float: left;
42     width: 320px;
43     height: 320px;
44 }
45 .arrow{
46     display: block;
47
48     border-radius: 50%;
49     /* 采用字符实体,故设置字体使用font-size */
50     font-size: 60px;
51     默认隐藏箭头,
52     display: none;
53 }
54 /* 当悬浮在container区域显示箭头 */
55 .container:hover .arrow{
56     display: block;
57 }
58 /* 当悬浮在arrow区域显示箭头 */
59 .container .arrow:hover{
60     background-color: rgba(0, 0, 0, 0.2);
61 }
62 .arrow_left{
63     position: absolute;
64     left: 30px;
65     top: 40%;
66     text-align: center;
67     width: 80px;
68     height: 80px;
69 }
70 .arrow_right{
71     position: absolute;
72     right: 30px;
73     top: 40%;
74     text-align: center;
75     width: 80px;
76     height: 80px;
77 }
78 .point{
79     position: absolute;
80     margin: 280px auto 0 80px;
81 }
82 .point span{
83     display: inline-block;
84     width: 30px;
85     height: 30px;
86     border-radius: 50%;
87     background-color: orange;
88     text-align: center;
89     cursor: pointer;
90 }
91 .point span.on{
92     background-color: red;
93 }
94 .point span:active{
95     background-color: gold;
96 }

1.js:

 1 // 获取pic组第一个
 2 var pic = document.getElementsByClassName(‘pic‘)[0];
 3 // 获取arrow_left
 4 var arrow_left = document.getElementsByClassName(‘arrow_left‘)[0];
 5 // 获取arrow_right
 6 var arrow_right = document.getElementsByClassName(‘arrow_right‘)[0];
 7 // 获取span组
 8 var points=document.getElementsByTagName(‘span‘);
 9 var index=0;
10
11 // 点击右箭头,下一张图片
12 arrow_right.onclick = function() {
13     next_pic();
14 }
15 // 点击左箭头,上一张图片
16 arrow_left.onclick = function() {
17     prev_pic();
18 }
19
20 // 函数实现下一张浏览效果
21 function next_pic() {
22     // 最后一张,下一张变为第一张(left值为0)
23     if (parseInt(pic.style.left) === -1600) {
24         pic.style.left = 0 + "px";
25     } else {
26         // 下一张
27         var pos = parseInt(pic.style.left) - 320;
28         pic.style.left = pos + ‘px‘;
29     }
30     index++;
31     if(index>5){
32         index=0;
33     }
34     showPoint();
35 }
36
37 function prev_pic() {
38     if (parseInt(pic.style.left) === 0) {
39         pic.style.left = -1600 + "px";
40     } else {
41         var pos = parseInt(pic.style.left) + 320;
42         pic.style.left = pos + ‘px‘;
43     }
44     index--;
45     if(index<0){
46         index=5;
47     }
48     showPoint();
49 }
50
51 var timer = null;
52
53 // 自动图片轮播,设置1s间隔
54 function autoPlay() {
55     // timer=setInterval(function(){
56     //     next_pic();
57     // },1000);
58     timer = setInterval(next_pic, 1000);
59 }
60 autoPlay();
61
62 var container = document.getElementsByClassName(‘container‘)[0];
63 // 鼠标移动到container区域,暂停自动播放
64 container.onmouseenter = function() {
65     clearInterval(timer);
66 }
67 // 鼠标离开container区域,自动播放
68 container.onmouseleave = function() {
69     autoPlay();
70 }
71
72 // 实现点击相应的小按钮图片跳转到相应图片功能
73 for (var i = 0; i < points.length; i++) {
74     (function(i){
75         points[i].onclick=function (){
76             //0~0,1~-320...5~-1600
77             pic.style.left=-320*i +"px";
78         };
79         index=i;
80         //无法点击point,使其变色
81         showPoint();
82     }
83     )(i);
84 }
85
86 // 实现相应图片对应相应小按钮功能
87 function showPoint(){
88     for(var i=0;i<points.length;i++){
89         points[i].className="";
90     }
91     points[index].className="on";
92 }
时间: 2024-10-18 11:15:58

原生js实现图片轮播效果的相关文章

基于原生js的图片轮播效果简单实现

基本效果如下: 实现了三张图片自动轮播+按键点击切换的效果. 基本思想: 图片轮播的效果和老式电影院的胶片放映形式很相似,在老式的电影院放映中,使用长长的胶片记录影片,胶片上是按顺序排列的一系列图片,通过快速通过放映机放映口,使这些图片产生一个连贯的切换效果,形成了动态的影片.所以,这里图片轮播的形式也可以采用这种方式来形成动画效果. 形式如下图: (黑框即我们的最外层的容器,充当放映机的存在:绿框就是胶片,上面搭载着很多的图片:粉框内即我们要轮播的图片) 从上图出发,我们要做到图片轮播,那么只

原生Javascript实现图片轮播效果

首先引入js运动框架 1 function getStyle(obj,name){ 2 if(obj.currentStyle){ 3 return obj.currentStyle[name]; 4 } else{ 5 return getComputedStyle(obj,false)[name]; 6 } 7 } 8 9 function startMove(obj, json, fnEnd) { 10 clearInterval(obj.timer); 11 obj.timer = se

原生JS实现图片轮播

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>大图滚动</title> <style type="text/css"> *{ margin:0; padding:0; border:0; } .clear{ *zoom:1; } .clear:after{ visibil

原生js重写《锋利的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实现淘宝首页图片轮播效果

原文:http://ce.sysu.edu.cn/hope2008/Education/ShowArticle.asp?ArticleID=10585 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>淘宝首页图片轮播效果</title> <style> <!-- * {margin: 0;padding:0;} body

原生JS实现简易轮播图

原生JS实现简易轮播图(渐变?) 最近做网页总是会用到轮播图,我就把之前写的轮播图单独拿出来吧,如果有...如果真的有人也需要也可以复制去用用啊..哈~.. window.onload = function() { var tab = 0; var loop_imgs = new Array("img/l1.jpg", "img/l2.jpg", "img/l3.jpg", "img/l4.jpg", "img/l5

CSS3图片轮播效果

原文:CSS3图片轮播效果 在网页中用到图片轮播效果,单纯的隐藏.显示,那再简单不过了,要有动画效果,如果是自己写的话(不用jquery等),可能要费点时间.css3的出现,让动画变得不再是问题,而且简单易用.下面介绍我用css3与js写的一个图片轮播效果. 一般图片轮播就是三四张图片: <div class="wrap"> <div class="carousel"> <div><img src="http://

用jQuery基于原生js封装的轮播

我发现轮播在很多网站里面都用到过,一个绚丽的轮播可以为网页增色不少,最近闲来无事,也用原生js封装了一个轮播,可能不像网上的插件那么炫,但是也有用心去做.主要用了闭包的思想.需要传递的参数有:图片地址的数组,图片宽度,上一页,下一页的id,图片列表即ul的id(这儿使用无序列表排列的图片),自动轮播间隔的时间.功能:实现了轮播的自动轮播,可以点击上一页,下一页进行切换. 下面是html中的代码,只需要把存放的容器写好,引入jquery即可: <!DOCTYPE html><html>

jQuery个性化图片轮播效果

购物产品展示:图片轮播器<效果如下所示> 思路说明: 每隔一段时间,实现图片的自动切换及选项卡选中效果 两个区域:   最外层容器区域,如上图红色线框矩形   选项卡区域 两个事件:    鼠标悬浮或鼠标划入mouseover    鼠标离开mouseleave /**大屏广告滚动样式**/ 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF