利用css3和js实现旋转木马图片小demo
先看效果图:

上源码
html代码
<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="./index.css">
</head> <body>
<div class="box">
<img src="./img/1.png" alt="">
<img src="./img/2.png" alt="">
<img src="./img/3.png" alt="">
<img src="./img/4.png" alt="">
<img src="./img/5.png" alt="">
<img src="./img/6.png" alt="">
<img src="./img/1.png" alt="">
<img src="./img/2.png" alt="">
<img src="./img/3.png" alt="">
<img src="./img/4.png" alt="">
<img src="./img/5.png" alt="">
<img src="./img/6.png" alt="">
</div>
<script src="./jquery-3.3.1.js"></script>
<script src="./index.js"></script>
</body> </html>
css代码
*{
margin:0;
padding:0;
}
html,body{
width:100%;
height:100%;
background-image:radial-gradient(circle at center center,rgba(244,23,234,0.2),rgba(0,0,0));
background-color:#000;
overflow: hidden;
perspective: 1000px;
}
.box{
position: relative;
width:120px;
height:180px;
margin:200px auto;
transform-style:preserve-3d;
}
.box img{
position: absolute;
width:100%;
height:100%;
-webkit-box-reflect: below 10px -webkit-linear-gradient(top,rgba(0,0,0,0) 40%,rgba(0,0,0,0.5) 100%); /*倒影*/
}
js(jquery)代码
window.onload = function () {
var img = $('img');
var len = img.length;
var deg = 360 / len;
for (var i = 0; i < len; i++) {
$('img').eq(i).css({
'transform': 'rotateY(' + i * deg + 'deg) translateZ(300px)',
'transition': 'transform 0.5s linear ' + (len - 1 - i) * 0.1 + 's'
}) //实现 刚开始的发牌效果。
};
bindEvent();
}
function bindEvent() {
var box = $('.box');
var body = $('body');
var lastX, lastY, nowX, nowY, disX, disY;
var roX = 0, roY = 0;
var timer;
body.on('mousedown', function (e) {
clearInterval(timer);
lastX = e.clientX;
lastY = e.clientY;
body.on('mousemove', function (e) {
nowX = e.clientX;
nowY = e.clientY;
disX = nowX - lastX;
disY = nowY - lastY;
roX -= disY * 0.2;
roY += disX * 0.2;
roX = roX % 360;
roY = roY % 360;
box.css({
'transform': 'rotateX(' + roX + 'deg) rotateY(' + roY + 'deg)',
});
lastX = nowX;
lastY = nowY;
})
return false;
}).on('mouseup', function () {
body.off('mousemove');
// 以下是缓冲
timer = setInterval(function () {
disX *= 0.95;
disY *= 0.95;
roX -= disY * 0.5;
roY += disX * 0.5;
roX = roX % 360;
roY = roY % 360;
box.css({
'transform': 'rotateX(' + roX + 'deg) rotateY(' + roY + 'deg)',
});
if (Math.abs(disX) < 0.01 && Math.abs(disY) < 0.01) {
clearInterval(timer);
}
}, 20);
});
}
利用css3和js实现旋转木马图片小demo的更多相关文章
- js特效 15个小demo
js特效和15个小demo 代码如下:images文件夹未上传 1.图片切换: <!DOCTYPE html> <html> <head> <title> ...
- js存款计算器原生小demo
大家好,本人是初入前端的一枚程序猿,深知js底层开发的重要性,这也是我的软肋所在(曾经以为),渐渐的明白了一个道理,饭要一口口吃,路要一步步走,这也是我想告诉给所有刚刚进入IT行业的技术员们,沉下心, ...
- Vue.js之组件嵌套小demo
Vue.js之组件嵌套的小demo项目 第一步:初始化一个wabpack项目,这里不在复述.第二步:在components文件夹下新建Header.vue Footer.vue和Users.vue三个 ...
- 原生JS写了一个小demo,根据输入的数字生成不同背景颜色的小方块儿~
昨天练习写了这个小demo,个人觉得通过设置定位元素left和top的值,来实现换行的功能,这种方法很巧妙~ 另外,如下代码中的随机颜色的获取,还请各位前辈多多指教:需要改进的地方:或者有没有更好的方 ...
- css3+jquery+js做的翻翻乐小游戏
主要是为了练习一下css3的3D翻转功能,就做了这么个小游戏,做的比较粗糙,但是效果看的见. 主要用到的css3代码如下: html结构: <div class="container& ...
- 利用CSS3实现鼠标悬停在图片上图片缓慢缩放的两种方法
1.改变background-size属性 将图片作为某个html元素的背景图片,用transition属性改变图片的大小. .container{ background-size: 100% 100 ...
- 基于Two.js实现的一个小demo,星球环绕动画效果
下面是核心js code HTML就不贴了,需要引入two.js文件: var elem = document.getElementById('draw-animation'); var two = ...
- css | js 实现扩展卡片小demo
1.代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- js事件学习的小demo
直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> ...
随机推荐
- MFiX-DEM中的并行碰撞搜索
基于MFiX-19.2.2 DEM并行程序中的颗粒循环 在DEM并行程序中,每个进程只循环该进程包含的颗粒,并且每个进程还有一层ghost cell,用来存放另一个进程发送过来的颗粒信息. 下面添加一 ...
- .net npoi读word内容+目录
最近在做读npoi文档存入搜索引擎,实现快速查询word文档中内容并展示,效果希望带有目录导航. 网上有很多例子都是读写操作,很肤浅没有具体读到想要的东西所以自己就写了个demo,也有微软提供的off ...
- 正式班D16
2020.10.27星期二 正式班D16 目录 9.9 字符处理命令 9.9.1 sort排序 9.9.2 uniq去重 9.9.3 cut处理规律文本 9.9.4 tr替换 9.9.5 wc统计 9 ...
- 自己动手实现一个简单的 IOC容器
控制反转,即Inversion of Control(IoC),是面向对象中的一种设计原则,可以用有效降低架构代码的耦合度,从对象调用者角度又叫做依赖注入,即Dependency Injection( ...
- 快来,我悄悄的给你说几个HashCode的破事。
这是why技术的第 72 篇原创文章 Hash冲突是怎么回事 在这个文章正式开始之前,先几句话把这个问题说清楚了:我们常说的 Hash 冲突到底是怎么回事? 直接上个图片: 你说你看到这个图片的时候想 ...
- Bash echo输出带颜色和背景的文本
Bash echo输出带颜色和背景的文本 1.先上效果图 2.bash代码 #!/bin/bash #************************************************* ...
- 浅谈 Johnson 算法
目录 前言 引入 算法概述 算法流程 正确性证明 代码实现 结语 前言 Johnson 和 Floyd 一样是用来解决无负环图上的全源最短路. 在稀疏图上的表现远远超过 Floyd,时间复杂度 \(O ...
- 算法笔记之KMP算法
本文是<算法笔记>KMP算法章节的阅读笔记,文中主要内容来源于<算法笔记>.本文主要介绍了next数组.KMP算法及其应用以及对KMP算法的优化. KMP算法主要用于解决字符串 ...
- electron 实现文件下载管理器
文件下载是我们开发中比较常见的业务需求,比如:导出 excel. web 应用文件下载存在一些局限性,通常是让后端将响应的头信息改成 Content-Disposition: attachment; ...
- 简单入门Rabbitmq
什么是RabbitMQ RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写.支持多种客户端,如:Python.Ruby..NET.Java.JMS.C.PHP.ActionScr ...