【问题标题】:Having trouble with html for tabs on website网站上标签的 html 有问题
【发布时间】:2021-04-25 21:19:12
【问题描述】:

我是一个初学者,所以感谢大家耐心等待。我正在尝试在我的网站上嵌入一个非常简单的标签结构。我不确定为什么它不起作用。这是下面的代码。

我猜这与 JS 有关,但同样,我只是对此很陌生。 任何帮助将不胜感激!谢谢!

(为此我使用了 CodePen 上的代码)


<html lang="en" >
<head>

<script>$(function () {

  var activeIndex = $('.active-tab').index(),
      $contentlis = $('.tabs-content li'),
      $tabslis = $('.tabs li');
  
  // Show content of active tab on loads
  $contentlis.eq(activeIndex).show();

  $('.tabs').on('click', 'li', function (e) {
    var $current = $(e.currentTarget),
        index = $current.index();
    
    $tabslis.removeClass('active-tab');
    $current.addClass('active-tab');
    $contentlis.hide().eq(index).show();
   });
});</script>



  <meta charset="UTF-8">
  <title>CodePen - Simple tabs</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
<link rel="stylesheet" href="./style.css">
<style>.tabs {
  margin: 20px;
  padding: 0;
  list-style: none;
  position: relative;
  border-bottom: 1px solid #ccc;
}
.tabs .active-tab {
  border-top: 1px solid #ccc;
  border-left: 1px solid #ccc;
  border-right: 1px solid #ccc;
  border-bottom: none;
  position: relative;
  color: black;
}
.tabs .active-tab:after {
  width: 100%;
  height: 2px;
  position: absolute;
  content: "";
  bottom: -0.1em;
  left: 0;
  background: white;
}
.tabs li {
  display: inline-block;
  cursor: pointer;
  color: #3a5ea7;
  padding: 5px 10px;
}
.tabs li:first-child {
  margin-left: 10px;
}

.tabs-content {
  margin: 20px;
  padding: 0;
  list-style: none;
}
.tabs-content li {
  display: none;
}</style>
</head>
<body>


<!-- partial:index.partial.html -->
<ul class="tabs">
  <li class="active-tab">First tab</li>
    <li>Second tab</li>
    <li>Third tab</li>
</ul>

<ul class="tabs-content">
    <li>Content of first tab</li>
  <li>Content of second tab</li>
  <li>Content of third tab</li>
</ul>
<!-- partial -->


  

</body>
</html>

