Sto cercando un modo affidabile per ottenere la larghezza della finestra in unità em utilizzando javascript. Sono rimasto sorpreso nel vedere che jQuery restituirà solo un risultato nelle misure dei pixel. Qualsiasi aiuto è apprezzato.E 'possibile ottenere la larghezza della finestra in em unità usando javascript?
risposta
Questo sembra funzionare:
$(window).width()/parseFloat($("body").css("font-size"));
Per quelli che si affidano a font-size% e media queries cambia $ ("body"). Css ("font-size") a $ ("html"). css ("font-size") per ottenere una larghezza della finestra più accurata in ems. – ontananza
La cosa bella di questo approccio è che diventa estremamente flessibile, in quanto si può cambiare ** $ (window) .width() **, a qualunque sia il target. – blackhawk
QUESTO È GRANDE. L'ho cercato per un'ora. – salep
E 'possibile calcolare, ma em
non è un'unità "semplice" come px
perché dipende da una selezione dei font (vale a dire, una combinazione di famiglia di caratteri , stile (grassetto, corsivo, ecc.) e dimensione carattere). Ovviamente la dimensione del carattere stesso può essere relativa (ad esempio se si attribuisce un font a , ex
o in percentuale, l'altezza calcolata di px
per quel tipo di carattere viene ricavata dalle dimensioni dell'elemento principale).
per ottenere la larghezza em
di una pagina che si possa fare la conversione in questo modo (attenzione: psuedocodarlo):
// For this to work reliably, size should be in px, pt, or mm.
function getWindowWidthInEm(fontFamily, style, size) {
var box = document.createElement("span");
box.innerText = "M";
box.style.fontFamily = fontFamily;
box.style.fontSize = size;
box.style.fontWeight = style is bold;
box.style.fontStyle = style is italic;
var body = document.getElementsByTagName("body")[0];
body.appendChild(box);
var emInPx = box.getComputedStyle().width;
body.removeChild(box);
var windowPx = window.width;
return windowx/emInPx;
}
semplice, dal momento che sappiamo 1em = 16px
var window_width_em = 1/16 * window_width_px;
Supponendo che 1em sia 16 px è erroneamente errato. Le unità em sono relative alla dimensione del font in cascata di un elemento. Aggiunta di css 'html {font-size: 10px; } 'o' html {font-size: 1.5em; } 'risulterebbe in 1em ***! = *** 16px. Più lontano dal controllo degli sviluppatori c'è il fatto che la "dimensione del font standard di 16px" è impostata dall'agente utente e può essere modificata dall'utente a un capriccio ***. –
Questa risposta è ancora sbagliata, non importa quante delle mie risposte hai votato :) –
Per chi ne ha bisogno tutto messo insieme, questo codice funziona per me:
<p>Window size: <span id="width_px"></span> pixels or <span id="width_ems"></span> ems</p>
<script>
window.onresize = function() {
document.getElementById("width_px").innerHTML = window.innerWidth;
document.getElementById("width_ems").innerHTML = window.innerWidth/parseFloat($("body").css("font-size"));
};
</script>
È pu insieme usando la risposta sopra aggiunta al window-width test code trovato nel tutorial collegato.
Ecco una soluzione che non richiede jQuery e non richiede una dichiarazione di dimensione carattere esplicita.
window.innerWidth/
parseFloat(getComputedStyle(document.querySelector('body'))['font-size'])
+1 - non farà la differenza ma 'html' sarebbe un po '* più corretto * di' body' per em prende il carattere di root dimensioni e questo è html – m02ph3u5
- 1. Cambiare la larghezza usando jQuery .css() ed em
- 2. Come ottenere la larghezza della finestra del terminale in Ruby
- 3. come ottenere larghezza e altezza della finestra con YUI?
- 4. Angular2 ottiene la larghezza della finestra onResize
- 5. Uso della larghezza e della larghezza minima
- 6. CSS media query e larghezza della finestra JavaScript non corrispondono
- 7. Impostazione della larghezza della finestra in Xcode
- 8. come impostare la larghezza in Android usando javascript?
- 9. SVG traduce con em come unità?
- 10. Come trovare usando javascript il massimo utenti finestra del browser larghezza e corrente
- 11. jquery, aggiungi/rimuovi classe quando cambia la larghezza della finestra
- 12. Calcolo della larghezza e del centro della finestra dell'immagine DICOM
- 13. Ottieni la larghezza dell'immagine caricata in JavaScript
- 14. Finestra mimica. onerror in Opera usando javascript
- 15. Come ottenere la larghezza interna e l'altezza della forma
- 16. Apre una finestra dietro la finestra corrente usando Javascript/jQuery
- 17. Impostazione larghezza e altezza DIV in JavaScript
- 18. Come ottenere la larghezza dello schermo dell'iPad in Javascript
- 19. Definizione della larghezza/altezza css in unità indipendenti dal dispositivo?
- 20. È possibile creare una finestra trasparente usando HTML/JS/CSS?
- 21. Ottenere larghezza disponibile affidabile e l'altezza utilizzando JavaScript
- 22. Come impostare la larghezza della textarea usando tinymce?
- 23. Estendere un'immagine per riempire la larghezza della finestra del browser
- 24. Get larghezza della finestra "utilizzabile" in caratteri vim
- 25. Imposta la larghezza e l'altezza della scena
- 26. Imposta altezza e larghezza della finestra di dialogo personalizzata
- 27. jQuery: come rilevare la larghezza della finestra al volo?
- 28. Animazione di una larghezza e di un'altezza della finestra WPF
- 29. DOM HTML larghezza + altezza della finestra visibile
- 30. Ottieni proprietà elemento CSS (larghezza/altezza) come era impostato (in percentuale/em/px/ecc.)
em è relativo alla dimensione dei caratteri. Se la dimensione del font è 12 px, allora la larghezza della finestra divisa per 12 ti darà la quantità em equivale. Dipenderà dal tipo di carattere che vuoi che sia relativo a – kmb64