简单的图片轮播效果

用js代码来实现一个简单的图片轮播效果

鼠标移入图片后显示左右箭头按钮,点击就可以实现图片的切换。

以下分别是html代码和js代码,欢迎批评和讨论!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>图片轮播</title>
    <style>
        *{padding:0px; margin:0px;}
        ul{
            position: absolute;
            left:0px;
            top:0px;
            list-style-type:none;
            width:2600px;
            height:280px;
        }
        ul li{
            width:520px;
            height:280px;
            float:left;
        }
        #box{
            position:relative;
            width:520px;
            height:280px;
            margin:50px auto;
            overflow:hidden;
        }
        #btn div{
            position: absolute;
            width:20px;
            height:40px;
            background:lightskyblue;
            top:120px;
            line-height: 40px;
            text-align:center;
            opacity:0.5;
            filter:alpha(opacity:30);
            display:none;
        }
        #Rbtn{
            left:500px;
        }
    </style>
</head>
<body>

<div id="box">
    <ul id="ul">
        <li><img src="imgs/1.jpg" alt=""></li>
        <li><img src="imgs/2.jpg" alt=""></li>
        <li><img src="imgs/3.jpg" alt=""></li>
        <li><img src="imgs/4.jpg" alt=""></li>
        <li><img src="imgs/5.jpg" alt=""></li>
    </ul>
    <div id="btn">
        <div id="Lbtn"><</div>
        <div id="Rbtn">></div>
    </div>

</div>

<script src="js/animate.js"></script>
<script src="js/myJs.js"></script>

</body>
</html>
var ul = document.getElementById("ul"),
    lis = document.getElementsByTagName("li"),
    box = document.getElementById("box"),
    lbtn = document.getElementById("Lbtn"),
    rbtn = document.getElementById("Rbtn");

//还有一个问题,左键可以无限点击,但是右键必须等待效果执行完毕才可以继续点击

lbtn.onclick = function(){
    ul.insertBefore(ul.lastElementChild,lis[0]);
    ul.style.left = "-520px";
    animate(ul,0,"left");
}

rbtn.onclick = function(){
    animate(ul,-520,"left",function(){
        ul.appendChild(ul.firstElementChild);   //注意这里firstChild和firstElementChild是不同的,firstChild是text对象,不能直接拿走图片
        ul.style.left="0px";  //因为把往左拉的第一张图片重新放在最后了,因此将left的值重新设置为0
    });
}

box.onmouseover = function(){
    lbtn.style.display = "block";
    rbtn.style.display = "block";
}
box.onmouseout = function(){
    lbtn.style.display = "none";
    rbtn.style.display = "none";
}
 1 //回调函数,重新调用自身,但是此时注意,第四个参数不可以直接调用animate,因为animate函数中调用fn时,并没有带上任何参数
 2
 3 function animate(dom,target,attr,fn){
 4     clearInterval(dom.timer);
 5     dom.timer = setInterval(function(){
 6         var domAttr = parseFloat(getAttr(dom,attr));
 7         var speed = (target - domAttr)/10;
 8         console.log(speed);
 9         if(attr == "opacity"){
10             domAttr *= 100;
11         }
12
13         if(target>domAttr){
14             speed = Math.ceil(speed);
15         }else{
16             speed = Math.floor(speed);
17         }
18         if(target == domAttr){
19             clearInterval(dom.timer);
20             //进行判断,当没有第四个参数,即不需要回调函数时,则不执行
21             if(fn){
22                 //当重复调用时,this的指向会改变,因此要在dom的作用域下调用fn函数才不会出错
23                 fn.call(dom);
24             }
25         }else{
26             if(attr=="opacity"){
27                 dom.style[attr] = (domAttr + speed)/100;
28                 dom.style.filter = "alpha(opacity:"+(domAttr + speed)+");"
29             }else{
30                 dom.style[attr] = domAttr + speed +"px";
31             }
32         }
33     },30);
34 }
35
36 function getAttr(dom,attr){
37     if(dom.currentStyle){
38         return dom.currentStyle[attr];
39     }else{
40         return getComputedStyle(dom,null)[attr];
41     }
42 }

原文地址:https://www.cnblogs.com/cauzinc/p/8547922.html

时间: 2024-11-07 23:31:33

简单的图片轮播效果的相关文章

一个简单的图片轮播效果,

<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> </head> <style type="text/css"> .asd{ background-color:#1ADC9D; border:2px solid:#F30A0E; width:25px; height:25px

viewPager+Handler+Timer简单实现广告轮播效果

基本思想是在Avtivity中放一个ViewPager,然后通过监听去实现联动效果,代码理由详细的解释,我就不说了. MainActivity.java 1 package com.example.administrator.imageviewlunbodemo; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.os.Handler; 6 import android.os.Message

CSS3图片轮播效果

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

简单的一个轮播效果

刚刚学了Jquery,写了一个简单的图片滑动,但不是完成品. <!DOCTYPE html> <meta content="text/html" charset="utf-8"/><html><head> <title></title> <link href="css/lunbo.css" rel="stylesheet"/> <scri

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

首页图片轮播效果

<html><head><meta  charset="utf-8" /><title>首页图片轮播效果</title><style type="text/css">* {margin: 0;padding:0;}body {background: #222;}ol{list-style: none;}img {border: 0 none;}#slider { border: 1px soli

js最简单焦点图片轮播代码

将下面代码保存为banner.js,在需要显示焦点图的地方调用该js即可. <script type="text/javascript" src="banner.js"></script> 注意:代码中图片路径修改为你自己的图片地址 var widths=725; //焦点图片宽 var w=0; var widthss=widths+w; var heights=295; //焦点图片高 var heightss=heightss+w; v

jQuery个性化图片轮播效果

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

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

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