<i id='ANyCZ'><tr id='ANyCZ'><dt id='ANyCZ'><q id='ANyCZ'><span id='ANyCZ'><b id='ANyCZ'><form id='ANyCZ'><ins id='ANyCZ'></ins><ul id='ANyCZ'></ul><sub id='ANyCZ'></sub></form><legend id='ANyCZ'></legend><bdo id='ANyCZ'><pre id='ANyCZ'><center id='ANyCZ'></center></pre></bdo></b><th id='ANyCZ'></th></span></q></dt></tr></i><div id='ANyCZ'><tfoot id='ANyCZ'></tfoot><dl id='ANyCZ'><fieldset id='ANyCZ'></fieldset></dl></div>
  • <legend id='ANyCZ'><style id='ANyCZ'><dir id='ANyCZ'><q id='ANyCZ'></q></dir></style></legend>

  • <small id='ANyCZ'></small><noframes id='ANyCZ'>

      1. <tfoot id='ANyCZ'></tfoot>
        • <bdo id='ANyCZ'></bdo><ul id='ANyCZ'></ul>

        HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)

        时间:2023-12-14
        <tfoot id='1QlEO'></tfoot>
            <tbody id='1QlEO'></tbody>

            <bdo id='1QlEO'></bdo><ul id='1QlEO'></ul>
          • <legend id='1QlEO'><style id='1QlEO'><dir id='1QlEO'><q id='1QlEO'></q></dir></style></legend>

            <small id='1QlEO'></small><noframes id='1QlEO'>

                <i id='1QlEO'><tr id='1QlEO'><dt id='1QlEO'><q id='1QlEO'><span id='1QlEO'><b id='1QlEO'><form id='1QlEO'><ins id='1QlEO'></ins><ul id='1QlEO'></ul><sub id='1QlEO'></sub></form><legend id='1QlEO'></legend><bdo id='1QlEO'><pre id='1QlEO'><center id='1QlEO'></center></pre></bdo></b><th id='1QlEO'></th></span></q></dt></tr></i><div id='1QlEO'><tfoot id='1QlEO'></tfoot><dl id='1QlEO'><fieldset id='1QlEO'></fieldset></dl></div>

                  下面我将详细讲解 HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO) 的完整攻略。

                  1. 理解需求和设计思路

                  首先要明确需求,该动画效果是实现一个具有切换效果的 TAB 栏,可以通过点击 TAB 来切换不同的内容。

                  设计思路:

                  • 使用 HTML 的 ul 和 li 标签来构建基本的 TAB 栏结构
                  • 使用 CSS3 实现动画效果
                  • 使用 JavaScript 实现点击 TAB 可以切换不同内容的功能

                  2. 绘制基本结构

                  在 HTML 文件中添加 ul 和 li 标签,并编写基本的 CSS 样式,设置每个 TAB 的样式。

                  <ul>
                    <li class="tab active">Tab 1</li>
                    <li class="tab">Tab 2</li>
                    <li class="tab">Tab 3</li>
                  </ul>
                  
                  ul {
                    list-style: none;
                    margin: 0;
                    padding: 0;
                  }
                  
                  .tab {
                    display: inline-block;
                    height: 50px;
                    line-height: 50px;
                    padding: 0 20px;
                    cursor: pointer;
                    border: 1px solid #ccc;
                    border-radius: 5px 5px 0 0;
                    margin-right: 10px;
                  }
                  
                  .active {
                    background-color: #fff;
                    border-bottom: none;
                  }
                  

                  此时页面上已经可以看到 TAB 栏的基本结构。

                  3. CSS3 实现动画效果

                  使用 CSS3 的 transform 属性,配合 transition 属性实现动画效果。这里的思路是使用 transform 的 translateX 属性来移动当前活动的 TAB,达到切换效果。

                  首先,在 CSS 中添加以下代码:

                  .tab.active ~ .slide {
                    transform: translateX(calc((100% + 10px) * var(--index)));
                  }
                  

                  这里使用了 CSS3 变量。在 ul 标签上添加 --index 变量来表示当前活动的 TAB 的下标。

                  接下来,添加一个 div,用于实现滑动效果。

                  <div class="slide"></div>
                  

                  设置样式:

                  .slide {
                    position: absolute;
                    bottom: 0;
                    left: 0;
                    height: 3px;
                    width: calc(100% / 3);
                    background-color: #4285f4;
                    transition: transform 0.3s ease-in-out;
                  }
                  

                  这里的宽度使用 calc 函数计算得出,因为本例中有三个 TAB。

                  此时,如果打开页面,已经可以看到一个滑动的效果了。

                  4. JavaScript 实现点击 TAB 切换内容

                  最后一步是通过 JavaScript 实现点击 TAB 切换不同内容的功能。

                  添加以下代码:

                  var tabs = document.querySelectorAll('.tab');
                  var slide = document.querySelector('.slide');
                  var index = 0;
                  
                  tabs.forEach(function(tab, k) {
                    tab.addEventListener('click', function() {
                      index = k;
                      slide.style.setProperty('--index', index);
                      document.querySelector('.tab.active').classList.remove('active');
                      tab.classList.add('active');
                    });
                  });
                  

                  这里的代码比较简单,先获取所有的 TAB 元素和滑动的元素,再循环遍历每个 TAB,为其添加点击事件。在点击事件中,改变变量 --index 的值,并切换 TAB 的类名。

                  至此,一个完整的 HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO) 就完成了。

                  示例说明1

                  如果需要将 TAB 的数量变更为 4,需要改变的地方只有 CSS。

                  首先,在 ul 标签中添加一个 li 标签:

                  <ul>
                    <li class="tab active">Tab 1</li>
                    <li class="tab">Tab 2</li>
                    <li class="tab">Tab 3</li>
                    <li class="tab">Tab 4</li>
                  </ul>
                  

                  然后修改 .slide 标签的宽度:

                  .slide {
                    position: absolute;
                    bottom: 0;
                    left: 0;
                    height: 3px;
                    width: calc(100% / 4);
                    background-color: #4285f4;
                    transition: transform 0.3s ease-in-out;
                  }
                  

                  示例说明2

                  如果需要更改滑动效果的颜色,只需要简单修改样式即可。

                  .slide {
                    position: absolute;
                    bottom: 0;
                    left: 0;
                    height: 3px;
                    width: calc(100% / 3);
                    background-color: #FF0000; /* 修改此处 */
                    transition: transform 0.3s ease-in-out;
                  }
                  
                  上一篇:基于html+css+js实现简易计算器代码实例 下一篇:使用html+css实现页面书本翻页特效

                  相关文章

                  <small id='75VmO'></small><noframes id='75VmO'>

                  <legend id='75VmO'><style id='75VmO'><dir id='75VmO'><q id='75VmO'></q></dir></style></legend>
                • <tfoot id='75VmO'></tfoot>

                    • <bdo id='75VmO'></bdo><ul id='75VmO'></ul>

                      <i id='75VmO'><tr id='75VmO'><dt id='75VmO'><q id='75VmO'><span id='75VmO'><b id='75VmO'><form id='75VmO'><ins id='75VmO'></ins><ul id='75VmO'></ul><sub id='75VmO'></sub></form><legend id='75VmO'></legend><bdo id='75VmO'><pre id='75VmO'><center id='75VmO'></center></pre></bdo></b><th id='75VmO'></th></span></q></dt></tr></i><div id='75VmO'><tfoot id='75VmO'></tfoot><dl id='75VmO'><fieldset id='75VmO'></fieldset></dl></div>