>  기사  >  웹 프론트엔드  >  jQuery는 탭 전환 effect_jquery의 간단한 데모를 구현합니다.

jQuery는 탭 전환 effect_jquery의 간단한 데모를 구현합니다.

WBOY
WBOY원래의
2016-05-16 15:30:181309검색

본 글의 예시는 jQuery의 탭 전환 효과에 대한 간단한 시연으로, 전적으로 저의 생각과 구현 과정이며, 참고용으로 공유합니다. 세부 내용은 다음과 같습니다.

처음에 내 HTML 코드 프레임은 다음과 같았습니다.

<div class="tabs">  
  <ul>
   <li class="acss" data-box="#panel-1">标签1</li>
   <li class="bcss" data-box="#panel-2">标签2</li>
   <li class="bcss" data-box="#panel-3">标签3</li>
  </ul>
  <div id="panel-1">内容111111</div>
  <div id="panel-2" style="display:none;">内容222222</div>
  <div id="panel-3" style="display:none;">内容333333</div>
</div>

나중에 다음으로 변경되었습니다.

<dl class="tabs">
  <dt>
   <a class="acss" href="#panel-1">标签1</a>
   <a class="bcss" href="#panel-2">标签2</a>
   <a class="bcss" href="#panel-3">标签3</a>
  </dt>
  <dd id="panel-1">内容1</dd>
  <dd id="panel-2" style="display:none;">内容2</dd>
  <dd id="panel-3" style="display:none;">内容3</dd>
 </dl>

이렇게 변경한 이유는 페이지 레이아웃에서 dl dt dd가 div ul li보다 덜 사용되어 더 나은 격리를 달성할 수 있다고 생각하기 때문입니다. js를 사용하여 dl dt dd 객체를 작동하면 페이지의 다른 요소에 미치는 영향이 줄어듭니다. 또한 li 태그의 data-box 속성을 사용자 정의할 필요가 없습니다. 이는 페이지에 더 가깝습니다. 글쓰기 기준. 그리고 전체적인 느낌은 위의 것보다 이 구조가 더 좋습니다.
플러그인 구현 코드는 다음과 같습니다.

(function ($) {
   $.fn.Tabs = function (options) {
    //默认参数设置
    var settings = {
     beforeCss: "bcss", //激活前样式名
     afterCss: "acss", //激活后样式名
     model: "mouseover" //切换方式("mouseover"或者"click")
    };

    //不为空,则合并参数
    if (options)
     $.extend(settings, options);

    //获取a标签集合
    var arr_a = $("> dt > a", this);

    //给a标签分别绑定事件
    arr_a.each(function () {
     $(this).bind(settings.model, function (event) {
              //去除a标签的锚点跳转
         event.preventDefault();
      //样式控制
      $(this).removeClass().addClass(settings.afterCss)
      .siblings("a").removeClass().addClass(settings.beforeCss);
      //隐藏与显示控制
      var dd_id = $(this).attr("href");
      $(dd_id).show().siblings("dd").hide();
     });
    });

    //遵循链式原则
    return this.each(function () { });
   };
})(jQuery);

가벼워진다고 하는 이유는 코드의 양이 정말 작고 매우 간단하기 때문입니다. 댓글이 추가되었습니다. 모두가 이해할 수 있다고 믿습니다.

설정의 모델을 사용하여 전환 방법을 제어합니다.

  • "클릭"하면 클릭하여 전환하세요.
  • "마우스오버" 상태에서는 마우스가 안으로 미끄러져 들어가 전환됩니다.

처음에는 마우스 슬라이드인 전환을 구현하기 위해 hover를 사용하고 싶었지만 hover가 바인드 바인딩을 지원하지 않는 것을 발견했습니다. hover는 mouseover 이벤트를 캡슐화하는 jquery의 산물이므로 실제 이벤트가 아니므로 바인딩될 수 없습니다.
데모는 다음과 같습니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title></title>
 <style type="text/css">
  *
  {
   margin: 0;
   padding: 0;
  }    
  .tabs
  {
   width: 504px;
   margin: 50px auto;
   }
   
   .acss,.bcss
   {   
   text-decoration:none;
   line-height: 35px;
   font-size: 14px;
   padding:8px 15px;    
   }
   
   .bcss
   {
    background-color: #D4D4D4;
    border-bottom:1px solid white;
    }
   .acss
   {
    background-color: orange;
    border-bottom:1px solid orange;
    }   
   .tabs dd
   {
   width: 500px;
   height: 300px;
   border: 1px solid orange;
   text-align: center;
   line-height: 300px;
   }
 </style>
</head>
<body>
 
 <dl class="tabs" id="tabs1">
  <dt>
   <a class="acss" href="#panel-1">标签1</a>
   <a class="bcss" href="#panel-2">标签2</a>
   <a class="bcss" href="#panel-3">标签3</a>
  </dt>
  <dd id="panel-1"><h1>鼠标滑入切换</h1></dd>
  <dd id="panel-2" style="display:none;">内容2</dd>
  <dd id="panel-3" style="display:none;">内容3</dd>
 </dl> 
 <dl class="tabs" id="tabs2">
  <dt>
   <a class="acss" href="#panel-4">标签1</a><!--默认第一个激活-->
   <a class="bcss" href="#panel-5">标签2</a>
   <a class="bcss" href="#panel-6">标签3</a>
  </dt>
  <dd id="panel-4"><h1>鼠标点击切换</h1></dd><!--默认第一个显示-->
  <dd id="panel-5" style="display:none;">内容2</dd>
  <dd id="panel-6" style="display:none;">内容3</dd>
 </dl>

 <script src="../js/jquery-1.4.1.min.js" type="text/javascript"></script>
 <script src="../js/jquery.similar.Tabs.js" type="text/javascript"></script>
 <script type="text/javascript">
  $("#tabs1").Tabs(); //默认鼠标滑入切换
  $("#tabs2").Tabs({model:"click"}); //设置为点击切换
 </script>
</body>
</html>

렌더링은 다음과 같습니다.

이 기사가 jquery 프로그래밍을 배우는 모든 사람에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.