动画实现主要利用了z-index将层级关系改变,从而实现了焦点图的效果;css3属性 transform rotate 来实现图片的动画效果 。transition实现过度动画!

        * {
margin: 0;
padding: 0;
} .stage {
width: 500px;
height: 280px;
margin: 100px auto;
perspective: 1800px;
position: relative;
} img {
vertical-align: middle;
} .stage ul {
width: 500px;
height: 280px;
list-style: none;
} .stage ul li {
width: 500px;
height: 280px;
position: absolute;
top: 0;
left: 0;
transition: all 2s ease 0s;
} .stage ul .left2 {
transform: rotateY(30deg) translateX(-380px) translateZ(-20px);
z-index: 7;
} .stage ul .left1 {
transform: rotateY(40deg) translateX(-280px) translateZ(70px);
z-index: 8;
} .stage ul .king {
z-index: 9;
} .stage ul .right1 {
transform: rotateY(-40deg) translateX(280px) translateZ(-70px);
z-index: 8;
} .stage ul .right2 {
transform: rotateY(-30deg) translateX(380px) translateZ(-70px);
z-index: 7;
} .stage ul .bench-warmer {
z-index: 5;
} .stage span {
display: block;
width: 60px;
height: 60px;
background-color: rgba(0, 0, 255, .5);
z-index: 20;
position: absolute;
color: #fff;
font-size: 50px;
line-height: 60px;
text-align: center;
margin-top: -30px;
} #pre {
top: 140px;
left: -380px;
} #next {
top: 140px;
right: -380px;
}
window.onload = function() {
var pre = document.getElementById('pre');
var next = document.getElementById('next');
var zhuang = document.getElementById('zhuang');
var lis = zhuang.getElementsByTagName('li');
var lock = false;
var classes = ['left2', 'left1', 'king', 'right1', 'right2', 'bench-warmer', 'bench-warmer', 'bench-warmer', 'bench-warmer'];
pre.onclick = function() {
// 在动画播放的时候将锁锁住,判断动画是否在播放,如果在播放,锁住,终止函数的执行用return,没播放就解锁,所以默认是解锁的;
// 一单击的时候就锁住动画, 所以单击的时候让lock = true;
if (lock == true) {
return;
}
// 锁定
lock = true; setTimeout(function() {
lock = false;
}, 2000)
// 将classes的第一个取出来, 放在最后一个位置
var firstclass = classes.shift();
classes.push(firstclass);
console.log(classes);
// 然后将classes给相应的class
for (var i = 0; i < classes.length; i++) {
lis[i].className = classes[i];
}
}
next.onclick = function() {
// 在动画播放的时候将锁锁住,判断动画是否在播放,如果在播放,锁住,终止函数的执行用return,没播放就解锁,所以默认是解锁的;
// 一单击的时候就锁住动画, 所以单击的时候让lock = true;
if (lock == true) {
return;
}
// 锁定
lock = true; setTimeout(function() {
lock = false;
}, 2000)
// var lastclass = classes.pop();
classes.unshift(classes.pop());
console.log(classes);
for (var i = 0; i < classes.length; i++) {
lis[i].className = classes[i];
}
}
}
 <div class="stage">
<ul id="zhuang">
<li class="left2"><img src="data:images/50/1.jpg" alt=""></li>
<li class="left1"><img src="data:images/50/2.jpg" alt=""></li>
<li class="king"><img src="data:images/50/3.jpg" alt=""></li>
<li class="right1"><img src="data:images/50/4.jpg" alt=""></li>
<li class="right2"><img src="data:images/50/5.jpg" alt=""></li>
<li class="bench-warmer"><img src="data:images/50/6.jpg" alt=""></li>
<li class="bench-warmer"><img src="data:images/50/7.jpg" alt=""></li>
<li class="bench-warmer"><img src="data:images/50/8.jpg" alt=""></li>
<li class="bench-warmer"><img src="data:images/50/9.jpg" alt=""></li>
</ul>
<span id="pre">&lt;</span>
<span id="next">&gt;</span>
</div>

