1. 程式人生 > >css3 3D旋轉特效

css3 3D旋轉特效

最近自己的網站正在製作,由於是個人網站,所以我傲嬌的拋棄了IE,痛快的用起了css3和html5的諸多特效,然而問題亦隨之而來。這篇文章的主要講解在使用css3的3D旋轉的時候遇到的文章,錯誤之處,還望各位看官老爺評論中指出。

3D旋轉,難點在與其處在一個三維的空間中,我們需要發揮一下空間想象力在頭腦中構建它的結構,同時,它的座標系是隨著所做的3D變化而改變的,所以在進行變換的過程中,不同變換動作的順序亦是至關重要。

網頁中常見的3D旋轉特效有兩種:繞Y軸旋轉和繞X軸旋轉。

繞Y軸旋轉180度:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>繞Y軸旋轉</title>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			#box{
				margin: 50px auto;
			}
			#box,.container,.front,.back{
				width: 200px;
				height: 200px;	
			}
			.container{
				position: relative;
				transform-style: preserve-3d;
				transition: all 1s linear;
			}
			.container:hover{
				transform: rotateY(180deg);
			}
			.front,.back{
				position: absolute;
				top: 0;
				left: 0;
				backface-visibility: hidden;
				color: #fff;
				font-size: 40px;
				text-align: center;
				line-height: 200px;
			}
			.front{
				background: red;
			}
			.back{
				background: green;
				transform: rotateY(180deg);
			}
			
			
		</style>
	</head>
	<body>
		<div id="box">
			<div class="container">
				<div class="front">front</div>
				<div class="back">back</div>
			</div>
		</div>
	</body>
</html>

程式碼沒有註釋,因為都是一些屬性,不懂的屬性可以直接百度,這裡主要講解其核心思想。

繞Y軸旋轉,就是將正面的轉到後面,而後面的顯示在正面。如果直接旋轉,不設定背面的元素的話,那麼旋轉180度後你所看到的就像一張畫貼在玻璃上,你從背面看而已。這種比較簡單,但是在網頁中並不常用,最多的還是上面程式碼中所寫的這種效果。

1、我們要有兩個面。設定backface-visibility為hidden,隱藏兩個面的背面,將需要顯示在背面的那個面back繞Y軸旋轉180度。

2、將兩個面裝在一個盒子a裡面並且設定盒子transform-style: preserve-3d,我們要操作的是這個盒子。

3、給盒子a設定滑鼠移入旋轉180度,完成! 

繞X軸旋轉和繞Y軸旋轉的本質是相同的,所以繞X軸旋轉直接講解旋轉90度,這個原理也可以反過來套用在Y軸的旋轉上。

相比來說,旋轉90度要做的處理多了幾步。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>繞X軸旋轉</title>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			#box{
				margin: 50px auto;
				border: 1px solid blue;
			}
			#box,.container,.front,.back{
				width: 200px;
				height: 200px;	
			}
			.container{
				position: relative;
				transform-style: preserve-3d;
				transition: all 1s linear;
			}
			.container:hover{
				transform: rotateX(90.1deg);
			}
			.front,.back{
				position: absolute;
				top: 0;
				left: 0;
				backface-visibility: hidden;
				color: #fff;
				font-size: 40px;
				text-align: center;
				line-height: 200px;
			}
			.front{
				transform: translateZ(100px);
				background: red;
			}
			.back{
				background: green;
				transform: rotateX(-90deg) translateZ(100px);
			}
			
			
		</style>
	</head>
	<body>
		<div id="box">
			<div class="container">
				<div class="front"></div>
				<div class="back"></div>
			</div>
		</div>
	</body>
</html>

看程式碼不難發現,其實旋轉多少度的本質都是一樣的,但是旋轉90度相對來說在開始旋轉的處理要進行在Y軸方向的移動。因為如果不進行Y軸方向的移動,旋轉90度後兩個面成T字形,而我們需要他們成L字形

同時,再次強調,某個面旋轉的同時它的座標系也會發生變化,所以一定要注意動作的先後順序。這個可以自己畫一個三維座標系來幫助理解。

最後一點,在進行大盒子的旋轉時,大家可能會看到我的程式碼中:

.container:hover{
				transform: rotateX(90.1deg);
			}

寫90deg在firefox是正常的,但是在chrome中你的滑鼠放在盒子上會出現閃動的情況,但是你寫大於90就可以解決,具體原因暫時不詳。

在測試的過程中我使用了最新的chrome瀏覽器,所以省略了其中的相容性語句,在實際的使用過程中,一定要加上相容性語句。

相關推薦

css3 3D旋轉特效

