先看效果图:

上源码

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. ubuntu18 ssh服务器拒绝连了密码

    问题 xshell 远程连接ubuntu时 解决方法 参考:链接 网上的kenghuo太多!!! 1.如果没有安装ssh服务,请先安装 sudo apt-get install openssh-ser ...

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

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

  3. 嵌入式以太网模块的TCP Client模式说明

    嵌入式以太网模块采用TTL电平串口,支持TCP Server,TCP Client,UDP Slave,UDP Master,TCP-ZSD,UDP-ZSD多种通信协议,TCP服务器模式支持多连接,可 ...

  4. 4G DTU是什么 可以应用于哪些行业?

    4G是什么? 4G是移动电话网络通过蜂窝塔传输的信号的名称,蜂窝塔连接到更宽的互联网.这些是当今智能手机使用的信号,当您外出时,可以通过手机上网,因此他们不依赖电缆或光纤,也就是说无线网. 使用合适的 ...

  5. Linux 系统编程 学习:07-基于socket的网络编程2:基于 UDP 的通信

    Linux 系统编程 学习:07-基于socket的网络编程2:基于 UDP 的通信 背景 上一讲我们介绍了网络编程的一些概念.socket的网络编程的有关概念 这一讲我们来看UDP 通信. 知识 U ...

  6. 联发科Mediatek工业路由芯片上网稳定低功耗的Router模块WiFi中继——无线AP定制方案

    Router模块又名路由器模块,是指将路由器的接口类型及部分扩展功能是可以根据实际需求来进行无线接入服务,允许其他无线设备接入,通过局域无线端或联网远程端,进行数据访问,对无线设备进行远程控制.常见的 ...

  7. Verilog小总结

    Verilog小总结 基础 assign assign作为一个组合逻辑常用的语句,可认为是将电线连接起来,当然它能做的不仅仅是将一个输入直接输出,它能把输入信号进行逻辑运算后再输出.当assign左右 ...

  8. SQL SERVER数据库常用命令

    创建数据库: 命令:create database 数据库名: 示例:create database student: 删除数据库: 命令:drop database 数据库名: 示例:drop da ...

  9. 常用简单电脑bai快捷键大全

    Ctrl+C 复制.duCtrl+X 剪切.Ctrl+V粘贴.Ctrl+Z撤销.Ctrl+A全选所有文件.zhiDelete删除.daoShift+Delete避开回收站直接永久删除(不可找回).F3 ...

  10. Spring5.0源码学习系列之浅谈BeanFactory创建

    Spring5.0源码学习系列之浅谈BeanFactory创建过程 系列文章目录 提示:Spring源码学习专栏链接 @ 目录 系列文章目录 博客前言介绍 一.获取BeanFactory主流程 二.r ...