2016-02-10 12 views
5

Nel mio progetto voglio correggere un elemento div in una certa posizione sullo schermo . Non la finestra, lo schermo. Quindi se il browser viene ridimensionato, il div rimane inserito e se il browser viene spostato, il div rimane inserito. Possibile?Fix div to screen

Ecco la mia pagina HTML di base che contiene solo un punto al centro dello schermo.

#dot { 
 
    width: 8px; 
 
    height: 8px; 
 
    -webkit-border-radius: 4px; 
 
    -moz-border-radius: 4px; 
 
    border-radius: 4px; 
 
    background: #000; 
 
    position:relative; 
 
    left: -4px; 
 
    top:-4px; 
 
}
<div style="position: absolute; top: 50%; left: 50%;"> 
 
    <div id="dot"></div> 
 
</div>

So che posso usare window.screenX e window.screenY e poi fare un po 'di matematica per garantire la posizione è impostato per dare l'illusione di un elemento fisso, tuttavia, che richiederebbe polling la posizione della finestra ogni millisecondo per rilevare quando il browser viene spostato (che è probabilmente piuttosto pesante e raro comunque). Il piano è di fare questo con molto più di un semplice ...

Qualche idea? Sono completamente perplesso.

+1

Non si può fare altro che come si sa già – LGSon

+0

Qual è il motivo per cui voglio aggiungerlo al mio sito web. – mrg95

risposta

1

Penso che si possa utilizzare requestAnimationFrame, che è meglio per questo tipo di attività di setInterval, per tenere d'occhio window.screenX e window.screenY e anche per spostare (animare) il punto div se questi numeri cambiano:

var x = window.screenX, 
    y = window.screenY; 

function moveDot() { 
    if(x !== window.screenX || y !== window.screenY) 
     console.log('move dot'); 

    x = window.screenX; 
    y = window.screenY; 
} 

(function animloop(){ 
    window.requestAnimationFrame(animloop); 
    moveDot(); 
})(); 

Here's the Can I Use link for requestAnimationFrame.

+0

Beh, è ​​un po 'ritardata. Un po 'traballa, non pulito come avrei voluto ... hmmm. – mrg95

+0

Sì, non viene chiamato ogni millisecondo. Non so se puoi usare un'animazione per rimettere le cose a posto, ma penso che possa aiutarti perché l'implementazione può variare tra i browser, sto usando Chrome in un macbook e qui lo 'screenX' e' screenY 'Le proprietà cambiano ** quando smetto di spostare il browser **, non cambiano per ogni pixel spostato, quindi in questo caso il punto non si muoverà agevolmente. –

+0

Ah, capisco. Oh bene allora:/Se solo quelle proprietà cambiano ogni fotogramma ... – mrg95

2

Poiché window.screenX e window.screenY sono accessibili solo in JS, non c'è davvero modo di farlo se non il polling delle variabili e la modifica del css utilizzando javascript.

-1

uso questo css troppo:

html { 
    height: 100%; 
} 

body { 
    height: 100% 
} 

e il tuo stile:

div { 
    ... 
} 
+0

Sì, questa era solo una pagina di prova – mrg95