利用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> ...
随机推荐
- puk1251 最小生成树
Description The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid ...
- Spring Cloud 学习笔记 (一)-- Eureka 服务器
开局一张图,截取了本人学习资料中的一张图,很好地展示了Eureka的架构. Eureka服务器 管理服务的作用.细分为服务注册,服务发现. 所有的客户端在Eureka服务器上注册服务,再从Eureka ...
- 【实战】记一次老项目的swagger整合
1.背景 这两天接到一个整合swagger的任务,本以为很简单,预计两小时内完成,没想到其中有太多的坑,整了两天才完成. 首先项目是一个比较老的项目,之前用的servlet,目前在重构为springm ...
- C# 实现十六进制Unicode编码字符串转换为汉字
网上找了几个方法,但是运行之后会报错,提示要解析的字符串格式不正确.然后我猜想可能是传入的字符串 \u60a8\u4eca\u65e5\u5df2\u7b7e\u5230 中带"\" ...
- .NetCore简单封装基于IHttpClientFactory的HttpClient请求
IHttpClientFactory是什么?为什么出现了IHttpClientFactory 一.IHttpClientFactory是什么? IHttpClientFactory是.netcore2 ...
- Js中常见的内存泄漏场景
常见的内存泄漏场景 内存泄漏Memory Leak是指程序中已动态分配的堆内存由于疏忽或错误等原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果.内存泄漏并非指内 ...
- 查看并配置JAVA_HOME
转载自https://blog.csdn.net/weixin_41713592/article/details/79941418which java [root@host2 hadoop-1.1.2 ...
- Python正则表达式-换行的匹配
找到了之前参考的博文,用来记录一下https://www.cnblogs.com/baxianhua/p/8572805.html 平常 点 (.)去匹配任意字符的时候,是不能匹配换行符的 匹配换行: ...
- C#两行代码实现三维地球
一. 为什么要用三维地球? 三维地球是地理信息技术的一个重要发展方向,相比较二维地图技术,三维地球最大的特点是更直观更形象地表达地理信息和空间上的方位.我们可以在三维气象模拟. ...
- 编程,向内存0:200~0:23F依次传送数据0~63(3FH),程序中只能使用9条指令,9条指令包括 mov ax,4c00h 和 int 21h
assume cs:code code segment mov bx,020H mov ds,bx mov bx,0 mov cx,63 s:mov [bx],bx inc bx loop s mov ...