jquery 语义-ui 选项卡转换

jquery semantic-ui tab transitions

我正在尝试在选项卡式布局中使用过渡。

我正在研究 Laravel 框架。 我的 js 代码不起作用...

期望的结果:选项卡内容随着转换的实现而出现和消失。

现在:选项卡正确切换,但立即 - 没有过渡。

$('#tabnavigation .item').click(function() {

$('.ui .tab .segment').transition('slide down');
});

我的观点是这样的:

    <a class="item red active" data-tab="first">One</a>
    <a class="item blue" data-tab="second">Two</a>
    <a class="item blue" data-tab="third">Three</a>
    <a class="item blue" data-tab="fourth">Four</a>
    <a class="item blue" data-tab="fifth">Five</a>



  </div>


  <div class="ui tab segment active" data-tab="first">

      @include('widgets._15_elections_introduction')



  </div>
  <div class="ui tab segment" data-tab="second">




       @include('widgets._15_elections_bycandidate')




  </div> {{-- second --}}
  <div class="ui tab segment" data-tab="third">


      @include('widgets._15_elections_byelectoralcommitee')



  </div>

  <div class="ui tab segment" data-tab="fourth">


      @include('widgets._15_elections_add_refine')



  </div>

  <div class="ui tab segment" data-tab="fifth">


      @include('widgets._15_elections_help')



  </div>

有人帮帮我吗?

没有任何反应的原因是因为你的选择器是错误的 - .ui .tab .segment 意味着你正在寻找一个包含 class segment 的元素在具有 class ui 的元素中包含 class tab 的元素。相反,您需要寻找的是一个包含所有这些 class 的元素,这意味着您需要删除空格。如果您想了解有关选择器的更多信息,this 可能是一个不错的起点。

简而言之,将 $('.ui .tab .segment').transition('slide down'); 替换为 $('.ui.tab.segment').transition('slide down'); 将使其有效……嗯,有点。它仍然不会执行您想要的操作,因为在您的 click 事件发生时,选项卡已经显示并且 transition 方法将简单地隐藏它。

为了做你想做的事,你需要:

  1. 隐藏显示的选项卡,因为这在 jQuery 单击事件触发时已经发生。
  2. 显示上一个选项卡,以便使用动画隐藏它。
  3. 在当前选项卡和上一个选项卡上应用转换 - 这将隐藏一个并显示另一个。
  4. 记住当前选项卡,以便您知道在下一个选项卡更改中像以前一样使用它。

下面是执行此操作的代码:

 $(document).ready(function () {
     // remember the tab currently active
     var previous = $('.ui.tab.segment.active');

     $('#tabnavigation .item').tab({
         onVisible: function (e) {
             var current = $('.ui.tab.segment.active');
             // hide the current and show the previous, so that we can animate them
             previous.show();
             current.hide();

             // hide the previous tab - once this is done, we can show the new one
             previous.transition({
                 animation: 'horizontal flip',
                 onComplete: function () {
                     // finally, show the new tab again
                     current.transition('horizontal flip');
                 }
             });

             // remember the current tab for next change
             previous = current;
         }
     });
 });

注意: 我使用了 Semantic UI 的 onVisible 事件而不是点击事件 - 这通常是个好主意,它确保选项卡内容变得可见, 这样我们就可以隐藏它并为其设置动画。

使用这种格式<div class="ui transition transition-type in tab" data-tab="tab-name">

(即) <div class="ui transition scale in tab" data-tab="tab-1">

一切正常。