利用css3实现3D轮播图
动画实现主要利用了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"><</span>
<span id="next">></span>
</div>
利用css3实现3D轮播图的更多相关文章
- CSS3之3D轮播图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 3d轮播图(另一种方式,可以实现的功能更为强大也更为灵活,简单一句话,比酷狗优酷的炫)
前不久我做了一个3d仿酷狗的轮播图,用的技术原理就是简单的jquery遍历+css样式读写. 这次呢,我们换一种思路(呵呵其实换汤不换药),看到上次那个轮播吗?你有没有发现用jquery的animat ...
- 3d轮播图——类似酷狗的轮播
说到轮播图,其实只要是跟web开发相关的无论是前端后端应该都不陌生,各种各样的轮播图,从以前的单纯的平面山水画遮盖滑动或滚动,到Jquery的animate甚至是h5+css3,各种炫酷的轮播图更是层 ...
- CSS3+JS切割轮播图
以下说明数据,是指有4张图片的轮播图,分别切割成4张. 首先,做成单张切换的立体效果,即通过旋转,确定四张图片的位置,分别是一个立方体的上下前后的图片翻转移动角度. .box ul li:nth-ch ...
- 小程序实现非swiper组件的自定义伪3D轮播图
效果如下: 我用了很笨的方法实现的,大致就是: 1.当前点击的div(view)如果前后都有内容,那么,当前div(view)就设置到中间,前一个就设置到左边,前一个的前面所有全部设置到最左边,后面一 ...
- 微信小程序 - 3d轮播图组件(基础)
<!-- 目前仅支持data数据源来自banner,请看测试案例 ################ 以上三种形式轮播: 1. basic 2. 3d 3. book basic即普通轮播 3d即 ...
- 微信小程序3D轮播图
<!-- 轮播图 --> <swiper previous-margin='50px' next-margin='50px' bindchange="swiperChang ...
- 插件-3D轮播图
先上效果图 查看实例点击 这里 这个栗子中,可以选择展示 5 张 或者展示 3 张,即使是只有一个slide,也可以完成布局,正常轮播,麻麻再也不用怕只有4个slid而不能用这种轮播啦! 本栗实现原 ...
- CSS3 实现简单轮播图
用css3动画实现图片切换效果,原理还是改变left值.只有最简单的自动播放功能,切换后短时间静止,通过最后的位置克隆第一张图片,实现无缝切换. html结构 <div id="con ...
随机推荐
- vue 组件间的几种通信方式
Props配置 原理:通过props配置,进行父子组件间的通信,跨父子通信需要其他组件进行过渡. 使用: 传递方在标签中添加传递内容 <Son :newName="name" ...
- SP1480题解
<四重计树法> 有标号无根 prufer 序列,\(n^{n-2}\). 有标号有根 prufer 序列,\(n^{n-1}\). 无标号有根 设 \(f[n]\) 为 \(n\) 个节点 ...
- idea Mybatis mapper配置文件删除SQL语句背景色
原样式: 看着很不爽 本文 idea 版本为:idea 2020.3.1,以下操作均基于此版本进行 解决办法 1.去除警告 Settings>Editor>Inspections>S ...
- 终结初学者对ElasticSearch、Kibana、Logstash安装的种种困难
项目中准备使用ElasticSearch,之前只是对ElasticSearch有过简单的了解没有系统的学习,本系列文章将从基础的学习再到深入的使用. 咔咔之前写了一份死磕MySQL文章,如今再入一个系 ...
- python 命令行参数学习(二)
照着例子看看打打,码了就会.写了个命令行参数调用进行运算的脚本. 参考文章链接:http://www.jianshu.com/p/a50aead61319 #-*-coding:utf-8-*- __ ...
- Axure7.0 以及 中文汉化语言包下载 axure汉化包
支持 Axure RP Pro 正式版 当前最新版本 7.0.0.3184 不兼容6.5及以下版本! Axure7.0 下载地址:http://pan.baidu.com/s/1dEuR8YX Axu ...
- SVPWM实现概述
SVPWM是FOC的基础,其实现流程大致如下所示: 1. 判断合成矢量所在扇区 2. 计算相邻矢量作用时间 3. 计算各桥臂导通时间 4. 得到各相PWM占空比 5. 更新相应寄存器值 SVPWM目 ...
- 从零开始,开发一个 Web Office 套件(13):删除、替换已选中文字
这是一个系列博客,最终目的是要做一个基于 HTML Canvas 的.类似于微软 Office 的 Web Office 套件(包括:文档.表格.幻灯片--等等). 博客园:<从零开始, 开发一 ...
- JDBC的全称是什么?
Java DataBase Connectivity,java数据库连接
- HttpServletRequest.getInputStream()多次读取问题
转自:https://www.jianshu.com/p/85feeb30c1ed HttpServletRequest.getInputStream()多次读取问题 背景 使用POST方法发送数 ...