首頁 > web前端 > css教學 > 為什麼在 Firefox 中設定 SVG 群組的變換原點不起作用?

為什麼在 Firefox 中設定 SVG 群組的變換原點不起作用?

Susan Sarandon
發布: 2024-11-29 11:13:11
原創
376 人瀏覽過

Why Doesn't Setting the Transform Origin for an SVG Group Work in Firefox?

Firefox中為SVG群組設定變換原點不起作用

使用transform-origin 在Firefox 中遇到了問題(版本18 ,其他版本18 ,其他版本版本未測試)。 WebKit 瀏覽器按預期運作。我嘗試將原點設定為群組的中心,但到目前為止我嘗試的一切都沒有奏效。

這是代碼:

#test {
  -webkit-transform-origin: 50% 50%;
  transform-origin: center center;
  -webkit-animation: prop 2s infinite;
  animation: prop 2s infinite;
}

@-webkit-keyframes prop {
  0% {
    -webkit-transform: scale(1, 1);
  }
  20% {
    -webkit-transform: scale(1, .8);
  }
  40% {
    -webkit-transform: scale(1, .6);
  }
  50% {
    -webkit-transform: scale(1, .4);
  }
  60% {
    -webkit-transform: scale(1, .2);
  }
  70% {
    -webkit-transform: scale(1, .4);
  }
  80% {
    -webkit-transform: scale(1, .6);
  }
  90% {
    -webkit-transform: scale(1, .8);
  }
  100% {
    -webkit-transform: scale(1, 1);
  }
}

@keyframes prop {
  0% {
    transform: matrix(1, 0, 0, 1, 0, 0);
  }
  20% {
    transform: matrix(1, 0, 0, .8, 0, 0);
  }
  40% {
    transform: matrix(1, 0, 0, .6, 0, 0);
  }
  50% {
    transform: matrix(1, 0, 0, .4, 0, 0);
  }
  60% {
    transform: matrix(1, 0, 0, .2, 0, 0);
  }
  70% {
    transform: matrix(1, 0, 0, .4, 0, 0);
  }
  80% {
    transform: matrix(1, 0, 0, .6, 0, 0);
  }
  90% {
    transform: matrix(1, 0, 0, .8, 0, 0);
  }
  100% {
    transform: matrix(1, 0, 0, 1, 0, 0);
  }
}
登入後複製
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="128px" height="128px" viewBox="0 0 16 16">
    <g>
登入後複製

解決方案

我試圖使用CSS變換圍繞其中心點旋轉一個簡單的齒輪svg圖形。我在Firefox中遇到了與您相同的問題;transform-origin 似乎沒有任何效果。

解決方案是繪製原始svg形狀,使其中心位於座標0, 0:

<svg x="0px" y="0px" width="400px" height="400px" viewBox="0 0 400 400">
    <rect>
登入後複製

然後在其周圍添加一個群組並平移到您想要的位置:

<svg x="0px" y="0px" width="400px" height="400px" viewBox="0 0 400 400">
    <g transform="translate(150, 100)">
        <rect>
登入後複製

現在你可以應用CSS變換,這些變換應該可以在Firefox中工作(我根據使用者操作使用JavaScript向HTML標記加入一個類別(js-rotateObject),並使用Minimizr檢查瀏覽器是否可以處理變換和變換(.csstransforms.csstransitions):

#myObject {
    transform: rotate(0deg);
    transition: all 1s linear;
}

.csstransforms.csstransitions.js-rotateObject #myObject {
    transform: rotate(360deg);
}
登入後複製

希望有幫助。

以上是為什麼在 Firefox 中設定 SVG 群組的變換原點不起作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板