实现一个图片轮播-3d播放效果

前言:最近在做一个音乐播放器,首页要做一个图片轮播,看了bootstrap的carousel插件以及移动端的swipe.js库,都是平面图片轮播的效果,所以自己想着实现类似网易云app里那种3d图片轮播的效果,所以写下此文

使用方法:

首先,引入Swipe.js和Swipe.css

定义轮播列表ul[data-ride="swipe"],然后每一个轮播项都加上类 class="item" ;

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4   <meta charset="UTF-8">
 5   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6   <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7   <title>图片轮播3d效果</title>
 8   <link rel="stylesheet" href="swipe.css">
 9 </head>
10 <body>
11   <div class="slide_box">
12            <ul class="slide_list swipe" id="swipe_list" data-ride=‘swipe‘>
13              <li class="item">
14                <a href="" class="slide_list_link">
15                  <img src="https://y.gtimg.cn/music/common/upload/t_focus_info_iphone/67011.jpg" alt="" class="slide_list_pic">
16                </a>
17              </li>
18            </ul>
19          <div class="slide_action">
20              <a href="##" class="slide_action_btn-left"><span class=" glyphicon glyphicon-home" ></span></a>
21              <a href="##" class=‘slide_action_btn-right‘><span class=" glyphicon glyphicon-home" ></span></a>
22          </div>
23        </div>
24        <script src="http://cdn.bootcss.com/jquery/3.0.0-rc1/jquery.js"></script>
25        <script src=‘swipe.js‘></script>
26 </body>
27 </html>

然后脚本中加上以下代码,即可实现

1 $(window)
2   .on(‘load‘, function () {
3     var swipes = $(‘[data-ride="swipe"]‘)
4     swipes.each(function (index, item) {
5       var swipe = new Swipe(item)
6       swipe.init()
7     });
8   })

实现原理

  1. 定义了一个Swipe构造函数,主要通过对每一个item添加删除类,结合css的transform属性的translate3d()来实现滚动3d效果,这里只是实现一个简单的效果,具体的可以继续扩展
  2. CSS中主要有五个类来实现动画效果p0,p1,p2,p3,p4;

类p2是主要呈现的图片,初始化的时候会默认最中间的图片添加p2类,然后左边的图是p0,p1类,右边的是p3,p4类;

p0,p4主要是隐藏在后边的图片,设计这两个类是为了动画更加的流畅。

大概这么说吧,比如我们有7张图片,那么默认会初始化this.$itemIndenxArr=[0,0,1,2,3,4,4];

然后根据 this.$itemIndenxArr 分别添加类 p0,p0,p1,p2,p3,p4,p4,就可以实现初始效果图如下:

  1. 在Swipe.prototype.prev以及Swipe.prototype.next中通过对this.$itemIndexArr的修改,来实现图片的滚动效果

当向左滚动,会修改 this.$itemIndenxArr=[4,0,0,1,2,3,4];此时呈现在中间的就是第五张图

Swipe.prototype.slide判断滚动方向进行实际的滚动(即实际的添加删除类)

总结:

    总得来说,实现原理不难,基本上实现了图片的响应式,以及任意图片添加都可以实现此轮播效果,对于以后实现都可以直接引入代码,感觉还是不错的

具体代码如下:

index.html

Swipe.js

Swipe.css

时间: 2024-10-23 14:33:42

实现一个图片轮播-3d播放效果的相关文章

基于ionic框架封装一个图片轮播指令的几点

在这里我想在项目中封装一个图片轮播的指令 (本项目使用的是ionic框架) 1)定义指令 define(['app'],function(myapp){ myapp.directive('myslidebanner',['$state',function(s){ return{ templateUrl:'directives/slide-banner/slide-banner.html', scope:{ banimg:'=',//数据的来源 }, link:function(s,el,atr)

原生JavaScript实现的图片轮播左右滑动效果函数封装

原生js实现的图片轮播左右滑动效果函数封装 方便以后需要的时候拿出来复用. 适合新手学习使用. 使用方法轮播图的html结构就不多说了.不过有一点:为了实现无缝无限轮播,需要在三张图片的最前面和最后面再额外添加两张图片(见下),原理简单说就是当图片滑动到最后一张时立马跳到第二张,眼睛看上去就像前后无缝一样. 把img_slider.js引入html,然后编辑window.onload = (function () { ··· });中的内容. (获取图片床,按钮,标识等元素.然后调用slideI

每日一题_JavaScript.利用纯JavaScript Dom Core实现一个图片轮播效果 ?

具体需求:1. 页面加载后每隔2秒自动从轮播图片2. 鼠标悬停或是点击页面中小图片时,大图片自动跟随切换,并且停止轮播3. 鼠标离开小图片时,图片重新开始轮播 实现思路: 具体代码: html <!DOCTYPE html> <html>     <head>         <meta charset="utf-8" />         <title>Js实现图片轮播</title>         <l

css3实践之摩天轮式图片轮播+3D正方体+3D标签云(perspective、transform-style、perspective-origin)

本文主要通过摩天轮式图片轮播的例子来讲解与css3 3D有关的一些属性. demo预览: 摩天轮式图片轮播(貌似没兼容360 最好用chrome) 3D正方体(chrome only) 3D标签云(css3版 chrome only) 3D标签云(js版 chrome only) 前文回顾 在前面的文章css3实践之图片轮播(Transform,Transition和Animation)中我们简单地了解了css3旗下的transform.transition以及animation.回顾一下,tr

Vue学习—Vue写一个图片轮播组件

1.先看效果: 熟悉的图片轮播,只要是个网站,百分之90以上会有个图片轮播.我认为使用图片轮播. 第一可以给人以一种美观的感受,而不会显得网站那么呆板, 第二可以增加显示内容,同样的区域可以显示更多内容. 2.每学一个新东西 ,图片轮播都是很好的练手案例,而且,也很实用. 3.基本要求:页面加载,自动播放.鼠标悬停,停止播放.鼠标离开,继续播放 点击左右箭头切换上一张,下一张图片. 下方小圆点显示当前位第几张图片. 4.使用Vue实现,想法: 5.示例代码 结构html: <template>

写一个图片轮播器(使用collectionView)

一.属性 我们需要一个 collectionView 和一个 NStimer .collectionView 用来存放需要循环播放的对象, NSTimer 用来定时滚动collectionView @interface ViewController ()<UICollectionViewDelegate,UICollectionViewDataSource> @property(nonatomic,strong)UICollectionView* showCollection; @proper

VUE开发一个图片轮播的组件

完成效果图如下: vue开发的思路主要是数据绑定,代码如下: <template> <div ref="root" style="user-select: none;-webkit-user-select: none;overflow: hidden"> <div class="sliderPanel" :class="{transitionAni:ani}" :style="{heig

jquery实现图片轮播淡入淡出效果

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Document</title>    <style type="text/css">        * {margin:0; padding:0;}        #container {width:605px; h

CSS3图片轮播效果

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