2D 和 3D 中的 CSS 轉換 (Preliminary) CSS3中 translate3D详解

原文:http://msdn.microsoft.com/zh-tw/library/ie/jj665791.aspx

階層式樣式表 (CSS) 轉換可讓您在二維和立體空間中轉換元素。 您可以使用 CSS 轉換,變更元素在其父元素內的位置、操作元素的旋轉或縮放,以及套用扭曲。新增 perspective 屬性 (或 perspective 轉換函式) 可在轉換中加入立體感。

以下我們將介紹 CSS 轉換座標系統。接著,我們會示範 CSS 所公開的轉換功能,然後透過圖解 perspective 屬性的作用來總結。

CSS 轉換的座標系統

CSS 轉換是沿著形成座標系統的一組座標軸定義。2D 轉換是沿著兩個座標軸定義,如下所示。請注意,y 軸會向下延伸,而非向上延伸,因為系統會轉譯大部分的二維笛卡兒座標系統。

2D 座標系統的影像;x 軸向右延伸,而 y 軸向下延伸

座標系統的 x 軸會沿著所要轉換之元素父節點的水平維度延伸,y 軸則沿著垂直維度延伸。此座標系統的原點 (圖表中的 "(0,0)") 原本位於所要轉換之元素的中心 (除非透過 transform-origin 屬性變更,這將在稍後討論)。

3D 轉換是沿著三個座標軸定義,如下所示 (加入格線有助於視覺化 3D 影像)。

3D 座標系統的影像;額外的 z 軸同時與 x 軸和 y 軸平行

座標系統的 z 軸同時與 x 和 y 軸垂直。此座標系統的原點 (圖表中的 "(0,0,0)") 也位於所要轉換之元素的中心 (除非透過transform-origin 屬性變更)。

套用轉換

將轉換套用到元素相當簡單。首先,將 transform 屬性加入選取器,然後附加轉換函式的清單。例如,下列宣告會套用平移轉換:

CSS
transform: translateX(400px);

此轉換的結果是,原始元素向右「平移」(移動) 400 個像素。如果我們將此轉換套用到藍色方形的 div 元素,會得到以下結果。為了清楚解說,除了已轉換的元素之外,還會顯示套用轉換前所出現的元素,而且原始元素會變暗。

套用水平平移函式之前和之後的淺綠色方形的影像

您可以檢視此範例的即時版本。請注意,為獲得瀏覽器的最大相容性,您應該在要支援的每個瀏覽器的轉換屬性之前,加上適當的瀏覽器專屬字首。例如,下列宣告可確保 Windows Internet Explorer 9 ("-ms-")、Chrome 與 Safari ("-webkit-")、Firefox ("-moz-")、Opera ("-o-"),以及不需要字首之瀏覽器 (例如 Internet Explorer 10) 中的支援。

CSS
  -ms-transform: translateX(400px);
  -webkit-transform: translateX(400px);
  -moz-transform: translateX(400px);
  -o-transform: translateX(400px);
  transform: translateX(400px);

2D 轉換函式

系統支援這些轉換函式用於 2D 轉換,而且可以從 Internet Explorer 9 開始使用。

函式 說明

matrix(a, b, c, d, e, f)

以六個值的轉換矩陣形式指定 2D 轉換。

rotate(angle)

使用參數中指定的角度,沿著元素原點指定 2D 旋轉。

scale(sx,sy)

使用兩個參數描述的 [sx,sy] 縮放向量來指定 2D 縮放作業。

scaleX(sx)

使用 [sx,1] 縮放向量來指定縮放作業,其中 sx 是指定的參數。

scaleY(sy)

使用 [1,sy] 縮放向量來指定縮放作業,其中 sy 是指定的參數。

skew(angleX,angleY)

沿著 x 和 y 軸指定扭曲轉換。第一個角度參數會指定 x 軸上的扭曲。第二個角度參數會指定 y軸上的扭曲。

skewX(angle)

沿著 x 軸,使用指定的角度指定扭曲轉換。

skewY(angle)

沿著 y 軸,使用指定的角度指定扭曲轉換。

translate(tx,ty)

使用向量 [tx,ty] 指定 2D 平移,其中 tx 是第一個平移值參數,而 ty 是選用的第二個平移值參數。

translateX(tx)

使用 x 方向的指定數量來指定平移。

translateY(ty)

使用 y 方向的指定數量來指定平移。

 

若是平移函式,這些引數可以是支援的 CSS 長度類型或百分比。若是旋轉和扭曲函式,這些引數可以是支援的 CSS 角度類型或原始數字 (解譯為旋轉度數)。最後,縮放函式接受代表縮放係數的數字引數。

2D 轉換範例

現在讓我們看一下數個 2D CSS 轉換的應用。

我們將從沿著 y 軸平移開始。請記住,系統會將平移值解譯為從版面配置中的元素原始位置的偏移。

在套用垂直平移函式之前和之後的藍色方形的影像

檢視此範例的即時示範。

