css3D動畫

前言css

本篇文章給你們帶來的內容是關於css實現3d動畫特效的代碼實例,有必定的參考價值,有須要的朋友能夠參考一下,但願對你有所幫助。html

屬性css3

perspective :透距離,單位像素(值越小,透視距離越近,效果越明顯):設置父元素上bash

perspective-origin: 設置透視點的位置動畫

transform-style :指定某元素的子元素是位於三維空間內,取值:flat | preserve-3dui

##1、寫一個簡單的立方體spa

1.一個長方體有6個面,咱們寫6個div,並用一個父元素包裹起來。3d

<div class="mofang">
	<div class="box mian1">1</div>
	<div class="box mian2">2</div>
	<div class="box mian3">3</div>
	<div class="box mian4">4</div>
	<div class="box mian5">5</div>
	<div class="box mian6">6</div>
</div>

複製代碼

2.給.mofang設置寬高,並給他設置視距和透視點位置,preserve-3d屬性保留子元素3d轉換code

.mofang{
	width: 100px;
	height: 100px;
	position: absolute;
	top: calc(50% - 50px);
	left: calc(50% - 50px);

	perspective: 3000px;
	perspective-origin:-100% -150%;
	transform-style: preserve-3d;
}

複製代碼

注:視距越小圖形越大,反之越小orm

3.子元素所有絕對定位

.box{
	width: 100px;
	height: 100px;
	text-align: center;
	line-height: 100px;
	font-size: 20px;
	font-weight: bold;
	border: 2px solid black;
	position: absolute;			
}

複製代碼

4.開始調整6個子元素的位置

.mian1{
 	background:  rgba(255, 255, 0, 0.3);
	transform:  translateY(50px) rotateX(90deg);
}

複製代碼

效果圖以下:

5.一個面寫好以後,將其他的面都調整好

/*後*/
.mian1{
	transform: translateZ(-50px);
}
/*上*/
.mian2{
	transform: translateY(-50px) rotateX(90deg);
}
/*左*/
.mian3{
	transform: translateX(-50px) rotateY(90deg);
}
/*前*/
.mian4{
	transform: translateZ(50px);
}
/*右*/
.mian5{
	transform: translateX(50px) rotateY(90deg);
}
/*下*/
.mian6{
	transform: translateY(50px) rotateX(90deg);
}

複製代碼

效果圖以下:

css3D動畫能夠實現不少效果

下面是我寫的一些3D動畫效果

demo01

魔方效果

html

<div class="wutai">
			
			<div class="mofang">
				
				<div class="box mian1">
					<div class="box1">1</div>
					<div class="box1">2</div>
					<div class="box1">3</div>
					<div class="box1">4</div>
					<div class="box1">5</div>
					<div class="box1">6</div>
					<div class="box1">7</div>
					<div class="box1">8</div>
					<div class="box1">9</div>
				</div>
				
				<div class="box mian2">
					<div class="box2">1</div>
					<div class="box2">2</div>
					<div class="box2">3</div>
					<div class="box2">4</div>
					<div class="box2">5</div>
					<div class="box2">6</div>
					<div class="box2">7</div>
					<div class="box2">8</div>
					<div class="box2">9</div>
				</div>
				
				<div class="box mian3">
					<div class="box3">1</div>
					<div class="box3">2</div>
					<div class="box3">3</div>
					<div class="box3">4</div>
					<div class="box3">5</div>
					<div class="box3">6</div>
					<div class="box3">7</div>
					<div class="box3">8</div>
					<div class="box3">9</div>
				</div>
				
				<div class="box mian4">
					<div class="box4">1</div>
					<div class="box4">2</div>
					<div class="box4">3</div>
					<div class="box4">4</div>
					<div class="box4">5</div>
					<div class="box4">6</div>
					<div class="box4">7</div>
					<div class="box4">8</div>
					<div class="box4">9</div>
				</div>
				
				<div class="box mian5">
					<div class="box5">1</div>
					<div class="box5">2</div>
					<div class="box5">3</div>
					<div class="box5">4</div>
					<div class="box5">5</div>
					<div class="box5">6</div>
					<div class="box5">7</div>
					<div class="box5">8</div>
					<div class="box5">9</div>
				</div>
				
				<div class="box mian6">
					<div class="box6">1</div>
					<div class="box6">2</div>
					<div class="box6">3</div>
					<div class="box6">4</div>
					<div class="box6">5</div>
					<div class="box6">6</div>
					<div class="box6">7</div>
					<div class="box6">8</div>
					<div class="box6">9</div>
				</div>
				
				
			</div>

