


Les composants collants sont généralement utilisés dans les barres de navigation ou les barres d'outils. Lorsque la page Web défile dans une certaine zone, des éléments tels que la barre de navigation ou la barre d'outils sont fixés en haut ou en bas de la page pour permettre aux utilisateurs d'exécuter rapidement les fonctions. fournis par de tels éléments fonctionnent.
Dans cet article Implémentation améliorée du composant Sticky fournit une version améliorée du composant sticky et applique l'effet de démonstration à son blog. Avec un composant simple comme sticky, nous pouvons l'utiliser pour développer des effets plus riches, tels que la navigation par onglets et la navigation par défilement qui seront présentés dans cet article. La mise en œuvre est simple et l'effet de démonstration est le suivant :
navigation par onglets (correspondant à tab-sticky.html) :
Navigation par défilement (correspond à nav-scroll-sticky.html) :
1. Mise en place de la navigation par onglets
Les exigences pour la navigation par onglets sont les suivantes : lorsque vous cliquez sur un élément de navigation, en plus de changer le contenu de l'onglet, vous devez également contrôler le défilement, placer le contenu de l'onglet à afficher en haut et l'afficher juste en dessous de l'élément collant. Puisque la démo est réalisée avec bootstrap, le composant tab fourni par bootstrap est très simple et facile à utiliser. Nous pouvons effectuer un traitement de contrôle de défilement dans le rappel d'événement de display.bs.tab fourni par le composant tab, donc cet effet est relativement simple. à mettre en œuvre :
<script> var $target = $('#target'); new Sticky('#sticky', { unStickyDistance: 60, target: $target, wait: 1, isFixedWidth: false, getStickyWidth: function($elem) { return $elem.parent()[0].offsetWidth; } }); $('a[data-toggle="tab"]').on('shown.bs.tab', function(e) { window.scrollTo(0, $target[0].getBoundingClientRect().top + getPageScrollTop() + 1); }); function getPageScrollTop() { return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; } </script>
Structure HTML :
2. Implémentation de la navigation par défilement
La navigation par défilement est relativement gênante. Dans le composant onglet, seul le contenu de l'onglet correspondant à l'élément d'onglet actuellement activé sera affiché. Dans la navigation par défilement, tout le contenu à parcourir a été rendu sur la page.
1) Lorsque vous cliquez sur un élément de navigation, contrôlez le défilement de la page et affichez automatiquement le contenu correspondant à l'élément de navigation cliqué en haut, et il doit être affiché juste en dessous de l'élément collant
2) Lorsque la page défile, le style actif est automatiquement ajouté à l'élément de navigation correspondant en fonction du contenu de navigation actuellement affiché.
Bien que cela semble compliqué, la mise en œuvre dans la démo est relativement simple :
<script> var $sticky = $('#sticky'); var $target = $('#target'); new Sticky($sticky, { unStickyDistance: 60, target: $target, wait: 1, isFixedWidth: false, getStickyWidth: function ($elem) { return $elem.parent()[0].offsetWidth; } }); var offsetTop = 60; //实现点击tab项自动滚动到导航内容的效果 $sticky.on('click', 'a', function (e) { e.preventDefault(); var $this = $(e.currentTarget); var $parent = $this.parent(); if($parent.hasClass('active')) return; $sticky.find('li.active').removeClass('active'); $parent.addClass('active'); var target = $this.data('target') || $this.attr('href'); var $target = $(target); window.scrollTo(0, Math.floor($target[0].getBoundingClientRect().top) + getPageScrollTop() - offsetTop); }); /** * Math.floor是解决rect.top或rect.bottom带小数问题 */ //实现滚动时根据当前显示的导航内容自动给相应的导航项添加active样式 $(window).scroll(throttle(function(){ var $curItem = $sticky.find('a').filter('[href=' + getCurTarget() + ']'); var $parent = $curItem.parent(); if($parent.hasClass('active')) return; //最后的blur是为了去掉:active及:focus伪类的样式 $sticky.find('li.active').removeClass('active').find('a').trigger('blur'); $parent.addClass('active'); },1)); //获取当前显示的导航内容元素的id function getCurTarget() { for(var targets = ['#First', '#Second', '#Third'], i = 0, l = targets.length; i < l; i++) { var curRect = $(targets[i])[0].getBoundingClientRect(); if(Math.floor(curRect.top) <= offsetTop && Math.floor(curRect.bottom) > offsetTop) { return targets[i]; } } return targets[0]; } function getPageScrollTop() { return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; } //这个函数在实际工作中是应该抽出来的,否则sticky.js里面还有一份重复的 function throttle(func, wait) { var timer = null; return function () { var self = this, args = arguments; if (timer) clearTimeout(timer); timer = setTimeout(function () { return typeof func === 'function' && func.apply(self, args); }, wait); } } </script>
Structure HTML :
3.Résumé
Cet article combine le composant sticky pour fournir deux implémentations d'effets de navigation, compatibles avec IE9+, Firefox et Chrome. Si vous êtes intéressé, vous pouvez télécharger le code source et en savoir plus. Lors de l'implémentation de la navigation par onglets, elle est très simple à mettre en œuvre grâce au composant bs tab. Il n'est pas nécessaire d'encapsuler les composants sticky et tab pour former un nouveau composant. Après tout, le code d'implémentation de l'effet est relativement simple. Lors de l'implémentation de la navigation par défilement, étant donné que le composant onglet n'est pas utilisé, les deux points de demande de la navigation par défilement sont implémentés séparément. Dans les situations réelles, ces deux fonctions peuvent être encapsulées dans deux composants indépendants ou dans un seul composant. être écrit aussi simplement que la navigation par onglets.Cependant, cet article ne présente pas en profondeur la méthode d'écriture de ces deux composants, car ce n'est pas le contenu principal de cet article.Bien que je veuille vraiment le faire, j'en écrirai certainement plus. l'avenir. Ce blog présentera ces deux composants. C'est tout simplement une perte d'opportunité de ne pas construire une roue pour une chose simple. En atteignant ces deux effets, il y a aussi deux gains :
1) Firefox et IE, laissez d'abord la page Web, puis actualisez-la. Bien que la page Web soit toujours affichée à la position actualisée, l'événement de défilement ne sera pas déclenché. Par conséquent, si vous créez des composants liés au défilement. à l'avenir, vous devez prendre l'initiative lors de l'initialisation du composant. Un rappel lié au défilement
.
2) La valeur liée à l'objet rect renvoyée par getBoundingClientRect peut être un nombre décimal sous IE et Firefox, tel que 60.2222299999. Un tel nombre peut ne pas correspondre à la situation attendue lors du jugement, entraînant des BUG inattendus si vous. ne sont pas particulièrement stricts, vous pouvez utiliser Math.floor pour arrondir ces valeurs puis les utiliser à des fins de calcul ou de jugement. Par exemple, dans l'implémentation de la navigation par défilement, la valeur de rect.top est 60,2222299999 et la valeur de offsetTop est 60. Il est prévu que la condition curRect.top

