搜尋

首頁  >  問答  >  主體

如何在 CSS 中應用多重變換?

<p>使用CSS,如何應用多個<code>transform</code>? </p> <p>範例:以下僅套用平移,不套用旋轉。 </p> <pre class="brush:php;toolbar:false;">li:nth-child(2) { transform: rotate(15deg); transform: translate(-20px,0px); }</pre> <p><br /></p>
P粉066224086P粉066224086491 天前678

全部回覆(3)我來回復

  • P粉081360775

    P粉0813607752023-09-01 12:18:08

    我添加這個答案不是因為它可能有幫助,而是因為它是真實的。

    除了使用現有答案解釋如何透過連結進行多個翻譯之外,您還可以 自己建立 4x4 矩陣

    我從我在谷歌搜尋時發現的一些隨機網站顯示了旋轉矩陣:

    繞 x 軸旋轉:
    繞 y 軸旋轉:
    繞 z 軸旋轉:

    我找不到很好的翻譯範例,所以假設我記得/理解正確,翻譯:

    [1 0 0 0]
    [0 1 0 0]
    [0 0 1 0]
    [x y z 1]

    請參閱有關轉換的維基百科文章以及Pragamatic CSS3 教學 很好地解釋了這一點。我發現的另一個解釋任意旋轉矩陣的指南是 Egon Rath 關於矩陣的筆記

    當然,這些 4x4 矩陣之間可以進行矩陣乘法,因此要執行旋轉和平移,您需要建立適當的旋轉矩陣並將其乘以平移矩陣。

    這可以給你更多的自由來讓它恰到好處,也使得任何人幾乎完全不可能理解它在做什麼,包括五分鐘內的你。

    但是,你知道,它確實有效。

    編輯:我剛剛意識到我錯過了可能最重要和最實際的用途,即透過 JavaScript 逐步創建複雜的 3D 轉換,這樣事情會變得更有意義。

    回覆
    0
  • P粉231112437

    P粉2311124372023-09-01 09:44:56

    你必須將它們放在一行上,如下所示:

    li:nth-child(2) {
        transform: rotate(15deg) translate(-20px,0px);
    }

    當您有多個轉換指令時,僅套用最後一個。就像任何其他 CSS 規則一樣。


    請記住,多個轉換一行指令是從右向左套用

    這個:變換:scale(1,1.5)rotate(90deg);
    和:變換:旋轉(90deg)縮放(1,1.5);

    #

    不會產生相同的結果:

    .orderOne, .orderTwo {
      font-family: sans-serif;
      font-size: 22px;
      color: #000;
      display: inline-block;
    }
    
    .orderOne {
      transform: scale(1, 1.5) rotate(90deg);
    }
    
    .orderTwo {
      transform: rotate(90deg) scale(1, 1.5);
    }
    <div class="orderOne">
      A
    </div>
    
    <div class="orderTwo">
      A
    </div>

    回覆
    0
  • 取消回覆