ฉันมีภาพเคลื่อนไหว SVG ต่อไปนี้ (เป็นตัวอย่างข้อมูลที่ค่อนข้างใหญ่ โปรดดูที่ 'แสดงข้อมูลโค้ด'):
.logo > .logo-compass-frame {
fill: none;
stroke: black;
stroke-width: 15;
stroke-linecap: round;
stroke-miterlimit: 10;
}
.logo > .logo-compass-north, .logo > .logo-compass-south {
stroke: black;
stroke-width: 8;
stroke-miterlimit: 10;
}
.logo > .logo-compass-south {
fill: none;
}
.logo > .logo-compass-center {
fill: black;
stroke: black;
stroke-width: 3;
stroke-linecap: round;
stroke-miterlimit: 10;
}
.logo > .logo-compass-north, .logo > .logo-compass-south, .logo > .logo-compass-center {
transition: 0.5s ease-in-out;
opacity: 1;
}
.logo:hover > .logo-compass-north, .logo:hover > .logo-compass-south {
transform-origin: center;
}
.logo:hover > .logo-compass-north {
transform: rotate(90deg) scale(1.5) translate(10px);
}
.logo:hover > .logo-compass-south {
transform: rotate(90deg) scale(1.5) translate(-10px);
}
.logo:hover > .logo-compass-center {
opacity: 0;
}
<svg class="logo" x="0px" y="0px" viewBox="0 0 272.6 272.6">
<circle class="logo-compass-frame" cx="136.3" cy="136.3" r="105.8" />
<polygon class="logo-compass-north" points="138,63.6 123.8,110.5 138,134.5 152.2,110.5" />
<polygon class="logo-compass-south" points="138,209 152.2,162.1 138,138.1 123.8,162.1" />
<circle class="logo-compass-center" cx="138" cy="136.6" r="5.7" />
</svg>
ปัญหาคือว่ามันทำงานแตกต่างออกไปเฉพาะกับ Firefox (ยังไม่ได้ทดสอบบน Edge หรือ IE เหมือนที่ฉันใช้ macOS) สำหรับเบราว์เซอร์ WebKit และ Opera ฉันจะได้รับ:
โครม 60.0.3112.90:
ซาฟารี 10.1:
โอเปร่า 47.0.2631.39:
ไฟร์ฟอกซ์ 54.0.1:
มีบางอย่างคาวเกิดขึ้น ฉันไม่ได้ลองใช้ Edge หรือ IE ดังนั้นอาจเป็นปัญหาบางประการเกี่ยวกับการปฏิบัติตามข้อกำหนดของ CSS ฉันคิดว่าบางที transform-origin
อาจไม่ได้รับการสนับสนุนเนื่องจากเป็นเทคโนโลยีทดลอง แต่การเพิ่ม -moz-transform-origin
ไม่ได้ทำอะไรเลย และ MDN รายงานว่าขณะนี้ transform-origin
ได้รับการสนับสนุนแล้ว
เหตุใดการเปลี่ยนแปลงจึงแสดงแตกต่างกันในเบราว์เซอร์ที่แตกต่างกัน และเป็นไปได้หรือไม่ที่จะแก้ไขปัญหานี้