現在讓我們嘗試一些旋轉、扭曲以及縮放。此螢幕擷取畫面顯示一個方形且重複的 div,其中每次重複都會套用一個轉換。

顯示如何透過不同的轉換函式旋轉、扭曲以及縮放黃色方形的螢幕擷取畫面

檢視此範例的即時示範。

此處未顯示 matrix 轉換函式。它可讓您手動指定自訂的 2D 轉換。嘗試手動指定轉換之前,請先熟悉轉換座標系統與轉譯。

套用多個轉換

您可以透過「鏈結」轉換—將多個轉換函式依您希望的套用順序新增到單一轉換屬性,以套用多個轉換。請注意,附加轉換的順序會影響最終的結果。讓我們看一下範例。

下列宣告可能看起來很類似,但它們會產生不同的結果。

transform: rotate(45deg) translateX(200px);
transform: translateX(200px) rotate(45deg);

您可以在此檢視套用到不同 div 元素的這些宣告。以下是這個範例的螢幕擷取畫面。原始元素的位置以灰色方塊表示。紫色 (上方) 方塊已經套用 translateX 函式,然後再套用 rotate 函式。粉紅色 (下方) 方塊會先旋轉,然後再進行平移。

示範套用到 div 的兩個轉換的影像

變更轉換原點

請考慮以下轉換:

transform: rotate(45deg);

已套用兩個轉換的紅色方形 div 的影像

使用您的瀏覽器檢視這個範例。

已轉換的元素會圍繞中心旋轉。但是如果我們希望元素改為以其中一個角為中心旋轉,或者圍繞著隨意點旋轉,該怎麼辦?這時就需要使用 transform-origin 屬性。

transform-origin 屬性可讓您指定元素轉換的原點。若是旋轉,變更轉換原點的值將會移動旋轉的中心。transform-origin 屬性的初始值為 "50% 50%",表示原點置於元素的中心。如果未指定 transform-origin 屬性,這是隱含的值。

讓我們看一下當 transform-origin 屬性設為不同值時,將這個相同的 rotate 宣告套用到元素的一些範例。此範例頁面包含相同的元素,並重複套用相同的轉換,但不同的轉換原點。 這個範例頁面很類似,但套用扭曲轉換。

接著,我們將使用 CSS 3D 轉換,開始將深度加入我們的網頁中。

3D 轉換函式

設計人員可以透過 Internet Explorer 10,使用 CSS 3D 轉換,分割成第三個維度。系統支援此處所列的轉換函式用於 3D 轉換,而且可以從 Internet Explorer 10 開始使用。

系統會使用與 2D 轉換相同的方式套用 3D 轉換 (將 transform 屬性新增到元素的樣式中)。若要使用第三個維度,則會擴充可用轉換函式的清單以包含:

函式 說明

rotate3d(x, y, z, angle)

指定順時針的 3D 旋轉。

rotateX(angle)

指定沿著 x 軸根據指定角度的順時針方向旋轉。

rotateY(angle)

指定沿著 y 軸根據指定角度的順時針方向旋轉。

rotateZ(angle)

指定沿著 z 軸根據指定角度的順時針方向旋轉。

scale3d(sx,sy,sz)

使用三個參數描述的 [sx,sy,sz] 縮放向量來指定 3D 縮放作業。

scaleZ(sz)

使用 [1,1,sz] 縮放向量來指定縮放作業,其中 sz 是指定的參數。

translate3d(txtytz)

使用向量 [tx,ty,tz] 指定 3D 平移,其中 txty 與 tz 分別是第一個、第二個及第三個平移值參數。

translateZ(tz)

使用 z 方向的指定數量來指定平移。

matrix3d(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)

使用 16 個值 (以欄為主的順序) 的 4×4 同質矩陣指定 3D 轉換。

 

讓我們看一下 3D 轉換實際執行的一些範例。此範例頁面有一列方形,每個方形都套用一個轉換 (或多個轉換)。

您可能會注意到這些轉換似乎不是 3D。您可能會預期因為此種轉換會沿著 x 或 y 軸旋轉元素「到畫面中」,因此該元素應該看起來會越來越小。但是 translateZ(-50px) 函式一點也不會變更元素視覺上的外觀!發生這個狀況是因為系統預設會使用正視投影 (使用 2D 表示 3D 的一種方法) 來計算 CSS 轉換。2D 的世界地圖是您可能比較熟悉的正視投影範例。使用 CSS 轉換時,物件在從檢視器移開時不會變小。

幸好 CSS 轉換規格提供了一個屬性,可讓我們輕鬆地將透視加入您的轉換中。

將透視加入 3D 轉換

perspective 屬性可將「深度」效果加入 CSS 轉換。

函式 說明

perspective

指定一個長度值,這個值代表從這個透視長度檢視物件的所有子元素。

 

請看看下列圖表:

描述視覺元素外觀上透視效果的圖表。

請注意如何在父元素上「平面化」(或「投射」) 子元素。所產生的「投影」表面 (在圖表上以橘色顯示) 是父元素從影像平面定義的元素距離係數 (根據所設定之 3D 轉換的組合)。此外,父元素本身與「檢視器」的距離 (在上圖中註解為「透視深度」) 也會納入考慮。perspective CSS 屬性可讓我們指定該距離。

