Actualmente , Twitter Bootstrap 3 tiene los siguientes puntos de interrupción de respuesta: 768 px, 992 px y 1200 px, que representan dispositivos pequeños, medianos y grandes, respectivamente.
¿Cómo puedo detectar estos puntos de interrupción usando JavaScript?
Me gustaría escuchar con JavaScript todos los eventos relacionados que se activen cuando cambie la pantalla. Y para poder detectar si la pantalla es para dispositivos pequeños, medianos o grandes.
¿Hay algo ya hecho? Cuales son tus sugerencias?
javascript
twitter-bootstrap-3
dom-events
Rubens Mariuzzo
fuente
fuente
<div class="d-none d-?-block"></div>
cambia la visibilidad (inserte el punto de interrupción deseado). Esas clases CSS son para Bootstrap 4 ... use lo que funcione en Bootstrap 3. Mucho más rendimiento que escuchar el evento de cambio de tamaño de ventana.Respuestas:
Editar: esta biblioteca ahora está disponible a través de Bower y NPM. Vea el repositorio de github para más detalles.
RESPUESTA ACTUALIZADA:
Descargo de responsabilidad: soy el autor.
Aquí hay algunas cosas que puede hacer con la última versión (Responsive Bootstrap Toolkit 2.5.0):
A partir de la versión 2.3.0, no necesita los cuatro
<div>
elementos mencionados a continuación.RESPUESTA ORIGINAL:
No creo que necesites ningún gran script o biblioteca para eso. Es una tarea bastante simple.
Inserte los siguientes elementos justo antes
</body>
:Estos 4 divs le permiten verificar el punto de interrupción actualmente activo. Para una fácil detección de JS, use la siguiente función:
Ahora, para realizar una determinada acción solo en el punto de interrupción más pequeño que pueda usar:
La detección de cambios después de DOM listo también es bastante simple. Todo lo que necesita es un oyente de tamaño de ventana ligero como este:
Una vez que esté equipado con él, puede comenzar a escuchar los cambios y ejecutar funciones específicas de punto de interrupción de esta manera:
fuente
Si no tiene necesidades específicas, simplemente puede hacer esto:
Editar: No veo por qué debería usar otra biblioteca js cuando puede hacer esto solo con jQuery ya incluido en su proyecto Bootstrap.
fuente
$(window).bind('resize')
... pero hay otros eventos relacionados con la orientación de la pantalla móvil que impactan la dimensión de la pantalla..on('resize')
¿Has echado un vistazo a Response.js? Está diseñado para este tipo de cosas. Combine Response.band y Response.resize.
http://responsejs.com/
fuente
Puede usar el tamaño de la ventana y codificar los puntos de interrupción. Usando angular:
fuente
Detecta el punto de respuesta sensible de Twitter Bootstrap 4.1.x usando JavaScript
El v.4.0.0 Bootstrap (y la última versión de Bootstrap 4.1.x ) introdujeron los actualizados opciones de cuadrícula , por lo que el viejo concepto de detección no puede directamente aplicarse (ver las instrucciones de migración ):
sm
nivel de cuadrícula a continuación768px
para un control más granular. Ahora tenemosxs
,sm
,md
,lg
, yxl
;xs
Las clases de cuadrícula se han modificado para no requerir el infijo.Escribí la pequeña función de utilidad que respeta los nombres de clase de cuadrícula actualizados y un nuevo nivel de cuadrícula:
Detecta el punto de respuesta sensible de Bootstrap v4-beta usando JavaScript
El Bootstrap v4-alfa y Bootstrap v4-beta tenían enfoque diferente en los puntos de interrupción de la red, así que aquí tiene la forma legado de la consecución de la misma:
Creo que sería útil, ya que es fácil de integrar en cualquier proyecto. Utiliza clases de visualización receptivas nativas de Bootstrap.
fuente
Aquí mi propia solución simple:
jQuery:
VanillaJS:
fuente
Usar este enfoque con Response.js es mejor. Los disparadores Response.resize en cada ventana cambian el tamaño donde el crossover solo se activará si se cambia el punto de interrupción
fuente
No debería haber ningún problema con alguna implementación manual como la mencionada por @oozic.
Aquí hay un par de librerías a las que puedes echar un vistazo:
Tenga en cuenta que estas bibliotecas están diseñadas para funcionar independientemente de bootstrap, fundación, etc. Puede configurar sus propios puntos de interrupción y divertirse.
fuente
Es posible que desee agregar esto a su proyecto de arranque para verificar visualmente el punto de interrupción activo
Aquí está el botín
fuente
Sobre la base de la respuesta de Maciej Gurban (lo cual es fantástico ... si te gusta esto, solo vota su respuesta). Si está creando un servicio para consultar, puede devolver el servicio actualmente activo con la configuración a continuación. Esto podría reemplazar otras bibliotecas de detección de puntos de interrupción por completo (como enquire.js si incluye algunos eventos). Tenga en cuenta que he agregado un contenedor con una ID a los elementos DOM para acelerar el recorrido DOM.
HTML
COFFEESCRIPT (AngularJS, pero esto es fácilmente convertible)
JAVASCRIPT (AngularJS)
fuente
En lugar de usar $ (document) .width (), debe establecer una regla CSS que le brinde esta información.
Acabo de escribir un artículo para obtenerlo con precisión. Véalo aquí: http://www.xurei-design.be/2013/10/how-to-accurately-detect-responsive-breakpoints/
fuente
¿Por qué no simplemente usar jQuery para detectar el ancho actual de CSS de la clase de contenedor bootstrap?
es decir..
También puede usar $ (window) .resize () para evitar que su diseño "ensucie la cama" si alguien cambia el tamaño de la ventana del navegador.
fuente
En lugar de insertar el siguiente muchas veces en cada página ...
Simplemente use JavaScript para insertarlo dinámicamente en cada página (tenga en cuenta que lo he actualizado para que funcione con Bootstrap 3 con
.visible-*-block
:fuente
No tengo suficientes puntos de reputación para comentar, pero para aquellos que tienen problemas para ser "no reconocidos" cuando intentan usar ResponsiveToolKit de Maciej Gurban, también recibí ese error hasta que noté que Maciej realmente hace referencia al kit de herramientas desde la parte inferior del página en su CodePen
¡Intenté hacer eso y de repente funcionó! Entonces, use ResponsiveToolkit pero coloque sus enlaces en la parte inferior de la página:
No sé por qué hace la diferencia, pero lo hace.
fuente
Aquí hay otra forma de detectar la ventana gráfica actual sin poner los números de tamaño de ventana gráfica en su javascript.
Vea fragmentos de CSS y JavaScript aquí: https://gist.github.com/steveh80/288a9a8bd4c3de16d799
Después de agregar esos fragmentos a sus archivos CSS y JavaScript, puede detectar la ventana gráfica actual de esta manera:
Si desea detectar un rango de ventana gráfica, utilícelo así
fuente
El CSS de Bootstrap para la
.container
clase se ve así:Por lo tanto, esto significa que podemos confiar con seguridad
jQuery('.container').css('width')
para detectar puntos de interrupción sin los inconvenientes de confiar en ellosjQuery(window).width()
.Podemos escribir una función como esta:
Y luego pruébalo como
fuente
var cssWidth = parseInt( jQuery('.container').css('width') );
Segundo, usar rangosif ( cssWidth < 768) { return 'xs'; } else if (cssWidth >= 768 && cssWidth <= 992) { return 'sm'; } else if (cssWidth > 992 && cssWidth <= 1200) { return 'md'; } else { return 'lg'; }
Use CSS
:before
ycontent
propiedad para imprimir el estado del punto de interrupción en<span id="breakpoint-js">
modo que el JavaScript solo tiene que leer estos datos para convertirlo en una variable para usar dentro de su función.(ejecuta el fragmento para ver el ejemplo)
NOTA: Agregué algunas líneas de CSS para usar
<span>
como una bandera roja en la esquina superior de mi navegador. Solo asegúrate de volver a cambiarlodisplay:none;
antes de hacer públicas tus cosas.fuente
Hice un método jQuery nativo para la detección del tamaño de pantalla de Twitter Bootstrap. Aquí está:
JSFillde: https://jsfiddle.net/pstepniewski/7dz6ubus/
JSFillde como ejemplo de pantalla completa: https://jsfiddle.net/pstepniewski/7dz6ubus/embedded/result/
fuente
Para cualquier persona interesada en esto, escribí una detección de punto de interrupción basada en puntos de interrupción CSS utilizando TypeScript y Observables. No es muy difícil hacer ES6 con él, si elimina los tipos. En mi ejemplo, uso Sass, pero también es fácil de eliminar.
Aquí está mi JSFiddle: https://jsfiddle.net/StefanJelner/dorj184g/
HTML:
SCSS:
Mecanografiado:
Espero que esto ayude a alguien.
fuente
Bootstrap4 con jQuery, solución simplificada
fuente
No estaba realmente satisfecho con las respuestas dadas, que me parecen demasiado complicadas de usar, así que escribí mi propia solución. Sin embargo, por el momento esto depende del subrayado / lodash para funcionar.
https://github.com/LeShrimp/GridSizeEvents
Puedes usarlo así:
Esto funciona de forma predeterminada para Bootstrap 3, ya que los puntos de interrupción están codificados en 768px, 992px y 1200px. Para otras versiones, puede adaptar fácilmente el código.
Internamente, utiliza matchMedia () y, por lo tanto, debe garantizar la producción de resultados que estén sincronizados con Bootstrap.
fuente
Tal vez ayude a algunos de ustedes, pero hay un complemento que lo ayuda a detectar en qué punto de interrupción actual de Bootstrap v4 se encuentra: https://www.npmjs.com/package/bs-breakpoints
Fácil de usar (se puede usar con o sin jQuery):
fuente
Aquí está mi solución (Bootstrap 4):
fuente
Para cualquiera que use knockout.js , quería algunas propiedades observables de knockout.js que me indicaran cuándo se alcanzan los puntos de interrupción. Opté por utilizar el soporte de Modernizr para consultas de medios de estilo CSS para que los números coincidieran con las definiciones de arranque y para obtener los beneficios de compatibilidad de modernizr. Mi modelo de vista eliminatoria es el siguiente:
fuente
Aquí hay una buena forma de detectarlo (quizás divertido, pero funciona) y puede usar el elemento necesario para que el código sea claro:
Ejemplo: css:
y en el documento de jQuery:
por supuesto, la propiedad css es cualquiera.
fuente
Dado que Bootstrap 4 saldrá pronto, pensé que compartiría una función que lo soporte (xl ahora es una cosa) y realiza jQuery mínimo para hacer el trabajo.
fuente
Bootstrap 4
o minificado
fuente
Si usa Knockout , podría usar el siguiente enlace personalizado para vincular el punto de interrupción de la ventana gráfica actual (xs, sm, md o lg) a un observable en su modelo. La Unión...
divs
convisible-??
clase en un div con iddetect-viewport
y lo agrega al cuerpo si aún no existe (para que pueda reutilizar este enlace sin duplicar estos divs)fuente
Ha pasado un tiempo desde el OP, pero aquí está mi solución para esto usando Bootstrap 3. En mi caso de uso, solo apuntaba a filas, pero lo mismo podría aplicarse al contenedor, etc.
Solo cambia .row a lo que quieras.
fuente