zoukankan      html  css  js  c++  java
  • jQuery插件实例四:手风琴效果[无动画版]

    手风琴效果就是内容的折叠与打开,在这个插件中,使用了三种数据来源:1、直接写在DOM结构中;2、将数据写在配置项中;3、从Ajax()中获取数据。在这一版中,各项的切换没有添加动画效果,在下一版中会是有动画效果的。

    在这个插件中,CSS和JS的配置非常重要,需要特别注意。另外,加个思考,请先看完后再想这个问题:当点击其中某项时,给width直接添加animate是否合适,当快速在其上移动时,如何保证效果?

    效果图预览

    插件JS

    accordionB.js

     1 ;
     2 (function ($, window, document, undefined) {
     3     var defaults = {
     4         'isajax': false, //是否从ajax加载数据
     5         'isDom': true, //是否是DOM数据,即直接写在DOM结构中,为默认项
     6         'isConfiguration': false,//是否是配置数据
     7         'imglist': [],//配置数据
     8         'ajaxurl': ''
     9     };
    10 
    11     $.fn.nhsdAccordion = function (options) {
    12         var $parentDiv = $(this);
    13         var $opts = $.extend({}, defaults, options);
    14         var $mouseoverTile = "";
    15 
    16         function initDom() {
    17             $parentDiv.html("");
    18             var $ul = $('<ul></ul>', { 'class': 'acdul' }).appendTo($parentDiv);
    19             for (var i = 0, j = $opts.imglist.length; i < j; i++) {
    20                 var temp = $opts.imglist[i];
    21                 var $li;
    22                 if (i == 0) {
    23                     $li = $('<li></li>', { 'style': '252px' }).appendTo($ul);
    24                 } else {
    25                     $li = $('<li></li>', { 'style': '79px' }).appendTo($ul);
    26                 }
    27                 var $img = $('<img />', { 'src': temp.src, 'title': temp.title }).appendTo($li);
    28                 var $tit = $('<span></span>').html(temp.title).appendTo($li);
    29             }
    30             liEvent();
    31         }
    32 
    33         function liEvent() {
    34             $(".acdul li").bind("click", function () {
    35                 $mouseoverTile = $(this).find('img').attr('title');
    36                 $(this).find('img').removeAttr('title');
    37                 $(this).parent().find('li').attr('style', '80px');
    38                 $(this).attr('style', '252px');
    39             }).bind('mouseout', function () {
    40                 $(this).find('img').attr('title', $mouseoverTile);
    41             });
    42         }
    43 
    44         function initAjax() {
    45             $.ajax({
    46                 type: 'get',
    47                 url: $opts.ajaxurl,
    48                 cache: false,
    49                 dataType: 'json',
    50                 beforeSend: function () { },
    51                 success: function (d) {
    52                     $opts.imglist = d;
    53                     initDom();
    54                 },
    55                 error: function () { }
    56             });
    57         }
    58 
    59         if ($opts.isajax == true) {
    60             initAjax();
    61         } else if ($opts.isConfiguration == true) {
    62             initDom();
    63         } else if ($opts.isDom == true) {
    64             liEvent();
    65         }
    66 
    67         return this;
    68     }
    69 })(jQuery, window, document);

    CSS样式

    accordionB.css

     1 /* CSS Document */
     2 
     3 /*手风琴效果CSS*/
     4 .accordionDiv {
     5     width: 660px;
     6     height: 400px;
     7     margin: 0 auto;
     8     position: relative;
     9     overflow: hidden;
    10     top: 50px;
    11 }
    12 
    13 .acdul {
    14     position: absolute;
    15 }
    16 
    17     .acdul li {
    18         display: inline-block;
    19         float: left;
    20         cursor: pointer;
    21         position: relative;
    22         overflow: hidden;
    23         margin-left: 1px;
    24         font-size: 20px;
    25         color: #ffffff;
    26         font-weight: bold;
    27     }
    28 
    29     .acdul img {
    30         float: left;
    31         position: relative;
    32         display: inline-block;
    33     }
    34 
    35     .acdul span {
    36         float: left;
    37         position: absolute;
    38         display: block;
    39         width: 22px;
    40         margin: 5px 0 0 5px;
    41         z-index: 100;
    42     }

    HTML页面

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <meta name="viewport" http-equiv="Content-Type" content="text/html; charset=utf-8;width=device-width,initial-scale=1;" />
     5 <title>无标题文档</title>
     6 <link rel="stylesheet" type="text/css" href="../CSS/global.css"/>
     7 <link rel="stylesheet" type="text/css" href="../CSS/accordionB.css"/>
     8 <script type="text/javascript" src="../Script/jquery-1.9.1.min.js"></script>
     9 <script type="text/javascript" src="../Script/accordionB.js"></script>
    10 <script type="text/javascript">
    11         $(document).ready(function () {
    12             //var dataimglist = [
    13             //        {
    14             //            'title': '手风琴效果图一',
    15             //            'src': '/Images/accordion/1.png'
    16             //        }, {
    17             //            'title': '手风琴效果图二',
    18             //            'src': '/Images/accordion/2.png'
    19             //        }, {
    20             //            'title': '手风琴效果图三',
    21             //            'src': '/Images/accordion/3.png'
    22             //        }, {
    23             //            'title': '手风琴效果图四',
    24             //            'src': '/Images/accordion/4.png'
    25             //        }, {
    26             //            'title': '手风琴效果图五',
    27             //            'src': '/Images/accordion/5.png'
    28             //        }, {
    29             //            'title': '手风琴效果图六',
    30             //            'src': '/Images/accordion/6.png'
    31             //        }
    32             //];
    33 
    34             //$("#accordionDiv").nhsdAccordion({
    35             //    'imglist': dataimglist, 'interval': 'slow'
    36             //});
    37             //上面是把数据写在配置项中
    38             //这是直接写在DOM结构中
    39             $("#accordionDiv").nhsdAccordion({});
    40             //下面是从Ajax()中获取数据的形式,ajaxur后跟的是获取数据源地址
    41             //$("#accordionDiv").nhsdAccordion({'ajaxur':'/plug/accordiionB/'});
    42         });
    43 </script>
    44 </head>
    45 <body>
    46     <div>
    47         <div id="accordionDiv" class="accordionDiv">
    48             <ul class="acdul">
    49                 <li style=" 252px">
    50                     <img src="../Images/accordion/1.png" title=""><span>手风琴效果图一</span></li>
    51                 <li style=" 80px">
    52                     <img src="../Images/accordion/2.png" title=""><span>手风琴效果图二</span></li>
    53                 <li style=" 80px">
    54                     <img src="../Images/accordion/3.png" title=""><span>手风琴效果图三</span></li>
    55                 <li style=" 80px">
    56                     <img src="../Images/accordion/4.png" title="手风琴效果图六"><span>手风琴效果图四</span></li>
    57                 <li style=" 80px">
    58                     <img src="../Images/accordion/5.png" title="手风琴效果图六"><span>手风琴效果图五</span></li>
    59                 <li style=" 80px">
    60                     <img src="../Images/accordion/6.png" title="手风琴效果图六"><span>手风琴效果图六</span></li>
    61             </ul>
    62         </div>
    63     </div>
    64 </body>
    65 </html>

    另global.css

     1 * {
     2     margin: 0;
     3     padding: 0;
     4 }
     5 
     6 html, body {
     7     color: #000;
     8     background: #fff;
     9 }
    10 
    11 p {
    12     display: block;
    13     -webkit-margin-before: 1em;
    14     -webkit-margin-after: 1em;
    15     -webkit-margin-start: 0px;
    16     -webkit-margin-end: 0px;
    17 }
    18 
    19 body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote, th, td {
    20     margin: 0;
    21     padding: 0;
    22     list-style: none;
    23 }
    24 
    25 div {
    26     display: block;
    27 }
    28 
    29 a {
    30     text-decoration: none;
    31     color: #333;
    32 }
    33 
    34     a:hover {
    35         color: #14a0cd;
    36         text-decoration: underline;
    37     }
    38 
    39 img {
    40     border: none;
    41     line-height: 0;
    42     margin: 0;
    43     padding: 0;
    44     vertical-align: bottom;
    45 }
    46 
    47 table {
    48     border-collapse: collapse;
    49 }
    50 /*td {
    51 padding: 3px;
    52 }*/
    53 input {
    54     padding: 1px;
    55     vertical-align: middle;
    56     line-height: normal;
    57 }
    58 
    59 a:link, a:visited {
    60     text-decoration: none;
    61     color: #1F376D;
    62 }
    63 
    64 a:hover, a:active {
    65     text-decoration: underline;
    66     color: #BD0A01;
    67     border: none;
    68 }
    69 
    70 ul {
    71     clear: both;
    72     overflow: hidden;
    73     width: 100%;
    74 }
    75 
    76 ul, li {
    77     list-style: none;
    78 }
  • 相关阅读:
    soapUI学习笔记--用例字段参数化
    python 写数据到txt 文件
    Python生成8位随机字符串的一些方法
    python datetime获取几分钟、小时、天之前的时间
    MQTT 测试工具介绍
    运用MQTT-JMeter插件测试MQTT服务器性能
    mqtt-jmeter
    ActiveMQ测试工具
    MQTT压力测试工具之JMeter插件教程
    volatile非原子性的示例
  • 原文地址:https://www.cnblogs.com/nhsd/p/3767517.html
Copyright © 2011-2022 走看看