博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分享一个用原生JavaScript写的带缓动效果的图片幻灯
阅读量:7282 次
发布时间:2019-06-30

本文共 3033 字,大约阅读时间需要 10 分钟。

  朋友让帮忙找个原生JS写的带缓动效果的图片幻灯,类似Tmall首页的效果,找了一圈后发现网上JS写的图片幻灯很多,相关的jQuery插件也很多,但用原生JS写的带缓动效果的却不多。没办法只好自己动手,现在把代码分享给大家,希望对大家有用。

  代码中的缓动公式用了司徒正美博客中整理的代码:

  缓动公式的推导主要利用了物理中的加速度知识,推荐过程可以看看这篇文章:

  HTML部分:

  • 1
  • 2
  • 3
  • 4
  • 5

  这部分比较简单,跟Tmall首页效果一样,几张图片,左下角是图片索引,并有一个半透明的遮罩层。

  CSS部分:

body,ul,li{
margin:0; padding:0;}ul{
list-style:none;}#J-Slide{
width:600px; height:400px; position:relative; margin:50px auto; overflow:hidden;}#J-Slide .JSlide-list{
position:absolute; width:3000px; left:0; top:0;}#J-Slide .JSlide-list li{
float:left;}#J-Slide .JSlide-list li img{
width:600px; height:400px;}#J-Slide .JSlide-num{
position:absolute; left:0; bottom:0; height:30px; padding:5px; width:100%; z-index:10;}#J-Slide .JSlide-num li{
width:30px; height:30px; margin-left:10px; float:left; font-size:16px; color:white; background:#716584; line-height:30px; text-align:center; cursor:pointer; border-radius:15px;}#J-Slide .JSlide-mask{
position:absolute; left:0; background:black; bottom:0; width:100%; height:40px; opacity:0.3; filter:Alpha(opacity = 30); z-index:1;}#J-Slide .JSlide-num .current{
background:#B91919;}

  CSS部分比较简单,直接用absolute定位。

  JavaScript库部分:

(function(){    /*    *参数说明:    *id 必须    *picwidth 可选    *speed 可选    *    *作者:artwl    *出处:http://artwl.cnblogs.com    */    var JCP_Slide=function(id,picwidth,speed){        if(!(this instanceof JCP_Slide))            return new JCP_Slide(id,picwidth,speed);        var obj=document.getElementById(id),            childs=obj.getElementsByTagName("ul");        this.author="artwl";        this.jslideList=childs[0];        this.jslideNums=childs[1].children;        this.speed= speed || 5000;        this.picwidth= picwidth || (obj.currentStyle ? parseFloat(obj.currentStyle.width) : parseFloat(document.defaultView.getComputedStyle(obj,null).width));        this.currentIndex=0;        this.distance=this.picwidth;        this.currentLeftPos=0;        this.runHandle=null;        this.len=this.jslideNums.length;    }    JCP_Slide.prototype={        bindMouse:function(){            var self=this;            for(var i=0;i

  这个JS库是核心,入口有三个参数,第一个是最外层的div的id(必须),第二个参数是图片宽度(可选),默认为最外层DIV宽度,第三个参数为自动切换的时间间隔(可选),默认为5秒。

  bindMouse是绑定鼠标的悬浮和移出事件,autoRun是让图片正动切换,play方法调用了这两个方法。

  easeOutCirc是一个先快后慢的缓动公式,transition是缓动函数,这两个方法的用法请参考 司徒正美 的博客:

  调用示例:

window.οnlοad=function(){    JCP_Slide("J-Slide").play();};

  完整代码为:

View Code
    
New Document
  • 1
  • 2
  • 3
  • 4
  • 5

  运行效果:

  • 1
  • 2
  • 3
  • 4
  • 5
 

转载地址:http://ktzjm.baihongyu.com/

你可能感兴趣的文章
市场潜力大,车企纷纷进入车联网前装市场
查看>>
海尔并购全球最大平板太阳能制造商
查看>>
【SVN】总结(1):svn常见问题(2016-01-06)
查看>>
DevOps顾问行业开始快速增长
查看>>
Win10强势,微软必应搜索广告业务增长21%
查看>>
工信部公布29款问题手机App:极速WiFi万能钥匙上榜
查看>>
最具创新能力企业评选 苹果再度登顶
查看>>
2017年直播群雄逐鹿:社交直播会否收割行业未来?
查看>>
数据中心运维需要的三大认证
查看>>
诺基亚推物联网解决方案:创造可编程的世界
查看>>
如何利用开发者账号重签ipa文件,并部署到IOS设备做测试
查看>>
HPE实验室打造怪兽级The Machine内存系统
查看>>
云端应用监控服务商Datadog融资9450万美元
查看>>
《Web测试囧事》——1.4 利用JavaScript加载的漏洞提前购买抢购商品
查看>>
Line推出新语音群聊功能 最多支持200人
查看>>
通用功能测试用例
查看>>
汉能薄膜太阳能技术将国家电投大楼变身节能光伏建筑
查看>>
CloudCC CRM探讨中国云计算市场现状
查看>>
借助RDMA功能的互连实现您企业软件定义的数据中心基础设施的效率最大化
查看>>
关于视频编码器的作用详细介绍
查看>>