Estoy buscando una forma confiable de obtener el ancho de la ventana en unidades em usando javascript. Me sorprendió ver que jQuery solo devolverá un resultado en mediciones de píxeles. Cualquier ayuda es apreciada.¿Es posible obtener el ancho de la ventana en unidades em usando javascript?
Respuesta
Esto parece funcionar:
$(window).width()/parseFloat($("body").css("font-size"));
Para aquellos que dependen del tamaño de fuente% y las consultas de medios cambian $ ("cuerpo"). Css ("tamaño de fuente") a $ ("html"). css ("font-size") para obtener el ancho de ventana más preciso en ems. – ontananza
Lo bueno de este enfoque es que se vuelve extremadamente flexible, ya que uno puede cambiar el ** $ (ventana) .width() **, cualquiera que sea el objetivo. – blackhawk
ESTO ES GRANDE. He estado buscando esto por una hora. – salep
Es posible calcular, pero em
no es una unidad de "simple" como px
porque depende de una selección de fuente (es decir, una combinación de familia tipográfica , estilo (negrita, cursiva, etc.) y tamaño de letra). Por supuesto, el tamaño de fuente en sí puede ser relativo (por ejemplo, si le da a una fuente un em
, ex
o un porcentaje de tamaño, la altura calculada px
para esa fuente se deriva del tamaño del elemento principal).
para obtener el ancho em
de una página que podría hacer la conversión como esta (advertencia: psuedocode):
// 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;
}
simple, ya que sabemos 1em = 16px
var window_width_em = 1/16 * window_width_px;
Suponiendo que 1em tenga 16 px es engañosamente incorrecto. Las unidades Em son relativas al tamaño de fuente en cascada de un elemento. Agregando css 'html {font-size: 10px; } 'o' html {font-size: 1.5em; } 'daría como resultado 1em ***! = *** 16px. Más allá del control de los desarrolladores está el hecho de que el "agente de usuario" establece el "tamaño de letra estándar de 16 píxeles", y el usuario puede cambiarlo *** por un simple ***. –
Esta respuesta sigue siendo incorrecta, no importa cuántas de mis respuestas vote abajo :) –
Para aquellos que lo necesitan todo junto, este código funciona para mí:
<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>
Es pu t juntos usando la respuesta anterior agregada al window-width test code que se encuentra en el tutorial vinculado.
Aquí hay una solución que no requiere jQuery y no requiere una declaración de tamaño de fuente explícita.
window.innerWidth/
parseFloat(getComputedStyle(document.querySelector('body'))['font-size'])
+1 - No hará la diferencia, pero 'html' sería un poco * más correcto * que' body' para que em tome la fuente raíz tamaño y eso es html – m02ph3u5
- 1. ¿Es posible obtener el alto/ancho de una imagen que no está en el DOM?
- 2. Ventana oculta usando javascript
- 3. Convertir em a px en Javascript (y obtener el tamaño de fuente predeterminado)
- 4. ¿Es posible obtener una ventana del navegador para actualizar mientras está en un bucle de Javascript?
- 5. ¿Qué es la altura en em?
- 6. Margen y relleno usando em
- 7. ¿Cómo obtener el ancho de un marco de ventana antes de crear cualquier ventana?
- 8. Actualizar la ventana primaria desde la ventana secundaria usando javascript
- 9. ¿cuál es la diferencia entre el tamaño de fuente css usando em y porcentaje?
- 10. ¿Cómo obtener ancho y alto desde la ventana CreateWindowEx()? C++
- 11. Obtener la URL actual de la ventana emergente con javascript
- 12. Usando unidades en la perspectiva de CSS
- 13. ¿es posible abrir una ventana emergente con javascript y luego detectar cuando el usuario la cierra?
- 14. Calcular con precisión el ancho del texto en unidades métricas
- 15. ¿Es posible establecer el ancho de un jQGrid en porcentaje?
- 16. ¿Es posible obtener la posición de div en la ventana del navegador? No dentro del documento. Dentro de la ventana
- 17. centro de la ventana de dicom, ancho de la ventana
- 18. ¿Es posible cambiar el tamaño de la ventana con JQuery o JavaScript?
- 19. Ancho mínimo en el cambio de tamaño de la ventana
- 20. cómo obtener ancho y alto de ventana con YUI?
- 21. Minimizar la ventana del navegador usando javascript
- 22. ¿Es posible llamar a un método de Javascript en el contexto de otra ventana?
- 23. ¿Es posible configurar el ancho del elemento Seleccionar en porcentaje?
- 24. Cómo obtener el ancho de la ventana de terminal en Ruby
- 25. ¿Es posible la metaprogramación en Javascript?
- 26. Ventana mímica. onerror en Opera usando javascript
- 27. CSS - tamaño de letra hijo usando em
- 28. ¿Cómo puedo obtener la URL de redirección usando javascript?
- 29. JavaScript: ¿Cómo averiguar el ancho y alto del punto de vista en la ventana del navegador?
- 30. ¿Es posible obtener el contexto de la persona que llama en javascript?
em es relativo al tamaño de sus fuentes. Si el tamaño de su fuente es de 12 px, entonces el ancho de la ventana dividido entre 12 le dará la cantidad equivalente de em. Va a depender de la fuente que desee que sea relativa a – kmb64