Maison >interface Web >js tutoriel >Comment implémenter le chargement paresseux du contenu des onglets à l'aide de JavaScript ?

Comment implémenter le chargement paresseux du contenu des onglets à l'aide de JavaScript ?

WBOY
WBOYoriginal
2023-10-18 09:51:111021parcourir

如何使用 JavaScript 实现选项卡内容的懒加载功能?

Comment utiliser JavaScript pour implémenter le chargement paresseux du contenu des onglets ?

Le chargement paresseux est une stratégie visant à optimiser les performances des pages Web, particulièrement adaptée aux situations où il existe de nombreux éléments de page tels que des onglets. Lorsque la page se charge, seul le contenu de l'onglet actuel est chargé et le contenu correspondant est chargé lorsque d'autres onglets sont cliqués, réduisant ainsi le temps de chargement de la page et la surcharge des ressources. Cet article présentera en détail comment utiliser JavaScript pour implémenter la fonction de chargement différé du contenu des onglets et fournira des exemples de code spécifiques.

  1. Structure HTML

Tout d'abord, nous devons fournir une structure HTML qui contient les zones de navigation et de contenu de l'onglet. Voici un exemple simple :

<div class="tabs">
  <ul class="tab-nav">
    <li data-tab="tab1" class="active">选项卡1</li>
    <li data-tab="tab2">选项卡2</li>
    <li data-tab="tab3">选项卡3</li>
  </ul>
  
  <div class="tab-content">
    <div data-tab="tab1" class="tab-panel active">
      <!-- 选项卡1的内容 -->
    </div>
    <div data-tab="tab2" class="tab-panel">
      <!-- 选项卡2的内容 -->
    </div>
    <div data-tab="tab3" class="tab-panel">
      <!-- 选项卡3的内容 -->
    </div>
  </div>
</div>

Dans le code ci-dessus, nous avons utilisé l'élément ff6d136ddc5fdfeffaf53ff6ee95f185 pour présenter la navigation des onglets, chaque onglet possède un data-tab code>, la valeur est la valeur de l'attribut <code>data-tab de la zone de contenu correspondante. La zone de contenu utilise l'élément dc6dce4a544fdca2df29d5ac0ea9906b et ajoute l'attribut data-tab et le nom de classe tab-panel, où tab -panel est utilisé pour contrôler l'affichage initial du contenu de l'onglet. ff6d136ddc5fdfeffaf53ff6ee95f185 元素来呈现选项卡的导航,每个选项卡都有一个 data-tab 属性,值为对应内容区域的 data-tab 属性值。内容区域使用了 dc6dce4a544fdca2df29d5ac0ea9906b 元素,并添加了 data-tab 属性和 tab-panel 类名,其中 tab-panel 类名用于控制初始显示的选项卡内容。

  1. CSS 样式

接下来,我们需要为选项卡提供一些基本的样式。

.tabs {
  width: 100%;
}

.tab-nav {
  display: flex;
  justify-content: space-around;
  padding: 0;
  margin: 0;
  list-style: none;
}

.tab-nav li {
  cursor: pointer;
  padding: 10px 20px;
  background-color: #f1f1f1;
}

.tab-nav li.active {
  background-color: #c1c1c1;
}

.tab-panel {
  display: none;
  padding: 20px;
}

.tab-panel.active {
  display: block;
}

在上述代码中,我们为选项卡导航和内容区域提供了一些基本的样式,通过 active 类名控制当前选项卡的显示效果。

  1. JavaScript 功能实现

最后,我们需要使用 JavaScript 实现选项卡内容的懒加载功能。我们将通过监听选项卡的点击事件来实现该功能。

(function() {
  var tabNav = document.querySelector('.tab-nav');
  var tabPanels = document.querySelectorAll('.tab-panel');

  tabNav.addEventListener('click', function(e) {
    var targetTab = e.target.getAttribute('data-tab');

    if (targetTab) {
      Array.from(tabNav.children).forEach(function(tab) {
        tab.classList.remove('active');
      });

      e.target.classList.add('active');

      Array.from(tabPanels).forEach(function(panel) {
        panel.classList.remove('active');
      });

      var targetPanel = document.querySelector('[data-tab="' + targetTab + '"]');
      targetPanel.classList.add('active');
    }
  });
})();

在上述代码中,我们使用了立即执行函数来获取选项卡导航和内容区域的 DOM 元素,并为选项卡导航添加了点击事件监听器。当点击选项卡时,会触发 click 事件,并获取目标选项卡的 data-tab 属性值。然后,通过添加和移除 active 类名来控制选项卡的切换效果。最后,根据目标选项卡的 data-tab 属性值获取对应的内容区域,并添加 active

    Styles CSS

    Ensuite, nous devons fournir un style de base pour les onglets.

    rrreee

    Dans le code ci-dessus, nous fournissons quelques styles de base pour la navigation par onglets et la zone de contenu, et contrôlons l'effet d'affichage de l'onglet actuel via le nom de la classe active.

      🎜Implémentation de la fonction JavaScript🎜🎜🎜Enfin, nous devons utiliser JavaScript pour implémenter la fonction de chargement paresseux du contenu des onglets. Nous allons implémenter cette fonctionnalité en écoutant l'événement click de l'onglet. 🎜rrreee🎜Dans le code ci-dessus, nous avons utilisé la fonction d'exécution immédiate pour obtenir les éléments DOM de la navigation par onglets et de la zone de contenu, et avons ajouté un écouteur d'événement de clic pour la navigation par onglets. Lorsqu'un onglet est cliqué, l'événement click est déclenché et la valeur de l'attribut data-tab de l'onglet cible est obtenue. Ensuite, contrôlez l'effet de changement d'onglet en ajoutant et en supprimant le nom de la classe active. Enfin, obtenez la zone de contenu correspondante en fonction de la valeur de l'attribut data-tab de l'onglet cible, et ajoutez le nom de la classe active pour afficher le contenu de l'onglet cible. 🎜🎜De cette façon, nous avons implémenté avec succès la fonction de chargement paresseux du contenu des onglets. Chaque fois que vous cliquez sur un onglet, seul le contenu correspondant est chargé, optimisant ainsi les performances de la page. 🎜🎜Résumé : 🎜🎜Le chargement paresseux du contenu des onglets est une stratégie courante pour optimiser les performances des pages Web. En écoutant l'événement click de l'onglet, nous ne pouvons charger que le contenu de l'onglet actuel, réduisant ainsi le temps de chargement des pages et la surcharge des ressources. Cet article fournit un processus de mise en œuvre détaillé et fournit des exemples de code spécifiques. J'espère que cet article vous aidera à comprendre et à appliquer la fonction de chargement paresseux du contenu des onglets. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn