Ho progettato un'icona a 3 barre utilizzando puro codice SVG in HTML. Sto usando trasformazioni CSS3 per ruotare le barre in basso & in una forma X. Il problema è che ruotano attorno al loro centro, ma ho bisogno che ruotino attorno al centro dell'icona. Per aggirare questo ho regolato le loro coordinate X/Y.Ruota un'icona di hamburger SVG in una X?
Questo causa un sacco di problemi con Buggy Internet Explorer, Firefox, & Safari. Chrome sembra essere a posto, ma ovviamente mi piacerebbe codificare questo modo "giusto" in modo che funzioni su tutti i browser.
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');
}
});
Penso anche cambiare la X/Y coordinate sta causando un effetto sfocato. Ho aggiunto uno screenshot qui sotto. Per prima cosa vedrai l'icona X completata e poi vedrai come appare quando ritorna al valore predefinito.
Le barre non sono perfettamente diritte ma invece sembrano sgualcite per qualche motivo.
Sono ancora nuovo per la manipolazione SVG, quindi non sono sicuro di come ruotare correttamente <rect>
elementi con CSS3/JS. Qualsiasi aiuto o consiglio nella giusta direzione sarebbe più che apprezzato.
codepen probabilmente non è il miglior sito demo per errori dovuto alla sua funzione di salvataggio automatico. Sarebbe possibile pubblicare il tuo markup anche qui (per i futuri lettori?) – jbutler483
È strano ...anche in Chrome, se provassi più volte, alcuni non funzioneranno ... – vals
Non penso che la ** linear ** 'transition-timing-function' dia il tempo di transizione per terminare correttamente. Passare al metodo predefinito ** easy ** sembra risolverlo nei miei test limitati. – andyb