C et JavaScript réalisent l'interopérabilité via WebAssembly. 1) Le code C est compilé dans le module WebAssembly et introduit dans un environnement JavaScript pour améliorer la puissance de calcul. 2) Dans le développement de jeux, C gère les moteurs de physique et le rendu graphique, et JavaScript est responsable de la logique du jeu et de l'interface utilisateur.

JavaScript est largement utilisé dans les sites Web, les applications mobiles, les applications de bureau et la programmation côté serveur. 1) Dans le développement de sites Web, JavaScript exploite DOM avec HTML et CSS pour réaliser des effets dynamiques et prend en charge des cadres tels que JQuery et React. 2) Grâce à la réactnative et ionique, JavaScript est utilisé pour développer des applications mobiles multiplateformes. 3) Le cadre électronique permet à JavaScript de créer des applications de bureau. 4) Node.js permet à JavaScript d'exécuter le côté du serveur et prend en charge les demandes simultanées élevées.

Python est plus adapté à la science et à l'automatisation des données, tandis que JavaScript est plus adapté au développement frontal et complet. 1. Python fonctionne bien dans la science des données et l'apprentissage automatique, en utilisant des bibliothèques telles que Numpy et Pandas pour le traitement et la modélisation des données. 2. Python est concis et efficace dans l'automatisation et les scripts. 3. JavaScript est indispensable dans le développement frontal et est utilisé pour créer des pages Web dynamiques et des applications à une seule page. 4. JavaScript joue un rôle dans le développement back-end via Node.js et prend en charge le développement complet de la pile.

C et C jouent un rôle essentiel dans le moteur JavaScript, principalement utilisé pour implémenter des interprètes et des compilateurs JIT. 1) C est utilisé pour analyser le code source JavaScript et générer une arborescence de syntaxe abstraite. 2) C est responsable de la génération et de l'exécution de bytecode. 3) C met en œuvre le compilateur JIT, optimise et compile le code de point chaud à l'exécution et améliore considérablement l'efficacité d'exécution de JavaScript.

L'application de JavaScript dans le monde réel comprend un développement frontal et back-end. 1) Afficher les applications frontales en créant une application de liste TODO, impliquant les opérations DOM et le traitement des événements. 2) Construisez RestulAPI via Node.js et Express pour démontrer les applications back-end.

Les principales utilisations de JavaScript dans le développement Web incluent l'interaction client, la vérification du formulaire et la communication asynchrone. 1) Mise à jour du contenu dynamique et interaction utilisateur via les opérations DOM; 2) La vérification du client est effectuée avant que l'utilisateur ne soumette les données pour améliorer l'expérience utilisateur; 3) La communication de rafraîchissement avec le serveur est réalisée via la technologie AJAX.

Comprendre le fonctionnement du moteur JavaScript en interne est important pour les développeurs car il aide à écrire du code plus efficace et à comprendre les goulots d'étranglement des performances et les stratégies d'optimisation. 1) Le flux de travail du moteur comprend trois étapes: analyse, compilation et exécution; 2) Pendant le processus d'exécution, le moteur effectuera une optimisation dynamique, comme le cache en ligne et les classes cachées; 3) Les meilleures pratiques comprennent l'évitement des variables globales, l'optimisation des boucles, l'utilisation de const et de locations et d'éviter une utilisation excessive des fermetures.

Python convient plus aux débutants, avec une courbe d'apprentissage en douceur et une syntaxe concise; JavaScript convient au développement frontal, avec une courbe d'apprentissage abrupte et une syntaxe flexible. 1. La syntaxe Python est intuitive et adaptée à la science des données et au développement back-end. 2. JavaScript est flexible et largement utilisé dans la programmation frontale et côté serveur.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

PhpStorm version Mac
Le dernier (2018.2.1) outil de développement intégré PHP professionnel

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Version Mac de WebStorm
Outils de développement JavaScript utiles