複製代碼

css

<style type="text/css">
			html,body{
				width: 100%;
				height: 100%;
				margin: 0;
				padding: 0;
			}
			.wutai{
				width: 100%;
				height: 100%;
				border: 1px solid black;
				/* background: black; */
				margin: 0 auto;
			}
			.mofang{
				width: 100px;
				height: 100px;
				
				/* perspective: 2500px;
				perspective-origin:-500% -550%; */
				
				transform-style: preserve-3d;
				animation: texiao 10s linear infinite alternate;
			}
			
			.box{
				width: 90px;
				height: 90px;
				margin: 100px;
				text-align: center;
				line-height: 30px;
				display: grid;
				grid-template-columns: 30px 30px 30px;
				grid-template-rows:30px 30px 30px;
				
				position: absolute;
				
			}
			.box .box1{
				border: 1px solid white;
				background: #AACCEE;
			}
			.box .box2{
				border: 1px solid white;
				background: #FF9966;
			}
			.box .box3{
				border: 1px solid white;
				background: #00FFFF;
			}
			.box .box4{
				border: 1px solid white;
				background: #FF0000;
			}
			.box .box5{
				border: 1px solid white;
				background: #FFFF00;
			}
			.box .box6{
				border: 1px solid white;
				background: blueviolet;
			}
			
			/* 後*/
			.mian1{
				transform: translateZ(-45px);
			}
			/* 左*/
			.mian2{
				transform: translateX(-45px) rotateY(90deg);
			}
			/* 上*/
			.mian3{
				transform: translateY(-45px) rotateX(90deg);
			}
			/* 右*/
			.mian4{
				transform: translateX(45px) rotateY(90deg);
			}
			/* 下*/
			.mian5{
				transform: translateY(45px) rotateX(90deg);
			}
			/* 前*/
			.mian6{
				transform: translateZ(45px);
			}
			
			
			@keyframes texiao{
				0%{transform: translate(0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg);}
				50%{transform: translate(400px) rotateX(0deg) rotateY(360deg) rotateZ(90deg);}
				100%{transform: translate(0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg);}
			}
		</style>

複製代碼

demo02

多重立體圖

html

<div class="wutai">
			<div class="mofang">
				<div class="box mian1">1</div>
				<div class="box mian2">2</div>
				<div class="box mian3">3</div>
				<div class="box mian4">4</div>
				<div class="box mian5">5</div>
				<div class="box mian6">6</div>
				
				<div class="xiaomofang">
					<div class="box1 mian7">7</div>
					<div class="box1 mian8">8</div>
					<div class="box1 mian9">9</div>
					<div class="box1 mian10">10</div>
					<div class="box1 mian11">11</div>
					<div class="box1 mian12">12</div>
				</div>
			</div>
		</div>

複製代碼

css

