Se me ha asignado la tarea de actualizar un sitio para que responda y aparezca correctamente en los teléfonos inteligentes. Desafortunadamente, el sitio en su forma actual no es muy fácil de trabajar, no puedo cambiar el CSS.
¿Se considera malo detectar el tamaño del navegador y hacer cambios en CSS con jQuery?
P.ej:
if ($(window).width() < 960) {
//make heaps of CSS changes
}
css
mobile
jquery
optimization
responsive-webdesign
MeltingDog
fuente
fuente
Respuestas:
Por supuesto. Obviamente, sería mejor usar CSS solo, pero si no puedes, usa lo que tienes. Haga todo lo que pueda con CSS y use JS según sea necesario. No estoy seguro de por qué no puede cambiar el CSS existente, pero puede agregar una hoja de estilo con JS.
Fuente: http://christian-fei.com/add-stylesheets-after-the-head-using-javascript/
luego enloquece con las consultas CSS / medios.
O con jQuery:
He hecho 'máscaras' receptivas donde algunas cosas simplemente no eran posibles sin cambiar el DOM. Si no tiene acceso al HTML, la manipulación de JS DOM es a veces la única respuesta.
EDITAR:
Dependiendo de los requisitos visuales de su versión de pantalla pequeña, es posible que se sorprenda de hasta qué punto este fragmento de CSS lo llevará a 'dispositivos móviles'.
Si el desarrollador de CSS original era demasiado aficionado
!important
y no puede acceder al HTML, puede usar jQuery / JS para agregar una ID al cuerpo o contenedor de alto nivel y agregarlo a su selector.fuente
Yo diría que primero intente usar consultas de medios. Un método que encontré más fácil al tratar con un diseño que originalmente era solo para escritorio era este:
Comience con dos hojas de estilo separadas. Uno para el nuevo diseño receptivo y el otro para la versión de escritorio anterior:
Todos los estilos antiguos pueden estar contenidos en el escritorio.css . Mientras tanto, puede comenzar desde cero en mobile.css . Puede descubrir que puede hacer un diseño agradable de una sola columna en ese CSS móvil que también funciona para tabletas.
Este enfoque le permite tener un nuevo comienzo y puede diseñar específicamente solo para móviles y tabletas y no dejar que los estilos de escritorio lleguen y anulen cosas. Puede ocultar / mostrar / colocar elementos según sea necesario solo para dispositivos móviles.
Si realmente necesita modificar el código del escritorio para que funcione con dispositivos móviles y de escritorio, puede refactorizar el marcado. Alternativamente, si encuentra que no puede refactorizar de manera realista el HTML para las versiones responsiva y móvil, puede colocar una clase en el código del escritorio, por ejemplo, la clase "escritorio" y usar CSS en la versión móvil para ocultarlo. Luego escriba un nuevo HTML para esa sección y dele un
class="mobile"
. Luego, póngalo en consecuencia en mobile.css y escóndelo en desktop.css .fuente
Trabajé en un sitio que usaba ese método y tuve problemas con la rotación de la pantalla en dispositivos móviles. Dado que JavaScript solo detectará una vez en la carga de la página, si el usuario gira el dispositivo, no se expandirá al ancho completo como lo haría con las consultas de medios. En ese momento, fue más fácil para mí cambiar a CSS, pero quizás un experto en JS sabría si hay una manera de detectar un cambio en el ancho de la ventana gráfica. Parece que debería haber una manera con AJAX, pero estaría dispuesto a apostar que cualquier cosa que encuentre sería exagerada en lo que respecta al rendimiento, como describe megasteve.
fuente
La capacidad de respuesta y "aparecen correctamente en los teléfonos inteligentes" son tareas completamente diferentes.
No debería ser la principal fuente de estilo. Ese es el trabajo de CSS. Sin embargo, los dos se pueden usar juntos de manera efectiva. En un ejemplo simple, el texto puede tener un estilo diferente dependiendo de los resultados de alguna acción. jQuery se puede usar para cambiar la clase definida por CSS.
fuente
Solíamos usar el popular marco 960.gs css para nuestros sitios.
Queríamos hacerlo receptivo.
Alguien había creado un complemento receptivo basado en JS para los 960 gs, por lo que pensamos por qué no solo usarlo, ya que no tendríamos que hacer ningún cambio en las plantillas del sitio estructural.
Funcionó, pero fue lento en la mayoría de los navegadores, incluidos los buenos. Por lo general, obtendría un "destello de contenido sin estilo" que variaría mucho según la complejidad de la página.
A pesar de que las soluciones JS funcionan, no son ideales, las consultas de medios CSS 3 son la mejor opción si es posible. Al final, simplemente volvimos a hacer las plantillas de nuestro sitio usando Twitter Bootstrap, que se ajustaba muy bien a nuestras necesidades.
Aunque podría ser atractivo tomar atajos, a menudo resulta ser más lento / doloroso a largo plazo.
fuente