热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CSS3实现3D方块旋转

本文是在学习一篇博文后进行总结和一定的修改的,原博文链接这里写链接内容先贴代码HTML<!DOCTYPEhtml><html><

本文是在学习一篇博文后进行总结和一定的修改的,原博文链接这里写链接内容

先贴代码
HTML


<html lang="en">
<head>
<meta charset="UTF-8">
<title>animationtitle>
<link rel="stylesheet" type="text/css" href="css/move.css">
head>
<body>
<div class="wrapper w2">
<div class="cube">
<div class="side front">1div>
<div class="side back">6div>
<div class="side right">4div>
<div class="side left">3div>
<div class="side top">5div>
<div class="side bottom">2div>
div>
div>
body>
html>

CSS

.wrapper {
width: 50%;
float: left;
}

@keyframes rotateHAHA{
0%{
transform: rotateX(0deg) rotateY(0deg);
}

100%{
transform: rotateX(360deg) rotateY(360deg);
}

}
.cube {
font-size: 4em;
width: 2em;
height: 2em;
margin: 1.5em auto;
transform-origin: 1em 1em;
transform-style: preserve-3d;
transform: rotateX(0deg) rotateY(0deg);
}

.cube:hover{
animation: rotateHAHA 4s linear infinite;
}

.side {
position: absolute;
width: 2em;
height: 2em;
background: rgba(255, 99, 71, 0.6);
border: 1px solid rgba(0, 0, 0, 0.5);
color: white;
text-align: center;
line-height: 2em;
}

.front {
transform: translateZ(1em);//为什么要translateZ(1em)。1em代表了什么?
}
.top {
transform
: rotateX(90deg) translateZ(1em)
;//注意rotate和translateZ的顺序。之后会提到。
}
.right {
transform
: rotateY(90deg) translateZ(1em)
;
}

.left {
transform: rotateY(-90deg) translateZ(1em);
}

.bottom {
transform: rotateX(-90deg) translateZ(1em);
}


.back {
transform: rotateY(-180deg) translateZ(1em);
}

.w2{
perspective-origin: 20% 20%;
perspective: 1000px;
}

几点学习心得记录如下:

初始工作

想要实现3D效果,首先需要设定transform-style: preserve-3d;。这个属性只对本元素以及子元素起作用,不对孙子元素起作用。

perspective设置

perspective属性的含义:可以理解为在人眼面前有一个展示板,而这个属性的大小就是这个展示板距离人眼的距离。如果距离越近,自然透视程度就越强,距离越远,透视程度就越弱。
有两种方式设置perspective:

perspective: 600px;

或者

transform:perspective(600px);

这两种设置的区别先看例图:(转自这里写链接内容)
这里写图片描述
可以看出,第一种设置方式是把整个页面当成一个舞台,各个物体虽然属性相同,但是互相之间是有透视关系的。
而第二种设置方式是每一个物体独立开来,这样互不影响。

translateZ的设置

transform:translateZ(length)的作用是将展示的物体脱离展示板的距离。也就是说,如果参数越大,脱离展示板越远,离人眼就越近。可以想象,如果这个length的值大于perspective的值,那么物体位于人眼后面,此时这个物体将看不到。

视点位置设置

perspective-origin属性:默认的值是50% 50%也就是说位于物体中央。我们可以修改这个参数,使得我们的视角可以位于高一点或者第一点的位置。具体可以看这张w3c的图这里写图片描述

父元素与子元素的旋转关系

可以看到cube是六个面的容器。因此这六个面的旋转都是相对于cube父容器的,如果父容器旋转,六个面也跟着旋转,就形成了我们看到的动画效果。

rotate()理解

关于rotateX()、rotateY()、rotateZ():我们知道,屏幕上,右是x轴正方形,上是y轴正方向,垂直平面是Z方向。因此rotateX的具体含义是绕着X轴旋转,其他类似。

translateZ的参数解释

关于translateZ()的参数为什么填的是1em。因为旋转默认是在展示板上的物体中心点。而cube的长宽都是2em。故在Z轴上升高1em然后旋转就可以形成正方体。

transform具有多个值时执行顺序

transform具有多个属性的时候,执行顺序是从后到前。比如这个例子中就是先translateZ,再rotate。故写多个属性的时候,应该将最先执行的代码写在最后面


推荐阅读
  • css自适应字体样式?如果是一排文字,一个background‘red’;就搞定了。是多行的话,只有根据文字行高,用一张背景图横向重复。css样式自适应分辨率高度和宽度尽量使用百分 ... [详细]
  • CSS3中如何使用background-size定义背景图片大小
    CSS3中如何使用background-size定义背景图片大小?针对这个问题,今天小编总结这篇有关background-size属性的文章,可供感兴趣的小伙伴们参考借鉴 ... [详细]
  • 使用HTML创建弹出框以便用户输入信息
    在做项目的过程中,我们时常需要进行一些弹框操作,比如在后台管理时需要进行的一些增删改操作,这个时候我们需要使用到弹框,或者在 ... [详细]
  • HTML制作简单首页导航
    h1大标题:李广程的作业列表查看演示地址一:http:js.lgcweb.cn查看演示备用地址:http:39.105.0.128Ja ... [详细]
  • 学习过程-京东注册的静态界面
    HTML源代码:<!DOCTYPEhtml><html><head><title>京东注册<title><me ... [详细]
  • CSS超链接和导航
    在CSS中设置超链接样式之前我们在HTML中用标签来表示超链接通过点击跳转到另一个页面在CSS中可以通过伪类选择对超链接访问时不同状态进行设定:a:link:未被访问过的超链接样式 ... [详细]
  • jQuery滑动星星评分效果
    每日分享效果,今天分享一个jQuery滑动星星评分效果。jQuery星星评分制作5颗星星鼠标滑过评分打分效果,可取消评分结果,重新打分。 ... [详细]
  • 前端HTML transform2D变换
    *{margin: ... [详细]
  • 一篇文章搞定css3 3d效果
    css33d学习心得卡片反转魔方banner图首先我们要学习好css33d一定要有一定的立体感通过这个图片应该清楚的了解到了x轴y轴z轴是什么概念了。首先先给大家看一个小 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 前端不规则图像点击_如何在前端开发的潮流中快速学习学好学以致用?
    大家好,我是致力于前端开发,前端设计,前端入门的前端小姐姐,今天为大家带来的前端新知识是【雪碧图和滑动门】,不 ... [详细]
  • Tooltips效果,鼠标经过显示提示 ... [详细]
  • Isthereanywaytostylethislistusingpurecsssoallelementsabovemycursorwillbehighlight ... [详细]
  • 这篇文章将为大家详细讲解有关如何使用JavaScript动态设置CSS3属性值,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读 ... [详细]
author-avatar
问道摩托
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有