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中文網其他相關文章!