<style type="text/css">
			.wutai{
				width: 700px;
				height: 500px;
				border: 1px solid black;
				background: black;
				margin: 0 auto;
				
				/*******/
				perspective: 3000px;
				perspective-origin:-100% -150%;
				/******/
			}
			.mofang{
				width: 100px;
				height: 100px;
				position: absolute;
				top: calc(50% - 50px);
				left: calc(50% - 50px);
				
				/******/
				perspective: 3000px;
				perspective-origin:-100% -150%;
				
				transition: all 500s linear;
				transform-style: preserve-3d;
				/******/
			}
			.box{
				width: 100px;
				height: 100px;
				text-align: center;
				line-height: 100px;
				/* color: white; */
				font-size: 20px;
				font-weight: bold;
				background: rgba(0,0,0,0.5);
				border: 2px solid black;
				position: absolute;
				
				/******/
				transition: all 10s linear;
				/******/
			}
			
		
			.mian1{
				transform: translateZ(-50px);
			}
			
			.mian2{
				transform: translateY(-50px) rotateX(90deg);
			}
		
			.mian3{
				transform: translateX(-50px) rotateY(90deg);
			}
		
			.mian4{
				transform: translateZ(50px);
			}
		
			.mian5{
				transform: translateX(50px) rotateY(90deg);
			}
		
			.mian6{
				transform: translateY(50px) rotateX(90deg);
			}
			
			.xiaomofang{
				width: 50px;
				height: 50px;
				position: absolute;
				top: calc(50% - 25px);
				left: calc(50% - 25px);
				
				perspective: 3000px;
				perspective-origin:-100% -150%;
				
				/******/
				transform-style: preserve-3d;
				transition: all 100s linear;
				/******/
			}
			
			.box1{
				width: 50px;
				height: 50px;
				text-align: center;
				line-height: 50px;
				font-size: 20px;
				font-weight: bold;
				background: rgba(255,255,255,0.2);
				border: 2px solid black;
				
				transform-style: preserve-3d;
				
				position: absolute;
			}
		
			.xiaomofang .mian7{
				transform: translateZ(-27px);
			}
			
			.xiaomofang .mian8{
				transform: translateY(-27px) rotateX(90deg);
			}
		
			.xiaomofang .mian9{
				transform: translateX(-27px) rotateY(90deg);
			}
			
			.xiaomofang .mian10{
				transform: translateZ(27px);
			}
			
			.xiaomofang .mian11{
				transform: translateY(27px) rotateX(90deg);
			}
			
			.xiaomofang .mian12{
				transform: translateX(27px) rotateY(90deg);
			}
			
			
			.mofang:hover .mian1{
				transform: translateZ(-170px);
				background: #00FFFF;
				opacity: 0.7;
				color: white;
			}
			.mofang:hover .mian2{
				transform: translateY(-170px) rotateX(90deg);
				background: #AACCEE;
				opacity: 0.7;
				color: white;
			}
			.mofang:hover .mian3{
				transform: translateX(-170px) rotateY(90deg);
				background: #DCDCDC;
				opacity: 0.7;
				color: white;
			}
			.mofang:hover .mian4{
				transform: translateZ(170px);
				background: #FF0000;
				opacity: 0.7;
				color: white;
			}
			.mofang:hover .mian5{
				transform: translateX(170px) rotateY(90deg);
				background: #FFD700;
				opacity: 0.7;
				color: white;
			}
			.mofang:hover .mian6{
				transform: translateY(170px) rotateX(90deg);
				background: #FF00FF;
				opacity: 0.7;
				color: white;
			}
			
			.mofang:hover{
				transform: rotateX(36000deg);
			}
			
			.mofang:hover .xiaomofang{
				transform: rotateX(9000deg) rotateY(18000deg) rotateZ(36000deg);
			}		
		</style>

複製代碼

demo03

圓柱效果

html

<div class="wutai">
		
			<div class="yuanzhu">
				<div class="box mian1">1</div>
				<div class="box mian2">2</div>
				<div class="box mian3">3</div>
				<div class="box mian4">4</div>
				<div class="box mian5">5</div>
				<div class="box mian6">6</div>
				<div class="box mian7">7</div>
				<div class="box mian8">8</div>
				<div class="box mian9">9</div>
				<div class="box mian10">10</div>
				<div class="box mian11">11</div>
				<div class="box mian12">12</div>
			</div>
		</div>

複製代碼

css