【问题讨论】:

    标签: javascript html css web tabs


    【解决方案1】:

    那里发生了很多事情。

    乍一看,你不是在使用 JavaScript,而是在使用一个名为 JQuery 的库,所以你需要“导入”它,否则该代码将无法工作。

    它必须放在你的 JQuery 代码之前。

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    

    我建议将您编写的代码放在页面底部的结束正文标记之前

    ---> HERE
    </body>
    

    改进:

    将您的代码分成“模块”或更小的块。

    • style 标签内的所有内容,剪切并粘贴到新文件中,例如 style.css。
    • 脚本标签内的所有内容,剪切并粘贴到新文件中,例如 app.js。
    • 在导入它们之后,JavaScript 文件、结束 body 标记之前(如前所述)以及其他样式旁边的 css 导入。

    所以,你最终会得到这样的结果:

    页面顶部,head 标签内

    ...
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
      <link rel="stylesheet" href="./style.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    </head>
    

    页面底部,关闭正文标记之前

    ...
      <script src="./app.js"></script>
    </body>
    

    【讨论】:

      【解决方案2】:

      您可以通过在 Codepen 环境中单击 settings 来检查正在使用哪些外部源(如 JQuery 或 Bootstrap)。此特定脚本使用JQuery,可以使用在线托管版本 (CDN) 或手动下载,将其导入您的 &lt;head&gt; 并带有 &lt;script&gt; 标签。

      您现在可以使用它:

      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
      

      【讨论】:

      • 感谢您的帮助。这对我有用。
      • 很高兴我能够解决您的问题
      【解决方案3】:

      您可以使用此代码来创建您的简单标签

      (function() {
          'use strict';
          
          var tabMenus,
                  tabContents;
          tabMenus = document.querySelectorAll('.tab_menu_item_link');
          tabContents = document.querySelectorAll('.tab_content');
          
          for (var i = 0; i < tabMenus.length; i++) {
              tabMenus[i].addEventListener('click', function(e) {
                  e.preventDefault();
                  
                  for (var i = 0; i < tabMenus.length; i++) {
                      tabMenus[i].className = 'tab_menu_item_link';
                  }
                  this.className = 'tab_menu_item_link is-active';
                  
                  for (var i = 0; i < tabContents.length; i++) {
                      tabContents[i].className = 'tab_content';
                  }
                  document.getElementById(this.dataset.id).className = 'tab_content is-active';
      
              });
          }
      }());
      body {
        font-size: 14px;
        line-height: 1.5;
        color: #333;
      }
      ul , li {
          padding : 0;
          margin: 0;
          list-style: none
      }
      a {
        text-decoration: none;
        color: #333;
      }
      
      img {
        vertical-align: bottom;
      }
      
      .clearfix {
        display: table;
        clear: both;
      }
      
      .container {
        width: 400px;
        margin: 0 auto;
        padding: 50px 0;
        background: #fff;
      }
      
      .tab_menu {
        width: 100%;
      }
      .tab_menu_item {
        float: left;
        margin-right: 2px;
        text-align: center;
      }
      .tab_menu_item:last-child {
        margin-right: 0;
      }
      .tab_menu_item_link {
        display: block;
        width: 100px;
        padding: 10px;
        background: #fff;
        border-radius: 5px 5px 0 0;
        border: 1px solid #888;
        border-bottom: none;
        box-sizing: border-box;
        color: #888;
        transition: 0.3s;
      }
      .tab_menu_item_link:hover, .tab_menu_item_link.is-active {
        background: #888;
        color: #fff;
      }
      
      .tab_container {
        border: 1px solid #888;
      }
      
      .tab_content {
        padding: 20px;
        display: none;
      }
      .tab_content.is-active {
        display: block;
        -webkit-animation: fade 0.5s ease;
                animation: fade 0.5s ease;
      }
      
      @-webkit-keyframes fade {
        from {
          opacity: 0;
        }
        to {
          opacity: 1;
        }
      }
      
      @keyframes fade {
        from {
          opacity: 0;
        }
        to {
          opacity: 1;
        }
      }
       <div class="container">
          <div class="tab">
                          <ul class="tab_menu clearfix">
                              <li class="tab_menu_item"><a href="#" data-id="about" class="tab_menu_item_link is-active">About</a></li>
                              <li class="tab_menu_item"><a href="#" data-id="works" class="tab_menu_item_link">Works</a></li>
                              <li class="tab_menu_item"><a href="#" data-id="contact" class="tab_menu_item_link">Contact</a></li>
                          </ul>
                          <div class="tab_container">
                              <div class="tab_content is-active" id="about">
                                  <p>some content about ...</p>
                              </div>
                              <div class="tab_content" id="works">
                                  <p>some content works ...</p>
                              </div>
                              <div class="tab_content" id="contact">
                                  <p>some content contact ...</p>
                              </div>
                          </div>
                      </div>
          </div>

      你可以在我的 codepen 中看到这个示例: codepen.io

      【讨论】:

      • 非常感谢您的帮助!
      猜你喜欢
      • 1970-01-01
      • 2021-02-13
      • 2018-06-16
      • 2021-06-17
      • 1970-01-01
      • 2013-09-18
      • 1970-01-01
      • 2018-04-04
      • 1970-01-01
      相关资源
      最近更新 更多