Sono in possesso di un'applicazione per la mappa di calore e memorizzo le coordinate x, y di un clic e anche la larghezza e l'altezza della finestra. i dati reali per 2 clic:Come ricalcolare le coordinate x, y in base alla schermata
x, y, width, height
433, 343, 1257, 959
331, 823, 1257, 959
Il problema è quando ho ridimensionare lo schermo sul sito reattivo, gli scatti esposti sono ora tutti fuori. Sto arrivando vuoto nelle mie ricerche ma c'è una formula o un algoritmo per ricalcolare le coordinate xey per risoluzioni diverse. Ad esempio, il primo clic, se lo width
passa da 1257
a 990
e lo height
passa da 959
a 400
, come faccio a ricalcolare xey per allineare nello stesso punto?
EDIT: ho aggiunto 2 campi al database, width_percentage e l'altezza percentuale per memorizzare il x
percentuale della larghezza e la y
percentuale dell'altezza. Quindi se x
era 433 e la larghezza dello schermo era 1257, allora x
era il 35% dal bordo sinistro dello schermo. Ho quindi utilizzato la stessa teoria per l'altezza e ho eseguito i calcoli, ma non ha scalato il punto di clic nello stesso punto in cui avrei dovuto fare le percentuali per le risoluzioni di ridimensionamento. Lo sto testando facendo clic sulla piena risoluzione 1257 di larghezza e poi riaprendo a 900 larghezze. Vedi sotto per il codice per visualizzare i punti di clic a una risoluzione inferiore.
Ajax PHP
while ($row = mysql_fetch_array($results)) {
if($_GET['w'] < $row['width']) {
$xcorr = $row['width_percentage'] * $_GET['w'];
$ycorr = $row['y'];
}
}
Questo utilizza la variabile $_GET
, passando la larghezza e l'altezza della risoluzione dello schermo al caricamento della pagina. Quindi ottiene i punti di clic dal database come $results
. Poiché ho ridimensionato la larghezza della risoluzione solo da 1257 a 900, non ho inserito il calcolo dell'altezza e lo stesso pixel del clic iniziale. La nuova larghezza I moltiplicata per la percentuale e imposta il punto tale margine percentuale dalla sinistra dello schermo. Poiché la percentuale è del 35% , la nuova coordinata x diventa 900 *.35 = 315px
dal bordo sinistro. Non ha funzionato e sto ancora grattando la testa per tenere il clic nello stesso punto per i siti reattivi.
Dovrai mostrare del codice. Tuttavia, la soluzione probabile è di aggiungere un listener 'resize' al' document' e fare un po 'di magia con 'element.getBoundingClientRect()'. Vedere la seguente risposta alla domanda: [Recupera la posizione (X, Y) di un elemento HTML] (http://stackoverflow.com/a/11396681/691711) – zero298
Oltre alle coordinate x.y, salva anche l'elemento obiettivo dell'evento. Ora mantieni un listener di ridimensionamento sul documento e ricalcoli la coordinata x, y dell'elemento salvato sull'evento resize. –
Sei sicuro di ottenere i valori corretti in '$ row'? Prova 'var_dump ($ row)'. Inoltre: cosa intendi con "Non ha funzionato"? Qual è stato il risultato questa volta? Lo stesso di prima o qualcos'altro? –