2010-11-28 46 views
16

Quiero ocultar un div flotante si la pantalla del usuario es < 1024px, ya que se superpondrá con el área de contenido de mi blog. Encontré este jQuery en la red, pero no estoy seguro de cómo usarlo.Ocultar div si la pantalla es más pequeña que un determinado ancho

$(document).ready(function() { 

if ((screen.width>1024)) { 
    // if screen size is 1025px wide or larger 
    $(".yourClass").css('display', 'none'); // you can also use $(".yourClass").hide(); 
} 
elseif ((screen.width<=1024)) { 
    // if screen size width is less than 1024px 
    $(".yourClass").css('display', 'block'); // here you can also use show(); 
} 
}); 

Si mi nombre de clase div flotante es compartir contenido, ¿debería reemplazar el script anterior como se muestra a continuación? Si es así, no está funcionando.

$(document).ready(function() { 

if ((screen.width>1024)) { 
    // if screen size is 1025px wide or larger 
    $(".sharecontent").css('display', 'none'); // you can also use $(".yourClass").hide(); 
} 
elseif ((screen.width<=1024)) { 
    // if screen size width is less than 1024px 
    $(".sharecontent").css('display', 'block'); // here you can also use show(); 
} 
}); 

También probé la sustitución de la screen.width con window.width pero aún sin éxito :(

+0

No utilice Javascript para solucionar un problema que no es de Javascript. Mejor arreglar el CSS – Gareth

+1

Y en cualquier caso, ¿por qué importa el tamaño de mi pantalla?Puede que no tenga la ventana de mi navegador en pantalla completa – Gareth

+0

Gareth plantea un punto importante, debe mirar el ancho de la ventana, no la pantalla realmente. – Orbling

Respuesta

62

Uso media queries Su código CSS sería:.

@media screen and (max-width: 1024px) { 
    .yourClass { 
     display: none !important; 
    } 
} 
+0

Hasta donde tengo conocimiento, el soporte para consultas de medios no está completo en los navegadores. Creo que IE9 tiene soporte, pero no IE8, ¿verdad? – Orbling

+0

@Orbling: Correcto, desafortunadamente – Eric

+0

Bueno, para el futuro, excelente método - siempre es mejor usar CSS que JS. – Orbling

0

¿Su lógica no redonda de la manera incorrecta en ese ejemplo, lo tiene escondido cuando la pantalla es más grande que 1024. Invierta las cajas, haga que none en un block y viceversa.

1

El problema con su código parece ser la instrucción elseif que debería ser else if (tenga en cuenta el espacio).

Reescribí y simplyfied el código para esto:

$(document).ready(function() { 

    if (screen.width < 1024) { 
     $(".yourClass").hide(); 
    } 
    else { 

     $(".yourClass").show(); 
    } 

}); 
10

tengo la casi la misma situación que la suya; que si el ancho de la pantalla es menor que el ancho especificado, debería ocultar el div. Este es el código jquery que utilicé y que funcionó para mí.

$(window).resize(function() { 

    if ($(this).width() < 1024) { 

    $('.divIWantedToHide').hide(); 

    } else { 

    $('.divIWantedToHide').show(); 

    } 

}); 
+0

gracias, reemplacé '.resize' a' .width' de [aquí] (http://stackoverflow.com/questions/7715124/jquery-do-something-if-screen-width-is-less-than- 960-px) ​​ – stom

+0

@stom: si reemplaza resize() con width(), cambiará el comportamiento; lo oculto no volverá a aparecer hasta que se vuelva a cargar. A menos que lo desee, no es la mejor solución. – Kornel

0

El problema que estaba teniendo es mi css media queries y mi declaración de IF en Jquery chocan. Ambos estaban configurados en 700px, pero uno pensaría que tocó 700px antes que el otro.

Para evitar esto he creado un derecho Div vacío en la parte superior de mi HTML (fuera de mi contenedor principal)

<div id="max-width"></div> 

En CSS fijo esto div para mostrar ninguno

#max-width { 
     display: none; 
    } 

En mi JS crea una función

var hasSwitched = function() { 
    var maxWidth = parseInt($('#max-width').css('max-width'), 10); 
    return !isNaN(maxWidth); 
}; 

Así que en mi declaración si en vez de decir si (hasSwitched < 700) realice el siguiente código, hice lo siguiente

if (!hasSwitched()) { Your code 

} 

else{ your code 

} 

Al hacer esto CSS dice Jquery cuando es golpeado 700px. Entonces css y jquery están sincronizados ... en lugar de tener un par de píxeles de diferencia. Dale una oportunidad a este, definitivamente no te defraudará.

Para obtener esta misma lógica que funciona para IE8 utilicé el plugin Respond.js (que también funciona). Le permite usar consultas de medios para IE8. Lo único que no se admite es el ancho de la ventana gráfica y la altura de la ventana gráfica ... de ahí mi razón para intentar que mi css y JS funcionen juntos. Espero que esto les ayude chicos

Cuestiones relacionadas