Je me retrouve souvent à montrer/masquer des éléments avec jQuery, par exemple une simple zone de contenu à onglets où le premier onglet est visible et les autres ne sont pas affichés avec le javascript. Je sais que ce n'est pas une bonne pratique de masquer ceux qui sont initialement cachés en utilisant CSS (affichage: aucun) et ensuite montrer les bons avec JS car les utilisateurs non-JS ne verront jamais rien. Donc, par défaut, je montre tout et puis cache les pertinentes avec JS. En procédant ainsi, les éléments cachés se chargeront et ne se cacheront que lorsque le document sera prêt. Comment puis-je arrêter cela? Y a-t-il un moyen de le faire d'une manière qui se dégradera gracieusement, mais aussi de ne pas avoir d'éléments apparaissant pendant le chargement, puis de disparaître rapidement car cela semble un peu foireux.Amélioration progressive - ne pas masquer les éléments avec CSS
Répondre
quelques réflexions ...
Si vous ne me dérange pas d'être jonché jQuery sur toute la page plutôt que d'être tous dans un fichier séparé, vous pouvez appeler $ (« # divToHide »). Cacher () immédiatement après l'apparition de l'élément. Pas très bonne pratique cependant. Bien que cela dépende du cas d'utilisation, si vous êtes en grande partie un concepteur/créateur d'un site de brochure de 5 pages, vous devriez choisir ce qui est bon pour vous!
Ou si vous êtes un peu plus un technicien, vous pourriez aimer déconner .live()/.livequery()
et attraper l'insertion de l'élément avec JS et cacher est tout de suite. Voir ce post Is there a jquery event that fires when a new node is inserted into the dom?
Malheureusement, la façon dont le Javascript fonctionne, cela ne semble pas être possible. Il y aura toujours être une fraction de seconde entre la première image rendue et au moment où le JavaScript pour masquer l'élément est exécutéI was wrong about that, jQuery seems to be able to do that. Donc, CSS est le meilleur moyen pour cela. Heureusement, vous pouvez ajouter une feuille de style CSS alternatif dans une balise <noscript>
infâme:
<style type="text/css">
#jquery-thing {
display: none;
}
</style>
<noscript>
<style type="text/css">
#jquery-thing {
display: block !important;
}
</style>
</noscript>
Voici le lien jsFiddle: http://jsfiddle.net/kylewlacy/dbWuc/
Pas tout à fait vrai car vous pouvez utiliser 'livequery' de' jQuery' pour intercepter un noeud ajouté (et le modifier ici), mais votre solution est bonne. J'aime que cette approche vous donne un moyen facile de mettre en place une feuille de style séparée pour tous les CSS que vous voulez être différent entre les navigateurs de script et de no-script. – Thor84no
C'est intéressant ... je ne savais pas que jQuery pouvait faire ça! –
merci pour cela, l'option css ressemble à une bonne option de repli – artparks
- 1. amélioration progressive - Node.js, Backbone.js
- 2. Amélioration progressive pour javascript?
- 3. php & jquery: amélioration progressive
- 4. Menu déroulant avec jQuery (amélioration progressive)
- 5. Amélioration progressive avec YUI3 (Y.App) et Symfony2
- 6. benchmark threejs et amélioration progressive
- 7. Amélioration progressive et état d'affichage initial
- 8. ASP.Net MVC, AJAX et amélioration progressive
- 9. Amélioration progressive/Dégradation gracieuse et applications web
- 10. amélioration progressive sur le côté serveur?
- 11. Amélioration progressive pour les images de chargement paresseux (Javascript)?
- 12. Amélioration progressive pour les tâches de longue durée
- 13. Amélioration progressive, comportement lorsque les pages ne sont pas encore complètement chargées
- 14. Masquer Div avec CSS ne fonctionne pas?
- 15. Masquer les éléments non marqués dans CSS
- 16. Les pseudo-éléments CSS ne fonctionnent pas avec ng-repeat?
- 17. IE ne rend pas les éléments avec CSS linéaire
- 18. Masquer les éléments dans Sencha Touch mais conserver l'espacement CSS
- 19. Comment masquer les lignes d'axe avec CSS?
- 20. Impossible de masquer les éléments de CSS en utilisant ASP.NET4
- 21. Dégradation progressive avec JSON.Parse
- 22. Bootstrap css aligner les éléments horizontaux ne fonctionne pas correctement
- 23. css hover ne fonctionne pas pour les éléments précédents
- 24. CSS ne sélecteur exclut tous les éléments
- 25. IE6 - CSS - les éléments ne flottent pas correctement
- 26. JavaScript ne fonctionne pas - Éléments CSS incorrect?
- 27. jQuery masquer/afficher les éléments
- 28. css inline ne fonctionne pas avec plusieurs éléments
- 29. CSS ne fonctionne pas sur tous les éléments
- 30. CSS stationnaire ne fonctionne pas sur les éléments cachés?
je me crois un peu comme un technophile en herbe (ha!) Aura ainsi un Regardez les fonctions en direct que vous mentionnez. Merci. – artparks