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 ...
随机推荐
- go -- go 程序 启动docker容器
package main import ( "io" "log" "os" "time" "github.co ...
- kubectl -n ingress-nginx exec nginx-ingress-controller-78bd49949c-t22bl -- cat /etc/nginx/nginx.conf
kubectl -n ingress-nginx exec nginx-ingress-controller-78bd49949c-t22bl -- cat /etc/nginx/nginx.conf
- Vintage、滚动率、迁移率的应用
python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...
- 深入理解vue中的slot与slot-scope
from:https://segmentfault.com/a/1190000012996217?utm_source=tag-newest 写在前面 vue中关于插槽的文档说明很短,语言又写的很凝练 ...
- Cucumber介绍
Cucumber是一个提供能让我们都理解的普通语言,通过普通语言来描述的测试用例,并支持行为驱动开发的测试工具.Cucumber支持大多数变成语言,如Ruby.Java和Python等. 官方地址:h ...
- docker安装并运行elasticsearch
拉取镜像: [mall@VM_0_7_centos ~]$ [sudo] password for mall: : Pulling from library/elasticsearch 256b176 ...
- Jenkins配置发送邮件步骤
Jenkins配置邮件步骤,以下我是以腾讯企业邮箱账号作为演示 1.配置Jenkins系统管理员邮件地址: 下拉找到以下位置 2.配置邮件通知 继续下拉,找到邮件配置.输入SMTp服务器以及邮箱后缀, ...
- Centos7.3使用脚本自动静默安装oracle11.2.0.4数据库
一直想着写一个脚本实现自动化安装oracle数据库.以下内容实验过几次了,可能还存在些小问题,如果在跑以下脚本中遇到问题,自己仔细排查即可 挣扎了好久,总算还是没实现,目前只能通过依次执行多个脚本来安 ...
- ddl语法
创建表: create table 表名 ( 字段1 varchar2(32) not null primary key, 字段2 date not null ) tablespace 表空间名 事务 ...
- 多生产者多消费者(第二种方式2.1)基于BlockingQueue
public class Producer implements Runnable { //静态变量只初始化一次 private static AtomicInteger count = new At ...