2012-10-29 15 views
14

Il mio sito Web ha diverse animazioni CSS e transizioni, che rendono molto, molto lentamente in alcuni browser (fortunatamente, non molti di loro), e con un hardware più datato. Sto cercando di evitare UA sniffing; esiste un modo per rilevare i browser o le configurazioni hardware utilizzando un JavaScript o una libreria JS e successivamente caricare versioni non animate per i browser che so non hanno un buon supporto per quelle funzionalità?Rilevamento di hardware lento/browser lenti con JavaScript

Solo per chiarire ogni ambiguità, non sto cercando qualcosa come Modernizr.

+1

Vorrei suggerire a scrivere un po 'di rilevazione tempi te stesso, per le tue esigenze specifiche. "Lento" è troppo generalizzato, specialmente quando determinati dispositivi e hardware hanno accelerazioni per caratteristiche specifiche. – Brad

+2

Preferirei fornire un'opzione per l'utente che disabiliti tali animazioni piuttosto che passare attraverso la seccatura di rilevare "hardware lento" che potrebbe non essere accurato per il piacere dell'utente. –

+1

@FabricioMatte: mentre dare all'utente una maggiore flessibilità è ammirevole, se qualcosa fosse * veramente * lento sulla mia scatola e non fosse un elemento critico (es. Pagamento bancomat/fatture) non mi preoccuperei di cercare modi per disabilitarlo ma piuttosto uccidere il scheda sul posto. –

risposta

3

Questo non è affatto sufficiente per rilevare un sistema lento, ma sarebbe minimizzare l'impatto sugli utenti di tali sistemi:

Use CSS transitions e innescare con jQuery (commutando classi se necessario), elemento scarico animazioni al motore di rendering in modo che la reattività funzionale della pagina non ne risentirebbe almeno.

Utilizzare corretto Proprietà CSS. Ad esempio, anziché animare le proprietà top:10px;left:10px;, utilizzare transform: translateX(10px) translateY(10px) che sarà più efficiente.

Accelerazione dell'hardware di trigger (GPU) aggiungendo transform: translate3d(0,0,0); o una soluzione alternativa simile all'elemento di destinazione.

Se stai assolutamente attaccati alle animazioni, o hai bisogno di attivare funzionalità di fallback (nascondi/mostra/riposizionare elementi) senza i CSS per qualche motivo, you could try a Modernizr workaround:

if(!Modernizr.csstransitions) { 
    /*fallback logic*/ 
} 
+0

Uso transizioni e trasformazioni CSS e ho familiarità con la tecnologia. Potresti elaborare l'attivazione delle transizioni e le trasformazioni con jQuery? – Jules

+0

@Verandaguy: Intendo jQuery potrebbe essere usato per regolare i valori di proprietà "finali" (che sono animati verso) in contrasto con la regolazione iterativa dei valori di proprietà "intermedi". Forse questo è meglio spiegato in [un completo esempio] (http://www.the-art-of-web.com/javascript/css-animation/)? –

Problemi correlati