Ich habe ein 3-bar-Symbol mit reinem SVG Code in HTML entworfen. Ich verwende CSS3-Transformationen, um die oberen & unteren Balken in eine X-Form zu drehen. Das Problem ist, dass sie sich um ihr eigenes Zentrum drehen, aber ich muss sie um das Zentrum des Symbols drehen. Um das zu umgehen, habe ich ihre X/Y-Koordinaten angepasst.Drehen Sie ein SVG-Hamburger-Symbol in ein X?
Dies verursacht eine Menge Buggy Probleme mit Internet Explorer, Firefox, & Safari. Chrome scheint in Ordnung zu sein, aber natürlich möchte ich das "richtig" kodieren, damit es in allen Browsern funktioniert.
HTML
<svg id="burgericon" xmlns="http://www.w3.org/2000/svg" width="90" height="80">
<g class="icon">
<rect class="frstbar" x="10" y="10" width="70" height="12" rx="7" ry="7" fill="#414141"/>
<rect class="scndbar" x="10" y="35" width="70" height="12" rx="7" ry="7" fill="#414141"/>
<rect class="thrdbar" x="10" y="60" width="70" height="12" rx="7" ry="7" fill="#414141"/>
</g>
</svg>
CSS
.hamburger { display:block; text-align:center; }
svg { cursor:pointer; }
.frstbar, .scndbar, .thrdbar {
-webkit-transition: all 0.35s linear;
-moz-transition: all 0.35s linear;
-o-transition: all 0.35s linear;
transition: all 0.35s linear;
}
#burgericon.open .frstbar {
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
}
#burgericon.open .thrdbar {
-webkit-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
transform: rotate(-45deg);
}
#burgericon.open .scndbar { width: 0; opacity: 0; }
JS
$('#burgericon').on('click', function(e) {
if($(this).attr('class') != "open") {
$(this).attr('class','open');
$('.frstbar').attr('x','25').attr('y','-5');
$('.thrdbar').attr('x','-35').attr('y','55');
}
else {
$(this).attr('class','default');
$('.frstbar').attr('x','10').attr('y','10');
$('.thrdbar').attr('x','10').attr('y','60');
}
});
Ich denke, auch die X/Y-Koordinaten Ändern einer verschwommenen Effekt verursacht. Ich habe unten einen Screenshot hinzugefügt. Zuerst sehen Sie das abgeschlossene X-Symbol und dann sehen Sie, wie es aussieht, wenn es auf die Standardeinstellungen zurückgesetzt wird.
Die Balken sind nicht perfekt gerade, aber sie sehen aus irgendeinem Grund schief aus.
Ich bin zu SVG Manipulation noch neu, so dass ich nicht sicher bin, wie man richtig <rect>
Elemente mit CSS3/JS drehen. Jede Hilfe oder Tipps in die richtige Richtung wäre mehr als nur geschätzt.
weggelassen Codepen ist wahrscheinlich nicht die beste Demo-Website für Fehler aufgrund seiner Auto-Speichern-Funktion. Wäre es möglich, Ihr Markup auch hier zu posten (für zukünftige Leser?) – jbutler483
Es ist seltsam ...selbst in Chrome, wenn ich es mehrmals versuche, werden einige fehlschlagen ... – vals
Ich glaube nicht, dass die ** lineare ** 'Übergang-Timing-Funktion 'gibt die Übergangszeit, um richtig zu beenden. Die Umstellung auf die Standard ** -Einstellung ** scheint es in meinen begrenzten Tests zu beheben. – andyb