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 ...
随机推荐
- Alpha总体规划 & 任务分解
目录 Alpha阶段项目目标 任务拆解和优先级 总体规划 Alpha-1任务分配 Alpha-2任务分配 Alpha阶段项目目标 初步实现北航社团小程序: 北航社团小程序基础功能(优先级中的高两级,即 ...
- 第06组 Alpha事后诸葛亮
一.组长博客: https://www.cnblogs.com/mhq-mhq/p/11923194.html 二.Postmortem模板 设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚 ...
- 剑指offer:字符流中第一个不重复的字符
题目描述: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读 ...
- numpy模块常用函数解析
https://blog.csdn.net/lm_is_dc/article/details/81098805 numpy模块以下命令都是在浏览器中输入. cmd命令窗口输入:jupyter note ...
- 009-MySQL循环while、repeat、loop使用
一.循环使用 mysql常见的三种循环方式:while.repeat和loop循环.还有一种goto,不推荐使用. 前提1.创建基本表结构 # 创建表结构 drop table if exists ` ...
- Angularjs Select获取数组下标
一.定义资源 //资源类型 $scope.status=['项目测试','开发工具','安装包','工作计划','测试项目','我的游戏','我的音乐','博客首页图片']; 二.没错直接用 {{$ ...
- [Tableau] Tableau for BI
主要链接 Tableau AWS 上的 Tableau Server Tableau on AWS Quick Starts Tableau教程[本篇来源] Tableau Desktop for U ...
- 自定义Shell分隔符
在shell中使用for循环语句时,参数列表有时候需要将空格纳入参数当中,这时就不好使用空格作为分隔符.如下例中,我实际想要输出的是a1.a2.b1.b2以及hello world,但却输出了如下内容 ...
- 【翻译】Flink Table Api & SQL —Streaming 概念 ——动态表
本文翻译自官网:Flink Table Api & SQL 动态表 https://ci.apache.org/projects/flink/flink-docs-release-1.9/de ...
- [LeetCode] 245. Shortest Word Distance III 最短单词距离 III
This is a follow up of Shortest Word Distance. The only difference is now word1 could be the same as ...