css3可拖动的魔方3d
css3可拖动的魔方3d
主要用到知识点:
- css3 3d转换
- 原生js鼠标拖动事件
- display:grid 布局
实现的功能
- 3d魔方 可点击,可拖动
- 直接看效果

html:
<div class="container">
<div class="box defaul">
<div class="pic"><img src="./img/cat.jpg" alt=""></div>
<div class="pic"><img src="./img/dog.jpg" alt=""></div>
<div class="pic"><img src="./img/elephant.jpg" alt=""></div>
<div class="pic"><img src="./img/lion.jpg" alt=""></div>
<div class="pic"><img src="./img/rabbit.jpg" alt=""></div>
<div class="pic"><img src="./img/monkey.jpg" alt=""></div>
</div>
</div>
<h1>点击下面的图片按钮切换</h1>
<div class="btn">
<input type="image" class="1" src="./img/cat.jpg">
<input type="image" class="2" src="./img/dog.jpg">
<input type="image" class="3" src="./img/elephant.jpg">
<input type="image" class="4" src="./img/lion.jpg">
<input type="image" class="5" src="./img/rabbit.jpg">
<input type="image" class="6" src="./img/monkey.jpg">
</div>
css:
* {
margin: 0;
padding: 0;
}
html,
body {
width: 100%;
height: 100%;
background: #66677c;
text-align: center;
}
.container {
width: 300px;
height: 300px;
margin: 50px auto 150px;
perspective: 1200px;
}
.container .box {
width: 300px;
height: 300px;
position: relative;
transform-style: preserve-3d;
transition: transform 0.5s;
}
.container .box .pic {
position: absolute;
left: 0;
top: 0;
width: 300px;
height: 300px;
box-shadow: 0px 0px 5px #fff;
}
.container .box .pic img {
width: 100%;
height: 100%;
cursor: pointer;
}
.container .box .pic:nth-child(1) {
transform: translateZ(150px);
}
.container .box .pic:nth-child(2) {
transform: rotateY(-180deg) translateZ(150px);
}
.container .box .pic:nth-child(3) {
transform: rotateY(90deg) translateZ(150px);
}
.container .box .pic:nth-child(4) {
transform: rotateY(-90deg) translateZ(150px);
}
.container .box .pic:nth-child(5) {
transform: rotateX(90deg) translateZ(150px);
}
.container .box .pic:nth-child(6) {
transform: rotateX(-90deg) translateZ(150px);
}
h1 {
color: #fff;
font-size: 30px;
margin-bottom: 30px;
}
.btn {
display: grid;
justify-content: center;
grid-template-columns: 100px 100px 100px;
grid-template-rows: 100px 100px;
grid-gap: 15px;
}
.btn input {
width: 100px;
height: 100px;
outline: none;
border: 2px solid #fff;
}
.btn input:focus {
border: 2px solid #e70;
}
.defaul {
transform: translateZ(-150px) rotateX(-10deg) rotateY(15deg);
}
.image1 {
transform: translateZ(-150px) rotateX(0deg) rotateY(0deg);
}
.image2 {
transform: translateZ(-150px) rotateY(-180deg);
}
.image3 {
transform: translateZ(-150px) rotateY(-90deg);
}
.image4 {
transform: translateZ(-150px) rotateY(90deg);
}
.image5 {
transform: translateZ(-150px) rotateX(-90deg);
}
.image6 {
transform: translateZ(-150px) rotateX(90deg);
}
js:
(function(){
var btn = document.getElementsByClassName('btn')[0];
var box = document.getElementsByClassName('box')[0];
btn.addEventListener('click',function(e){
var className = e.target.className;
if(className !== 'btn'){
box.style = '';
box.classList.replace(box.classList[1],'image'+className);
}
})
//鼠标拖动效果
var xN = 10, yN = 15;
document.addEventListener('mousedown',function(e){
e.preventDefault();
e.stopPropagation();
var x = e.clientX;
var y = e.clientY;
document.addEventListener('mousemove',move);
document.addEventListener('mouseup', up);
function move(e){
e.preventDefault();
e.stopPropagation();
var x1 = e.clientX;
var y1 = e.clientY;
xN += (x1 - x)*0.04;
yN += (y1 - y)*0.04;
box.style.transform = 'translateZ(-150px) rotateY(' + xN + 'deg) rotateX(' + -yN + 'deg)';
}
function up(){
document.removeEventListener('mousemove', move);
}
})
})()
参考自:腾讯课堂渡一教育
css3可拖动的魔方3d的更多相关文章
- 利用纯CSS3实现超立体的3D图片侧翻倾斜效果
原文:利用纯CSS3实现超立体的3D图片侧翻倾斜效果 上午的时候我在jQuery论坛上看到网友分享的一款CSS3 3D图片侧翻倾斜特效,觉得效果非常棒,其实话说回来,这玩意儿的实现真的非常简单,主要是 ...
- js+css3+HTML5拖动滑块(type="range")改变值
最近在做一个H5的改版项目,产品和设计给出的效果中有一个拖动滑块可以改变输入值的效果,类似如下图这样: 拿到这样的设计稿后,我有点懵了,自己写一个js?去网上找一个这样的效果?自己写一个可以,只是实现 ...
- 一款纯css3实现的超炫3D表单
今天要给大家分享一款纯css3实现的超炫3D表单.该特效页面的加载的时候3d四十五度倾斜,当鼠标经过的时候表单动画回正.效果非常炫,一起看下效果图: 在线预览 源码下载 实现的代码. html代码 ...
- 纯CSS3实现一个旋转的3D立方体盒子
简单介绍 上网易前端微专业课程,里面有一个课外作业是实现一个3D旋转立方体.花了点时间做了下.还有点意思.写个简单教程.供大家学习. 先放上终于要实现的效果 注:代码在chrome 43.0.2357 ...
- css3实现酷炫的3D盒子翻转效果
简介 运用css3先在平面空间组成立方体盒子,再让整个盒子翻转起来,先来张效果图: 步骤 1.先用css将6张图片摆成下图的样子: 下面就是通过css3的3D变换将每个面进行翻转,使之成为一个立体的盒 ...
- CSS3基础 02(2D /3D)
一.2D转换 概念:就是元素在2D平面上实现移动,旋转,缩放,斜切的操作就称之为2D转换 语法:transform:值 值:移动,旋转,缩放,斜切 (1.1)移动 transform:translat ...
- 纯CSS3实现超立体的3D图片侧翻倾斜效果
看到网友分享的一款CSS3 3D图片侧翻倾斜特效,觉得效果非常棒,其实话说回来,这玩意儿的实现真的非常简单,主要是创意不错.先来看看效果图.那么接下来我们分析一下源码吧,显示html代码,非常简单: ...
- HTML5 CSS3 诱人的实例: 3D立方体旋转动画
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/34120047 创意来自:http://www.html5tricks.com/d ...
- 前端笔记之HTML5&CSS3(下)2D/3D转换&animate动画
一.2D转换(transform) CSS3中的transform转换和PS中的变换是一样的,分别有:缩放.位移.斜切.旋转 1.1 transform:scale()缩放 transform:sca ...
随机推荐
- 关于qemu的二三事(1)————qemu的特殊参数之monitor
qemu作为一个十分重要的虚拟化工具,提供了丰富的功能/参数来支持虚拟化的各种操作. 下面仅就monitor这个参数或者说是功能来结合自己的实际体验来做个简要介绍. 如何进入qemu的monitor模 ...
- k8s 传参给docker env command、args和dockerfile中的entrypoint、cmd之间的关系
[k8s]args指令案例-彻底理解docker entrypoint 需求: 搞个镜像,可以运行java -jar xxx.jar包,xxx.jar包名称要用参数传 思路1: 打对应运行ja ...
- Innodb的redo log block
- JSON序列化和反序列化 对decmail 取值问题
地图API返回经纬度:经度: 纬度: lng":114.03483089395202,"lat":22.615589046911805 decmail 接收数据后两位会截 ...
- [译]如何根据Pandas中的列名获取列所在的index位置?
原文来源:https://stackoverflow.com/questions/13021654/get-column-index-from-column-name-in-python-pandas ...
- 认领该应用 apk空白包签名 方法
起因: apicloud开发的项目,上架应用宝市场,被要求做这个 解决方法: 下载签名工具,并解压缩.解压缩.解压后是两个文件夹,选择keystore签名工具. 下载地址: linux 签名工具(命令 ...
- Global.asax.cs 为 /.aspx 执行子请求时出错。 Server.Transfer
x 后台代码 Global.asax.cs protected void Application_Error(object sender, EventArgs e){Server.Transfer(& ...
- dbcp与c3p0的区别
众所周知,无论现在是B/S或者是C/S应用中,都免不了要和数据库打交道.在与数据库交 互过程中,往往需要大量的连接.对于一个大型应用来说,往往需要应对数以千万级的用户连接请求,如果高效相应用户请求,对 ...
- .Net - 线程本地变量(存储)的使用
关于C#多线程的文章,大部分都在讨论线程的开始与停止或者是多线程同步问题.多线程同步就是在不同线程中访问同一个变量或共享资源,众所周知在不使用线程同步的机制下,由于竞争的存在会使某些线程产生脏读或者是 ...
- mac自带ssh在哪
打开Finder,前往> 前往文件夹,输入 ~/.ssh 回车就到ssh目录了. 点击Mac顶部菜单-->“苹果”图标-->最近使用的项目-->终端--输入 open ~/.s ...