3D--魔方
css3簡單動畫實(shí)例,實(shí)現(xiàn)魔方的動畫
1、涉及的css屬性:
(1)父元素樣式中:
?????? transform-style: preserve-3d;/*規(guī)定子元素以3D顯示*/
?????? animation:mofang 10s linear infinite;/*定義的動畫名、動畫完成的總時間、曲線樣式、永久執(zhí)行(infinite)*/
?? (2)@keyframes 動畫名{}:定義動畫操作
??? 可以使用from{}和to{}定義
也可以使用百分比定義,0%{}50%{}100%{}
2、注意點(diǎn)
(1)X、Y、Z軸的方向確定:先想一個平面,即是X軸和Y軸,再想你的視線距離這個平面的距離指向,即Z軸(遠(yuǎn)小近大);可以伸出左手,大拇指是Y軸,食指是X軸,中指是Z軸(即中指是面向自己的)。
css3中的3D坐標(biāo)系:
(2)rotate(旋轉(zhuǎn))時,坐標(biāo)軸也會隨著旋轉(zhuǎn),要區(qū)分是先移動再旋轉(zhuǎn),還是先旋轉(zhuǎn)再移動,因?yàn)閮烧邎?zhí)行之后的結(jié)果顯示是不一樣的。
(3)transform多個屬性值,執(zhí)行順序,是按照從左向右執(zhí)行。
(4)在魔方中確定坐標(biāo)軸:可以想象將一個木板垂直插入一個魔方的正中間,魔方的六個面分別是這個木板通過旋轉(zhuǎn)、平移形成了不同的面。
3、實(shí)例
<style>
??????? ul{
??????????? list-style-type: none;
??????????? margin: 0;
??????????? padding: 0;
??????? }
??????? .box{
??????????? width:300px;
??????????? height:300px;
??????????? margin: 150px auto;
??????????? position: relative;
??????????? font-size: 50px;
??????????? /*所有元素保留3D轉(zhuǎn)換*/
??????????? transform-style: preserve-3d;
??????????? /*動畫效果*/
??????????? animation: mofang 10s linear infinite;
??????? }
??????? .box > div{
??????????? width:300px;
??????????? height:300px;
??????????? position: absolute;
??????? }
??????? li{
??????????? float: left;/*讓li浮動*/
??????????? width:90px;
??????????? height:90px;
??????????? margin: 5px;
??????????? line-height: 90px;
??????????? text-align: center;
??????????? border-radius: 20px;
??????? }
??????? /*每個div下的li背景*/
??????? .before li{
??????????? background-color:red;
??????? }
??????? .back li{
??????????? background-color: #ba9304;
??????? }
??????? .top li{
??????????? background-color: deeppink;
??????? }
??????? .bottom li{
??????????? background-color: blueviolet;
??????? }
??????? .left li{
??????????? background-color: greenyellow;
??????? }
??????? .right li{
??????????? background-color: blue;
??????? }
??????? /*轉(zhuǎn)換之后的效果,下面容易暈*/
??????? .before{
??????????? background-color: transparent;
??????????? transform: translateZ(150px);
??????? }
??????? .back{
??????????? background-color: transparent;
??????????? transform:translateZ(-150px) rotateY(180deg);
??????? }
??????? .top{
??????????? background-color: transparent;
??????????? transform:rotateX(90deg) translateZ(150px) rotateZ(180deg);
??????? }
??????? .bottom{
??????????? background-color: transparent;
??????????? transform:rotateX(-90deg) translateZ(150px);
??????? }
??????? .left{
??????????? background-color: transparent;
??????????? transform:rotateY(-90deg)? translateZ(150px);
??????? }
??????? .right{
??????????? background-color: transparent;
??????????? transform:rotateY(90deg) translateZ(150px);
??????? }
??????? @keyframes mofang {
??????????? from{
??????????????? transform:rotateY(0deg) rotateX(0deg);
??????????? }
??????????? to{
??????????????? transform:rotateY(135deg) rotateX(45deg);
??????????? }
??????? }
??? </style>
<div class="box">
??? <div class="before">
??????? <ul>
??????????? <li>1</li>
??????????? <li>2</li>
??????????? <li>3</li>
??????????? <li>4</li>
??????????? <li>5</li>
??????????? <li>6</li>
??????????? <li>7</li>
??????????? <li>8</li>
??????????? <li>9</li>
??????? </ul>
??? </div>
??? <div class="back">
??????? <ul>
??????????? <li>1</li>
??????????? <li>2</li>
??????????? <li>3</li>
??????????? <li>4</li>
??????????? <li>5</li>
??????????? <li>6</li>
??????????? <li>7</li>
??????????? <li>8</li>
??????????? <li>9</li>
??????? </ul>
??? </div>
??? <div class="top">
??????? <ul>
??????????? <li>1</li>
??????????? <li>2</li>
??????????? <li>3</li>
??????????? <li>4</li>
??????????? <li>5</li>
??????????? <li>6</li>
??????????? <li>7</li>
??????????? <li>8</li>
??????????? <li>9</li>
??????? </ul>
??? </div>
??? <div class="bottom">
??????? <ul>
??????????? <li>1</li>
??????????? <li>2</li>
??????????? <li>3</li>
??????????? <li>4</li>
??????????? <li>5</li>
??????????? <li>6</li>
??????????? <li>7</li>
??????????? <li>8</li>
??????????? <li>9</li>
??????? </ul>
??? </div>
??? <div class="left">
??????? <ul>
??????????? <li>1</li>
??????????? <li>2</li>
??????????? <li>3</li>
??????????? <li>4</li>
??????????? <li>5</li>
??????????? <li>6</li>
??????????? <li>7</li>
??????????? <li>8</li>
??????????? <li>9</li>
??????? </ul>
??? </div>
??? <div class="right">
??????? <ul>
??????????? <li>1</li>
??????????? <li>2</li>
??????????? <li>3</li>
??????????? <li>4</li>
??????????? <li>5</li>
??????????? <li>6</li>
??????????? <li>7</li>
??????????? <li>8</li>
??????????? <li>9</li>
??????? </ul>
??? </div>
</div>
注意:li要設(shè)置浮動顯示,不然不會在一個面。
僅是一個簡單實(shí)例,記錄總結(jié)一下。復(fù)雜的動畫自己再慢慢嘗試。
轉(zhuǎn)載于:https://www.cnblogs.com/lfjblog/p/9566325.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
- 上一篇: 数据库索引背后的数据结构
- 下一篇: 阿里云PyODPS 0.7.18发布,针