例如,讓我們來看看上一個範例中所使用的相同轉換,但這次套用透視投影。

在此範例中,我們將設為 200px 的 perspective 屬性套用到範例 div 元素的父元素中。請注意,當您將滑鼠暫留在元素上 (或點選元素) 時,轉換的視覺結果的確是 3D。translateZ 轉換會如預期般運作 (也就是,該元素會從檢視器推「遠」,而變得更小)。同時請注意,我們可以使用與 2D 轉換類似的方式,結合 3D 轉換。

微調 3D 轉換的另一種方式是使用 perspective-origin 屬性。perspective-origin 屬性會設定相對於套用透視轉換之元素的檢視器位置。換句話說,該屬性可讓我們建立離軸投影。

此範例頁面與上一個範例頁面相同,但 perspective-origin 屬性設為 "30% 50%"。

perspective-origin 的預設值為 "50% 50%",表示檢視位置與元素中間平行。在上一個範例中,我們已經將檢視位置向左位移 ("30% 50%")。在下一個範例中,當我們透過將 perspective-origin 屬性設為 "80% 50%",以便改為位移到右側時,您就可以看到差異。

總結

到目前為止,我們已經使用 2D 和 3D 以及部分伴隨的屬性 (transform-originperspective 與 perspective-origin) 示範 CSS 轉換。


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 初步的传感器是指最初的传感器,用于感知和测量环境的物理量、化学量或生物量。这些传感器通常用于收集数据,以便进行进一步的分析和处理。 初步的传感器可以用于各种不同的应用领域,如环境监测、工业自动化、医疗诊断等。它们可以测量温度、湿度、压力、光照、声音等物理量,也可以测量气体浓度、水质、土壤成分等化学量,甚至可以测量心率、血压等生物量。 初步的传感器通常具有小巧、便携和低功耗的特点,以便于安装和使用。它们可以通过有线或无线的方式将收集到的数据传输给数据处理单元,然后进一步进行分析和应用。 初步的传感器的性能和精度通常较低,但在一些应用场景足够使用。在进行精确测量或要求高度一致性的场景,可能需要更复杂、更高精度的传感器来满足要求。 总之,初步的传感器是最早的传感器,用于感知和测量环境各种物理、化学或生物的量。它们可以广泛用于各个领域,为数据采集和分析提供基础。随着科技的发展和需求的增加,传感器技术也越来越精细和复杂。 ### 回答2: Preliminary 传感器是一种用于收集初步信息或进行初步测量的传感器。它主要用于确认和验证数据,并为后续的研究和分析提供依据。 Preliminary 传感器可以通过使用多种技术来获取数据,包括光学、声波、电磁和加速度等。它可以测量环境的不同参数,如温度、湿度、压力、光照和运动等。 与其他高精度传感器相比,preliminary 传感器通常具有较低的测量精确度和准确性。尽管如此,它们仍然可以提供足够的信息来评估某个环境或系统的基本特性。 preliminary 传感器通常应用于许多领域。在环境监测方面,它可以用于检测空气质量、水质、土壤含水量等,以便评估环境的健康状况。在工业应用,preliminary 传感器可以帮助监测和控制生产过程的温度、压力和湿度等参数,以确保产品质量和工艺稳定性。 此外,preliminary 传感器还可以用于智能家居系统,例如自动灯光控制和温度调节。它们可以通过监测周围环境的状态并与设定的条件进行比较,实现自动化控制和能源节约。 总而言之,preliminary 传感器提供了初步收集数据和测量环境参数的功能。尽管其测量精度较低,但它们可以在各种领域发挥重要作用,为后续的研究和分析提供重要的参考依据。 ### 回答3: 初步传感器是指在某个领域或某项工作,在进行深入研究或正式操作之前使用的传感器。这种传感器可以帮助人们对待测对象进行初步的观察、测量或监测。 初步传感器通常具有以下特点: 1. 快捷简易:初步传感器操作方便、使用简单。其设计和功能主要针对对待测对象的初步了解和探索,不需要过多的专业知识或复杂的操作步骤。 2. 低成本:初步传感器通常相对便宜,成本低廉。这样可以降低对待测对象的测试成本,以及在初步阶段对传感器的投入。 3. 多功能:初步传感器一般具备多种功能,可以根据不同需求进行测量、观测和监测。可以针对特定目标进行调整和适应,提供初步的数据和信息。 4. 基础应用:初步传感器广泛应用于科学研究、实验室试验、工程项目等领域。在进行具体实验或操作之前,可以通过初步传感器获得一些对象的基本特征或性质。这对进一步的研究和操作具有重要意义。 总之,初步传感器是一种方便、简单、低成本且多功能的传感器,可以在不破坏或影响待测对象的前提下,提供初步的观测、测量或监测数据。通过初步传感器的使用,人们可以更好地了解被测对象的性质和特征,为随后的研究或操作提供基础信息和决策依据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值