利用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 ...
随机推荐
- petite-vue源码剖析-ref的工作原理
ref内部的工作原理十分简单,其实就是将指令ref.:ref或v-bind:ref标识的元素实例存储到当前作用域的$refs对象中,那么我们就可以通过this.$refs获取对应的元素实例.但由于作用 ...
- 《手把手教你》系列基础篇(七十六)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 下篇(详解教程)
1.简介 今天这一篇宏哥主要是结合实际工作中将遇到的测试场景和前边两篇学习的知识结合起来给大家讲解和分享一下,希望以后大家在以后遇到其他的测试场景也可以将自己的所学的知识应用到测试场景中. 2.测试场 ...
- 微信小程序 app.js globalData 赋值报错
//success方法要用用success: res => {}的格式 success: res => { } //赋值报错 success:function(e){ } //报错内容: ...
- LGP7840题解
给出一种新的理解方式,本质上和正解是一致的. 首先我们现在已经有了一个森林,我们现在要给他加一条边,加哪一条边是最优的呢? 假设加的边是 \((u,v)\),那么 \(((d[u]+1)^2-d[u] ...
- 从零开始,开发一个 Web Office 套件(11):支持中文输入法(or 其它使用输入法的语言)
这是一个系列博客,最终目的是要做一个基于 HTML Canvas 的.类似于微软 Office 的 Web Office 套件(包括:文档.表格.幻灯片--等等). 博客园:<从零开始, 开发一 ...
- ActiveMQ代码-01
p2p模式 生产者 package com.activemq.activemqdemo.p2p; import org.apache.activemq.ActiveMQConnectionFactor ...
- Spring Data ElasticSearch的使用
1.什么是Spring Data Spring Data是一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务. S ...
- JAVA 线上问题排查方法
CPU 磁盘 内存 GC问题 网络 线上故障主要会包括cpu.磁盘.内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍. 同时例如jstack.jma ...
- springcloud学习00-开发工具相关准备
用maven构建springcloud项目,目录结构(图片来源:https://blog.csdn.net/qq_36688143/article/details/82755492) 1.maven ...
- tensorflow2.4与目标检测API在3060显卡上的配置安装
目前,由于3060显卡驱动版本默认>11.0,因此,其不能使用tensorflow1版本的任何接口,所以学习在tf2版本下的目标检测驱动是很有必要的,此配置过程同样适用于任何30系显卡配置tf2 ...