<style>
		    .wutai{
		        width: 900px;
		        height: 600px;
		        border: 1px solid;
		        margin: 0px auto;
		
		        perspective: 1000px;
		        perspective-origin: 50% 1%;
		    }
			
		    .wutai .yuanzhu{
		        width: 100px;
		        height: 300px;
		        margin: 0 auto;
		        position: relative;
		        top: 150px;
		        border: 0px solid red;
		
		        transform-style: preserve-3d;
		    }
		
		    .yuanzhu:hover{
		        transform: rotateY(36000000deg);
		        transition: all 1000000s linear;
			   
		    }
		
		    .wutai .yuanzhu .box{
		        width: 100px;
		        height:300px;
		        text-align: center;
		        line-height: 300px;
		        font-size: 40px;
		        color: white;
		        position: absolute;
		    }
		
		    .mian1{
		        background: red;
		        transform: rotateY(30deg) translateZ(200px) ;
		    }
		    .mian2{
		        background: orange;
		        transform: rotateY(60deg) translateZ(200px);
		    }
		    .mian3{
		        background: yellow;
		        transform: rotateY(90deg) translateZ(200px);
		    }
		    .mian4{
		        background: green;
		        transform: rotateY(120deg) translateZ(200px);
		    }
		    .mian5{
		        background: cyan;
		        transform: rotateY(150deg) translateZ(200px);
		    }
		    .mian6{
		        background: blue;
		        transform: rotateY(180deg) translateZ(200px);
		    }
		    .mian7{
		        background: purple;
		        transform: rotateY(210deg) translateZ(200px);
		    }
		    .mian8{
		        background: blue;
		        transform: rotateY(240deg) translateZ(200px);
		    }
		    .mian9{
		        background: cyan;
		        transform: rotateY(270deg) translateZ(200px);
		    }
		    .mian10{
		        background: green;
		        transform: rotateY(300deg) translateZ(200px);
		    }
		    .mian11{
		        background: yellow;
		        transform: rotateY(330deg) translateZ(200px);
		    }
		    .mian12{
		        background: orange;
		        transform: rotateY(360deg) translateZ(200px);
		    }
		
		</style>

複製代碼

demo04

齒輪效果

html

<div class="wutai">
			
			<div class="chilun one">
				<div class="box"></div>
				<div class="box"></div>
				<div class="box"></div>
			</div>
			
			<div class="chilun two">
				<div class="box"></div>
				<div class="box"></div>
				<div class="box"></div>
			</div>
			
			<div class="chilun3 three">
				<div class="box1"></div>
				<div class="box1"></div>
				<div class="box1"></div>
				<div class="box1"></div>
				<div class="box1"></div>
				<div class="box1"></div>
			</div>
			
		</div>

複製代碼

css

<style type="text/css">
			html,body,div{
				margin: 0;
				padding: 0;
			}
			.wutai{
				width: 700px;
				height: 500px;
				border: 1px solid black;
				margin: 0 auto;
				position: relative;
			}
			
			.chilun{
				width: 60px;
				height: 60px;
				background: black;
				border-radius: 50%;
				position: absolute;
			}
			
			.chilun3{
				width: 120px;
				height: 120px;
				background: black;
				border-radius: 50%;
				position: absolute;
			}
			
			.one{
				top: 47px;
				left: 53px;
				animation: xuanzhuan 1.5s linear infinite;
			}
			.two{
				top:97px;
				left: 104px;
				animation: xuanzhuan2 1.5s linear infinite;
			}
			.three{
				top: 102px;
				left: 173px;
				animation: xuanzhuan3 3s linear infinite;
			}
			@keyframes xuanzhuan{
				0%{transform: rotate(0deg);}
				100%{transform: rotateZ(360deg);}
			}
			@keyframes xuanzhuan2{
				0%{transform: rotate(0deg);}
				100%{transform: rotateZ(-360deg);}
			}
			@keyframes xuanzhuan3{
				0%{transform: rotate(0deg);}
				100%{transform: rotateZ(360deg);}
			}
			
			.box{
				width: 16px;
				height: 80px;
				background: black;
				position: absolute;
				left: calc(50% - 8px);
				top: calc(50% - 40px);
			}
			.box:nth-child(2){
				transform: rotateZ(60deg);
			}
			.box:nth-child(3){
				transform: rotateZ(120deg);
			}
			.box1{
				width: 16px;
				height: 140px;
				background: black;
				position: absolute;
				left: calc(50% - 8px);
				top: calc(50% - 70px);
			}
			.box1:nth-child(2){
				transform: rotateZ(30deg);
			}
			.box1:nth-child(3){
				transform: rotateZ(60deg);
			}
			.box1:nth-child(4){
				transform: rotateZ(90deg);
			}
			.box1:nth-child(5){
				transform: rotateZ(120deg);
			}
			.box1:nth-child(6){
				transform: rotateZ(150deg);
			}
		</style>

複製代碼

若是文中有不妥或者錯誤的地方還望高手的您指出,以避免誤人子弟。

若是您有更好的建議,不如留言一塊兒討論,共同進步! 再次感謝您耐心的讀完本篇文章。

vx:bsl521921

相關文章
相關標籤/搜索