2011-03-28 8 views
13

En Javascript hay una manera directa (sin involucrar el análisis del código css) para determinar qué consulta de medios está activa?CSS que determina la consulta de medios activos

Por ejemplo tengo dos preguntas:

@media screen and (max-width:800px) 

@media screen and (min-width:801px) 

sin necesidad de analizar y mirando a la clientWidth, ¿cómo puedo saber cuál de ellos ha evaluado como true.

+2

Comprobar el estilo computarizada. – BoltClock

+0

Sí, puedo hacerlo, pero eso supone que tengo un elemento para calcular. Intento completar los datos en función de la consulta de los medios, todavía no tengo elementos y me parece muy "travieso" incluir algún elemento con datos falsos para tomar esta determinación. – freddylindstrom

+0

¿Podría establecer el fondo/borde de uno de los contenedores/DIV para que aparezca en rojo brillante cuando se activa uno de los anchos (como medida temporal)? – Dan

Respuesta

0

Hola y espero que esta ayuda, en realidad estoy añadiendo una clase a un selector y estoy trabajando con esta herramienta: https://hacks.mozilla.org/2012/06/using-window-matchmedia-to-do-media-queries-in-javascript/

, de hecho, tienen un claro ejemplo de lo que es activa dentro de la ventana redimensionada aquí http://robnyman.github.io/matchmedia/

en mi caso solo estoy haciendo una tarea específica cuando estoy en un tamaño específico que se puede obtener con la función.

0

No estoy seguro de cómo lo sepa en qué medio-consulta es activo, pero ...

... ¿no puedes comprobar el ancho de la pantalla con javascript?

if (window.innerWidth >= 801) { 
    // @media screen and (min-width:801px) 
} else { 
    // @media screen and (max-width:800px 
} 

o, ¿qué es lo que falta aquí?

+0

oh, acabo de ver _sin analizar y mirar el ancho del cliente, _, lo siento –

4

Aunque esta es una vieja pregunta, ocupa un lugar destacado cuando se busca este problema en Google.

Window.matchMedia es oficial y es compatible con all major browsers (IE10 +) y le permitirá consultar si una determinada consulta de medios actualmente coincide.

A partir de la pregunta original:

if (window.matchMedia('screen and (max-width:800px)').matches) { 
    // it matches 
} else { 
    // does not match 
} 

También puede escuchar cuando la consulta resultado del partido cambios adjuntando un detector de eventos a los MediaQueryList que window.matchMedia devuelve:

var mql = window.matchMedia('screen and (max-width:800px)'); 
mql.addEventListener(
    function(mq) { 
     if (mq.matches) { 
      // it matches 
     } else { 
      // does not match 
     } 
    } 
); 
Cuestiones relacionadas