先看效果图:

上源码

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的更多相关文章

  1. js特效 15个小demo

    js特效和15个小demo 代码如下:images文件夹未上传 1.图片切换: <!DOCTYPE html> <html> <head> <title> ...

  2. js存款计算器原生小demo

    大家好,本人是初入前端的一枚程序猿,深知js底层开发的重要性,这也是我的软肋所在(曾经以为),渐渐的明白了一个道理,饭要一口口吃,路要一步步走,这也是我想告诉给所有刚刚进入IT行业的技术员们,沉下心, ...

  3. Vue.js之组件嵌套小demo

    Vue.js之组件嵌套的小demo项目 第一步:初始化一个wabpack项目,这里不在复述.第二步:在components文件夹下新建Header.vue Footer.vue和Users.vue三个 ...

  4. 原生JS写了一个小demo,根据输入的数字生成不同背景颜色的小方块儿~

    昨天练习写了这个小demo,个人觉得通过设置定位元素left和top的值,来实现换行的功能,这种方法很巧妙~ 另外,如下代码中的随机颜色的获取,还请各位前辈多多指教:需要改进的地方:或者有没有更好的方 ...

  5. css3+jquery+js做的翻翻乐小游戏

    主要是为了练习一下css3的3D翻转功能,就做了这么个小游戏,做的比较粗糙,但是效果看的见. 主要用到的css3代码如下: html结构: <div class="container& ...

  6. 利用CSS3实现鼠标悬停在图片上图片缓慢缩放的两种方法

    1.改变background-size属性 将图片作为某个html元素的背景图片,用transition属性改变图片的大小. .container{ background-size: 100% 100 ...

  7. 基于Two.js实现的一个小demo,星球环绕动画效果

    下面是核心js code HTML就不贴了,需要引入two.js文件: var elem = document.getElementById('draw-animation'); var two = ...

  8. css | js 实现扩展卡片小demo

    1.代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  9. js事件学习的小demo

    直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> ...

随机推荐

  1. [bug]录

    后端请求地址找不到,Tomcat服务器无响应 报404错误 查看资料和视频,用了2天时间(实际不到2天),还没有解决,我在书上找了描述,也问了别人,路径改成图上所说,还是未解决,找资源找到不广泛,没找 ...

  2. css自定义字体----使用外部字体文件

    css外部自定义字体 给大家分享一个使用的css小技巧!记得收藏呀!相信大家在浏览各种网站会见到各种奇形怪状花里胡哨的文字,还有就是一些浏览器兼容性问题,不会支持一些特殊的字体!给大家分享一个极其简单 ...

  3. linux压缩和解压文件命令

    tar  解包:tar zxvf filename.tar  打包:tar czvf filename.tar dirnamegz命令  解压1:gunzip filename.gz  解压2:gzi ...

  4. zookeeper Cli的常用命令

    zookeeper Cli的常用命令 服务管理 启动ZK服务: zkServer.sh start 查看ZK状态: zkServer.sh status 停止ZK服务: zkServer.sh sto ...

  5. 如何将Docker升级到最新版本

    很早以前,已经使用过了Docker了,但是没有使用过 Docker 部署 NetCore 3.1 的应用程序,今天部署的时候发生了一些问题,解决办法:Docker 版本太低了,那就升级一下.下面是具体 ...

  6. Java学习的第十天

    1.类方法 实例方法 自定义方法 2.今天使用visio不太会使用,方法覆盖不懂. 3.明天将方法剩余部分学完

  7. P1098 字符串的展开

    P1098 字符串的展开 刷新三观的模拟题 题意描述 太长了自己去看吧. 算法分析 模拟题分析你*呀! 写这篇题解的唯一原因是:三目运算符用的好的话,可以让百行大模拟变成30行水题. 代码实现 #in ...

  8. C++语言学习之STL 的组成

    STL有三大核心部分:容器(Container).算法(Algorithms).迭代器(Iterator),容器适配器(container adaptor),函数对象(functor),除此之外还有S ...

  9. svg究竟是什么?

    svg究竟是什么? 1 要点 要点1:svg与jpg/png等格式的用途完全不同,不可相提并论,没有可比性,不可互相替代. 要点2:日常生活中,我们用相机拍摄自然景象得到的照片和视频,能且只能用jpg ...

  10. maven 搭建私服

    博客参考 https://www.cnblogs.com/luotaoyeah/p/3791966.html 整理纯为技术学习 1 . 私服简介 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程 ...