2012-04-24 9 views
25

Estoy rediseñando mi blog con el diseño web de respuesta en mente, y - En fin, yo estoy tratando de utilizar min-width para evitar cualquier tipo de replicación o css .. sin visualización: de ninguna etc ..la especificidad de CSS, consultas y medios min-width del "primer móvil" método

Mi problema es que cuando yo lo necesito a un exceso de escribir un valor CSS, menor será min-width tiene prioridad. Ejemplo:

@media only screen and (min-width: 600px) { 
    h2 { font-size: 2.2em; } 
} 

@media only screen and (min-width: 320px) { 
    h2 { font: normal 1.7em/2.1em Helvetica, sans-serif; } 
} 

yo esperaría que cuando estoy en la resolución de 600px y por encima de conseguir un h2 2.2em, pero en su lugar me sale 1.7em .. En mis herramientas Dev veo que la declaración es 2.2em allí, pero el otro tiene prioridad ... ¡No tiene sentido!

Podría seguir usando min-anchos y sobrescribir eficazmente declaraciones en resoluciones más altas sin necesidad de utilizar selectores más fuertes o max-anchura ..?

+2

Para aclarar sobre la respuesta de BoltClock más adelante, esto es lo que el navegador está pensando: Se llega a la primera consulta de medios , '¡Oh, tengo un ancho mínimo de 600! ¡Establezcamos el tamaño de fuente en 2.2em! '. Luego continúa en la siguiente consulta de medios, '¡Oh, tengo un ancho mínimo de 320! Vamos a configurar mi fuente para esto ahora! '. –

+1

La respuesta del unicornio es correcta, pero tal vez deberías pensar en términos de ancho máximo en lugar de ancho mínimo. Si desea un tamaño H2 más pequeño en pantallas más pequeñas, puede escribir 'font-size: 2.2em' sin consulta de medios y luego' font-size: 1.7em' en una consulta para 'max-width: 599px'. –

+0

max-width no es realmente una buena práctica ... difícil de explicar, pero cuando usa max-width termina reescribiendo CSS duplicados ... consulte http://www.html5rocks.com/en/mobile/responsivedesign/ –

Respuesta

32

Esperaría cuando tengo una resolución de 600px y superior para obtener una 2.2em h2, pero en cambio obtengo 1.7em .. En mis herramientas Dev veo que la declaración 2.2em está ahí, pero el otro tiene prioridad ... ¡No tiene sentido!

tiene sentido. Si el medio cumple min-width: 600px, entonces también debe cumplir min-width: 320px; en otras palabras, cualquier cosa que tenga al menos 600 píxeles de ancho también tenga al menos 320 píxeles de ancho, porque 600 es mayor que 320.

Dado que ambas consultas de medios se evalúan como verdaderas, la última regla que ocurre tiene prioridad en la cascada, lo que hace su código equivalente a esto:

h2 { font-size: 2.2em; } 
h2 { font: normal 1.7em/2.1em Helvetica, sans-serif; } 

Eso explica por qué el 2.2em aparece en sus herramientas de desarrollo, pero no tiene efecto aparente.

La solución más fácil es cambiar sus @media cuadras a la redonda para que su reglas en cascada en el orden correcto:

@media only screen and (min-width: 320px) { 
    h2 { font: normal 1.7em/2.1em Helvetica, sans-serif; } 
} 

@media only screen and (min-width: 600px) { 
    h2 { font-size: 2.2em; } 
} 
+1

La especificidad CSS también tiene en cuenta el orden de aparición ... a veces solo te pierdes las cosas más obvias cuando pasas 12 horas frente a la PC. Gracias Unicorn :) –

+0

No lo entiendo. ¿Cómo es que un medio de al menos 600 píxeles de ancho también tiene al menos 320 píxeles de ancho? ¿es realmente malo que ** podría ** tener 320 píxeles de ancho (por ejemplo, al cambiar el tamaño de la ventana del navegador para que sea más pequeño)? –

+0

@John Wang: 600px es más de 320px. Entonces, si algo es 600px o más, también es 320px o más. Ese es el significado de "al menos". – BoltClock

Cuestiones relacionadas