J'ai été chargé de mettre à jour un site pour le rendre réactif et apparaître correctement sur les téléphones intelligents. Malheureusement, le site dans sa forme actuelle n'est pas très facile à travailler - je ne peux pas simplement changer le CSS.
Est-il considéré comme mauvais de détecter la taille du navigateur et d'effectuer les modifications CSS avec jQuery?
Par exemple:
if ($(window).width() < 960) {
//make heaps of CSS changes
}
css
mobile
jquery
optimization
responsive-webdesign
MeltingDog
la source
la source
Réponses:
Sûr. De toute évidence, il serait préférable d'utiliser CSS seul, mais si vous ne le pouvez pas, utilisez ce que vous avez. Faites autant que vous le pouvez avec CSS et utilisez JS au besoin. Vous ne savez pas pourquoi vous ne pouvez pas modifier le CSS existant, mais vous pouvez ajouter une feuille de style avec JS.
Source: http://christian-fei.com/add-stylesheets-after-the-head-using-javascript/
puis devenez fou avec les requêtes CSS / médias.
Ou avec jQuery:
J'ai fait des «skins» réactifs où certaines choses n'étaient tout simplement pas possibles sans changer le DOM. Si vous n'avez pas accès au HTML, la manipulation JS DOM est parfois la seule réponse.
EDIT:
Selon les exigences visuelles de votre version pour petit écran, vous pourriez être surpris de voir jusqu'où cet extrait CSS vous aidera à devenir «mobile friendly».
Si le développeur CSS d'origine aimait trop
!important
et que vous ne pouvez pas accéder au HTML, vous pouvez utiliser jQuery / JS pour ajouter un ID au corps ou au conteneur de haut niveau et l'ajouter à votre sélecteur.la source
Je dirais d'abord essayer d'utiliser les requêtes multimédias. Une méthode que j'ai trouvée plus facile quand il s'agissait d'un design qui n'était à l'origine que pour le bureau était la suivante:
Commencez avec deux feuilles de style distinctes. Un pour la nouvelle conception réactive et l'autre pour l'ancienne version de bureau:
Tous les anciens styles peuvent être contenus dans desktop.css . Pendant ce temps, vous pouvez recommencer à zéro dans le mobile.css . Vous pouvez trouver que vous pouvez faire une belle mise en page sur une seule colonne dans ce CSS mobile qui fonctionne également pour les tablettes.
Cette approche vous permet de prendre un nouveau départ et vous pouvez créer un style spécifiquement pour les mobiles et les tablettes et ne pas laisser les styles de bureau passer à travers et remplacer les choses. Vous pouvez masquer / afficher / positionner des éléments comme requis uniquement pour les mobiles.
Si vous avez vraiment besoin de modifier le code du bureau pour le faire fonctionner avec le mobile et le bureau, vous pouvez refactoriser le balisage. Alternativement, si vous trouvez que vous ne pouvez pas refactoriser de manière réaliste le HTML pour les versions réactives et mobiles, vous pouvez mettre une classe sur le code du bureau, par exemple la classe "bureau" et utiliser CSS dans la version mobile pour le masquer. Ensuite, écrivez du nouveau HTML pour cette section et donnez-lui un
class="mobile"
. Ensuite, stylisez- le en conséquence dans mobile.css et cachez-le dans desktop.css .la source
J'ai travaillé sur un site qui utilisait cette méthode et j'ai eu des problèmes avec la rotation de l'écran sur les appareils mobiles. Étant donné que JavaScript ne détectera qu'une seule fois au chargement de la page, si l'utilisateur fait pivoter l'appareil, il ne se développera pas sur toute la largeur comme il le fera avec les requêtes multimédias. Il était plus facile pour moi à l'époque de passer au CSS, mais peut-être qu'un expert JS saurait s'il existe un moyen de détecter un changement dans la largeur de la fenêtre d'affichage. Il semble qu'il devrait y avoir un moyen avec AJAX, mais je serais prêt à parier que tout ce que vous avez trouvé serait exagéré en termes de performances, comme megasteve le décrit.
la source
La réactivité et «apparaître correctement sur les téléphones intelligents» sont des tâches complètement différentes.
Il ne devrait pas être la principale source de style. C'est le travail de CSS. Cependant, les deux peuvent être utilisés ensemble efficacement. Dans un exemple simple, le texte peut être stylé différemment selon les résultats d'une action. jQuery peut être utilisé pour changer la classe définie CSS.
la source
Nous avions l'habitude d'utiliser le framework css populaire 960.gs pour nos sites.
Nous voulions le rendre réactif.
Quelqu'un avait créé un plugin réactif basé sur JS pour les 960 gs , nous avons donc pensé hay pourquoi ne pas simplement l'utiliser car nous n'aurions pas à apporter de modifications aux modèles de site structurel.
Cela a fonctionné mais était lent dans la plupart des navigateurs, y compris les bons. Vous obtiendrez généralement un «flash de contenu non stylisé» qui varierait considérablement en fonction de la complexité de la page.
Malgré le fait que les solutions JS fonctionnent, elles ne sont pas idéales, les requêtes média CSS 3 sont le meilleur choix si possible. En fin de compte, nous avons juste refait nos modèles de site en utilisant Twitter Bootstrap, ce qui était très bien adapté à nos besoins.
Bien qu'il puisse être intéressant de prendre des raccourcis, cela s'avère souvent plus long / douloureux à long terme.
la source