利用css3实现3D轮播图的更多相关文章

  1. CSS3之3D轮播图

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 3d轮播图(另一种方式,可以实现的功能更为强大也更为灵活,简单一句话,比酷狗优酷的炫)

    前不久我做了一个3d仿酷狗的轮播图,用的技术原理就是简单的jquery遍历+css样式读写. 这次呢,我们换一种思路(呵呵其实换汤不换药),看到上次那个轮播吗?你有没有发现用jquery的animat ...

  3. 3d轮播图——类似酷狗的轮播

    说到轮播图,其实只要是跟web开发相关的无论是前端后端应该都不陌生,各种各样的轮播图,从以前的单纯的平面山水画遮盖滑动或滚动,到Jquery的animate甚至是h5+css3,各种炫酷的轮播图更是层 ...

  4. CSS3+JS切割轮播图

    以下说明数据,是指有4张图片的轮播图,分别切割成4张. 首先,做成单张切换的立体效果,即通过旋转,确定四张图片的位置,分别是一个立方体的上下前后的图片翻转移动角度. .box ul li:nth-ch ...

  5. 小程序实现非swiper组件的自定义伪3D轮播图

    效果如下: 我用了很笨的方法实现的,大致就是: 1.当前点击的div(view)如果前后都有内容,那么,当前div(view)就设置到中间,前一个就设置到左边,前一个的前面所有全部设置到最左边,后面一 ...

  6. 微信小程序 - 3d轮播图组件(基础)

    <!-- 目前仅支持data数据源来自banner,请看测试案例 ################ 以上三种形式轮播: 1. basic 2. 3d 3. book basic即普通轮播 3d即 ...

  7. 微信小程序3D轮播图

    <!-- 轮播图 --> <swiper previous-margin='50px' next-margin='50px' bindchange="swiperChang ...

  8. 插件-3D轮播图

    先上效果图 查看实例点击 这里  这个栗子中,可以选择展示 5 张 或者展示 3 张,即使是只有一个slide,也可以完成布局,正常轮播,麻麻再也不用怕只有4个slid而不能用这种轮播啦! 本栗实现原 ...

  9. CSS3 实现简单轮播图

    用css3动画实现图片切换效果,原理还是改变left值.只有最简单的自动播放功能,切换后短时间静止,通过最后的位置克隆第一张图片,实现无缝切换. html结构 <div id="con ...

随机推荐

  1. Vue3中setup语法糖学习

    目录 1,前言 2,基本语法 2,响应式 3,组件使用 3.1,动态组件 3.2,递归组件 4,自定义指令 5,props 5.1,TypeScript支持 6,emit 6.1,TypeScript ...

  2. laravel7 图片上传及视图显示

    1:修改框架config下的文件filesystems.php中的配置: 原文件 <?php return [ /* |------------------------------------- ...

  3. tp5 数据库迁移及数据填充

    1:首先通过 composer 安装    原命令加空格 1.* 2:创建 3:填入数据 4:运行,刷新数据库 数据填充: 1:在命令行输入以下命令 composer require fzaninot ...

  4. sql server数据库如何存储数组,int[]float[]double[]数组存储到数据库方法

    原文地址:https://www.zhaimaojun.top/Note/5475296 将数组存储到数据库的方法 (本人平时同csharp编写代码,所以本文中代码都是csharp代码,有些地方jav ...

  5. LGP3092题解

    看 DP 的时候翻到的题,发现这题的坑鸽子了一年半 这个状态感觉比较厉害,还是来记录一下吧. 首先硬币数量很少让我们想到状压,可以想出来一个十分 navie 的状态:\(dp[S][n]\) 表示用过 ...

  6. HIve的基本使用

    WHERE从表中筛选行: SELECT从表中查询指定的列: group by在列上做聚合. -- 假设数据文件的内容,字段之间以ASCII 001(ctrl-A)分隔,行之间以换行分隔. CREATE ...

  7. Failed to execute "C:\learn\C\程序练习\1.exe": Error 0: 操作成功完成。 请按任意键继续. . .问题解决

    在DEV中编译运行时出现以上提示,原因是该文件被杀毒软件隔离了,认为它是病毒文件 解决办法,找到该文件进行恢复

  8. 5月2日 python学习总结 IO模型

    IO模型 1.阻塞IO 2.非阻塞IO 3.多路复用IO 4.异步IO 一.阻塞IO blocking IO的特点就是在IO执行的两个阶段(等待数据和拷贝数据两个阶段)都被block了. 实际上,除非 ...

  9. CVE-2017-11882(Office远程代码执行)

    测试环境:win7+kali+office 2007 xp+kali+office 2003 win7 ip:10.10.1.144 xp ip: 10.10.1.126 kali ip 10.10. ...

  10. 16经典的SPI Flash的扇区擦除flash_se功能

    一设计功能 对SPI_flash进行扇区擦除,分为写指令和扇区擦除两个时序部分. 二设计知识点 我简单理解flash,第一它是掉电不丢失数据的存储器,第二它每次写入新数据前首先得擦除数据,分为扇区擦除 ...