最近自己的網站正在製作,由於是個人網站,所以我傲嬌的拋棄了IE,痛快的用起了css3和html5的諸多特效,然而問題亦隨之而來。這篇文章的主要講解在使用css3的3D旋轉的時候遇到的文章,錯誤之處,還望各位看官老爺評論中指出。 3D旋轉,難點在與其處在一個三維的空間中,我們

CSS3 3D旋轉立方

一、3D中的透視        1、透視是我們觀察事物的方式        在美術學中,有一種畫法叫做透視畫法,他讓我們對所觀察的物體從二維拓展到三維,也就是說,平面的物體變成了立體,佔據了獨自的空間。請看下圖:        2、從二維到三維

HTML5、CSS3實現旋轉特效

利用CSS3的transiton屬性,進行控制元件的旋轉,並通過設定旋轉時間,實現特效。 效果連線:http://runjs.cn/detail/vkmy8obr 例項程式碼:直接複製進html執行即

基於css33D立方體旋轉特效 (先translate與先rotate的不同)

3D變換基於幾個比較重要的屬性,perspective,translateZ,preserve-3d; 格式: 舞臺(perspective) 容器(3D, preserve-3d) 內容 3D實現立方體盒子: transform的4

使用純CSS3實現一個3D旋轉的書本

tom data -m 過去 截取 ood post clas kit 有一些前沿的電商站點已經開始使用3D模型來展示商品並支持在線定制,而當中圖書的展示是最為簡單的一種,無需復雜的建模過程,使用圖片和CSS3的一些變換就可

jquery環形3D立體旋轉特效

  jquery環形3D立體旋轉特效 作者/程式碼整理:站長素材  (轉載請附加本文地址,帶有“懶人原生”字樣的謝絕轉載)釋出日期:2013-07-20   立體效果比較強的 j

實現CSS3 3D圍繞旋轉

本案例主要使用了CSS3中的變換transform和動畫animation屬性,實現了跑馬燈效果,詳細的解釋在程式碼中的註釋中。 <!DOCTYPE html> <html> <head> <meta charset="UTF

低調奢華 CSS3 transform-style 3D旋轉

10 <!DOCTYPE html> 11 <html> 12 <head> 13 <title>transform-style實現Div的3D旋轉-柯樂義</title> 14 <style> 15 *{font-size

css3 js實現3D旋轉效果

用css3和js實現3D旋轉的效果,主要使用到css3 transform中的一些屬性:perspective,rotate,translate。 下面主要介紹一些transform中的屬性的效果和作

CSS3實現3D旋轉選單導航

一、效果圖 二、程式碼 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>製作3D旋轉導航<

CSS3中的3D旋轉 rotate、3D位移 translate

這裡只考慮 chrome 的相容。 3DrotateDemo.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <t

HTML5 CSS3 專題 :誘人的例項 3D旋轉木馬效果相簿

首先說明一下創意的出處:http://www.zhangxinxu.com/study/201209/pictures-3d-slide-view.html(張鑫旭的部落格 ),對前臺感興趣的可以沒事去看看他的部落格,很給力~這篇部落格的目的是因為上篇HTML5 CSS3專題

html5 canvas文字標籤雲3D旋轉動畫特效

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> &

CSS3進階】酷炫的3D旋轉透視

之前學習 react+webpack ,偶然路過 webpack 官網 ,看到頂部的 LOGO ,就很感興趣。 最近覺得自己 CSS3 過於薄弱,想著深入學習一番,遂以這個 LOGO 為切入口,好好研究學習了一下相關的 CSS3 屬性。webpack 的 LOGO 動畫效果乍看不是很難,深入瞭解之後,覺得內

css3實現的發光屏幕旋轉特效

*{ margin: 0; padding: 0; } *, *:before, *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }http://www.kmnk03

CSS3(3D骰子)

html utf-8 pos rspec oct sla tle tran -- <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <t

手把手教你玩轉 CSS3 3D 技術(轉載)

是不是 col 默認 占滿 概念 ebe 說明 adb relative css3的3d起步 要玩轉css3的3d,就必須了解幾個詞匯,便是透視(perspective)、旋轉(rotate)和移動(translate)。透視即是以現實的視角來看屏幕上的2D事物,從而展現3

CSS3 3D環境實現立體 魔方效果代碼

3d 魔方 css 環境實現 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>魔方</title>

CSS3:3D環繞實現

-a 都在 音樂 keyframes 圖片路徑 art png posit borde CSS3:3D環繞實現篇 廢話不多說,直接給大家看效果:[不僅有背景,還有音樂] 大神請繞道:小白請繼續往下看: 是不是心動了呢,心動不如行動:代碼在手,天下我有,表白利器可不要錯過了