CSS3学习-实现正方体旋转

CSS3学习-实现正方体无规则旋转

简介

1.用CSS构造正方体

什么是正方体?这应该,没人不知道,它的结构分解如下
架构
所以很明确,我们需要用到6个div来构造,外加一个外型,共七个,1为正面
先简单定义

		<div class="cube">
			<div>1</div>
			<div>2</div>
			<div>3</div>
			<div>4</div>
			<div>5</div>
			<div>6</div>
		</div>

这里使用less预处理来编程css
首先,对每个面进行分析,确定每个面的基点,以及旋转方向和位置,下图黑处为基点
旋转
以此来设置各个初始值

//每两个数值为一个面的基点坐标
@norigin:0,0,100%,50%,0,0,0,50%,50%,0,50%,100%;
//每三个数值为一个面的旋转角度,对应X,Y,Z
@nrotate:0,0,0,0,90deg,0,0,0,0,0,-90deg,0,90deg,0,0,-90deg,0,0;

之后为了设置以id为cube的div为中心,来进行位移

//每三个数值为一个面的位移距离,对应X,Y,Z
@ntranslate:0,0,-150px,0,0,-150px,0,0,150px,0,0,-150px,0,0,-150px,0,0,-150px;

设置基础属性,css代码为

.cube div:nth-child(1),
.cube div:nth-child(2),
.cube div:nth-child(3),
.cube div:nth-child(4),
.cube div:nth-child(5),
.cube div:nth-child(6),
.recen {
	position: absolute;
	font-size: 45px;
	line-height: 300px;
	text-align: center;
	width: 300px;
	height: 300px
}

.cube div:nth-child(1) {
	background: rgba(255, 0, 0, .5);
	transform-origin: 0 0;
	transform: translate3d(0, 0, -150px) rotateX(0) rotateY(0) rotateZ(0);
	z-index: 6
}

.cube div:nth-child(2) {
	background: rgba(0, 255, 0, .5);
	transform-origin: 100% 50%;
	transform: translate3d(0, 0, -150px) rotateX(0) rotateY(90deg) rotateZ(0);
	z-index: 5
}

.cube div:nth-child(3) {
	background: rgba(0, 0, 255, .5);
	transform-origin: 0 0;
	transform: translate3d(0, 0, 150px) rotateX(0) rotateY(0) rotateZ(0);
	z-index: 4
}

.cube div:nth-child(4) {
	background: rgba(253, 153, 235, .5);
	transform-origin: 0 50%;
	transform: translate3d(0, 0, -150px) rotateX(0) rotateY(-90deg) rotateZ(0);
	z-index: 3
}

.cube div:nth-child(5) {
	background: rgba(255, 141, 0, .5);
	transform-origin: 50% 0;
	transform: translate3d(0, 0, -150px) rotateX(90deg) rotateY(0) rotateZ(0);
	z-index: 2
}

.cube div:nth-child(6) {
	background: rgba(255, 224, 0, .5);
	transform-origin: 50% 100%;
	transform: translate3d(0, 0, -150px) rotateX(-90deg) rotateY(0) rotateZ(0);
	z-index: 1
}

接着为了能够更直白的看到立体效果,来旋转cube中心点,对他设置css如下

.cube {
	display: flex;
	justify-content: center;
	align-items: center
	position: absolute;
	width: 50px;
	height: 50px;
	border: 1px solid;
	perspective: 300;
	top: 35%;
	left: 15%;
	transform-style: preserve-3d;
	transform-origin: 50% 50% 50%;
	transform: rotateX(30deg) rotateY(30deg) rotateZ(0) translate3d(0, 0, 0)
}

之后就能看到初步效果图
正方体

2.设置旋转

然后呢就开始让他旋转起来,利用animation,来设置旋转,部分代码如下,最后去除了颜色效果

@keyframes roll{
    0%{
        transform: rotateX(30deg) rotateY(10deg) rotateZ(0deg);
        }
    15%{
        transform: rotateX(30deg) rotateY(-30deg) rotateZ(0deg);
        }
    30%{
        transform: rotateX(30deg) rotateY(90deg) rotateZ(10deg);
        }
    45%{
        transform: rotateX(30deg) rotateY(180deg) rotateZ(10deg);
        }
    60%{
        transform: rotateX(30deg) rotateY(270deg) rotateZ(15deg);
        }
    75%{
        transform: rotateX(-90deg) rotateY(10deg) rotateZ(15deg);
        }
    90%{
        transform: rotateX(90deg) rotateY(10deg) rotateZ(0deg);
        }
    100%{
        transform: rotateX(0deg) rotateY(5deg) rotateZ(0deg);
        }
}

效果如图:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值