昨天写了个jQuery插件实例四:手风琴效果[无动画版]那个是没有动画效果的,且可配置性不高,本篇为有动画效果。对于一些数据做了动态的计算,以实现自适应。

欢迎大家入群相互交流,学习,新群初建,欢迎各位的光临

效果图预览

插件JS

accordionB.js

 ;
(function ($, window, document, undefined) {
var defaults = {
'isajax': false, //是否从ajax加载数据
'isDom': true, //是否是DOM数据,即直接写在DOM结构中,为默认项
'isConfiguration': false,//是否是配置数据
'imglist': [],//配置数据
'ajaxurl': '',//Ajax()获取数据时的地址
'isanimate':true,//是否有动画效果
'sped':,//动画速度
'showwidth':,//当前选中项的宽度
'isClear':true,//当鼠标移出DIV时,是否还原初始显示状态
'firstShow':false//初次加载时,第一项是否展开
}; $.fn.nhsdAccordion = function (options) {
var $parentDiv = $(this);
var $opts = $.extend({}, defaults, options);
var $mouseoverTile = "";
var $a_width = parseInt($parentDiv.width());
if($opts.isanimate==true){
$a_width = $a_width-;//尽可能的保证样式的正确性
}
var $quantity;//li的数量
var $p_width;//收缩时的平均宽度
var $o_width;//当一个展开时,剩下的项li的平均宽度
var $cli;//记录当前选中项 function initDom() {
$parentDiv.html("");
$p_width = $a_width/$quantity;
$o_width = ($a_width-parseInt($opts.showwidth))/($quantity-); var $ul = $('<ul></ul>', { 'class': 'acdul' }).appendTo($parentDiv);
for (var i = , j = $opts.imglist.length; i < j; i++) {
var temp = $opts.imglist[i];
var $li;
if($opts.firstShow==true){
if(i==){
$li = $('<li></li>').css({
width:$opts.showwidth+'px'
}).appendTo($ul);
}else{
$li = $('<li></li>').css({
width:$o_width+'px'
}).appendTo($ul);
}
}
else{
$li = $('<li></li>').css({
width:$p_width+'px'
}).appendTo($ul);
}
var $img = $('<img />', { 'src': temp.src, 'title': temp.title }).appendTo($li);
var $tit = $('<span class="pspan"></span>').html(temp.title).appendTo($li);
}
liEvent();
} function liEvent() {
$(".acdul li").bind("click mouseover", function () {
$mouseoverTile = $(this).find('img').attr('title');
$(this).find('img').removeAttr('title');
if($opts.isanimate==true){
$(this).siblings('li').stop(true,false).animate({width:$o_width+'px'},$opts.sped);
$(this).stop(true,false).animate({width:$opts.showwidth+'px'},$opts.sped);
}else{
$(this).siblings('li').attr('style','width:'+$o_width+'px');
$(this).attr('style','width'+$opts.showwidth+'px');
}
$(this).find('span').removeClass().addClass('cspan');
$cli = $(this);
}).bind('mouseout', function () {
$(this).find('img').attr('title', $mouseoverTile);
$(this).find('span').removeClass().addClass('pspan')
}); $parentDiv.bind('mouseout',function(){
if($opts.isClear){
if($opts.isanimate==true){
$(this).find('ul li').stop(true,false).animate({width:$p_width+'px'},$opts.sped);
}else{
$(this).find('ul li').css({
width:$p_width+'px'
});
}
}else{
$(this).find('span').removeClass().addClass('pspan');
$cli.find('span').removeClass().addClass('cspan');
}
});
} function initAjax() {
$.ajax({
type: 'get',
url: $opts.ajaxurl,
cache: false,
dataType: 'json',
beforeSend: function () { },
success: function (d) {
$opts.imglist = d;
$quantity = d.length;
initDom();
},
error: function () { }
});
} if ($opts.isajax == true) {
initAjax();
} else if ($opts.isConfiguration == true) {
$quantity = $opts.imglist.length;
initDom();
} else if ($opts.isDom == true) {
$quantity = $parentDiv.find('li').length;
$p_width = $a_width/$quantity;
$o_width = ($a_width-parseInt($opts.showwidth))/($quantity-);
liEvent();
} return this;//用于保证当前元素还能实现链式编程
}
})(jQuery, window, document);

CSS样式

accordionB.css

 /* CSS Document */

 /*手风琴效果CSS*/
.accordionDiv {
/* width: 658px;*/
/* width: 400px;*/
width: 500px;
height: 400px;
margin: 0 auto;
position: relative;
overflow: hidden;
top: 50px;
} .acdul {
position: absolute;
} .acdul li {
display: inline-block;
float: left;
cursor: pointer;
position: relative;
overflow: hidden;
font-size: 20px;
font-weight: bold;
} .pspan{
color: #ffffff;
height: 100%;
}
.cspan{
color: red;
height: 100%;
} .acdul img {
float: left;
position: relative;
display: inline-block;
} .acdul span {
float: left;
position: absolute;
display: block;
width: 22px;
margin: 5px 0 0 5px;
z-index:;
} .redspan{
color:red;
} .laselirevise{ }

HTML页面

 <!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>
<meta name="viewport" http-equiv="Content-Type" content="charset=utf-8" />
<title>无标题文档</title>
<link rel="stylesheet" type="text/css" href="../CSS/global.css"/>
<link rel="stylesheet" type="text/css" href="../CSS/accordionB.css"/>
<script type="text/javascript" src="../Script/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="../Script/accordionB.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var dataimglist = [
{
'title':'手风琴效果图一',
'src':'../Images/accordion/1.png',
'href':'http://www.cnblogs.com/nhsd/'
}, {
'title': '手风琴效果图二',
'src': '../Images/accordion/2.png',
'href':'http://www.cnblogs.com/nhsd/'
}, {
'title': '手风琴效果图三',
'src': '../Images/accordion/3.png',
'href':'http://www.cnblogs.com/nhsd/'
}, {
'title': '手风琴效果图四',
'src': '../Images/accordion/4.png',
'href':'http://www.cnblogs.com/nhsd/'
}, {
'title': '手风琴效果图五',
'src': '../Images/accordion/5.png',
'href':'http://www.cnblogs.com/nhsd/'
}, {
'title': '手风琴效果图六',
'src': '../Images/accordion/6.png',
'href':'http://www.cnblogs.com/nhsd/'
}
]; $("#accordionDiv").nhsdAccordion({
'imglist': dataimglist, 'interval': 'slow','isConfiguration':true
});
//上面是把数据写在配置项中
//这是直接写在DOM结构中
//$("#accordionDiv").nhsdAccordion({});
//下面是从Ajax()中获取数据的形式,ajaxur后跟的是获取数据源地址
//$("#accordionDiv").nhsdAccordion({'ajaxur':'/plug/accordiionB/'});
});
</script>
</head>
<body>
<div>
<div id="accordionDiv" class="accordionDiv">
<ul class="acdul">
<li style="width: 83px;">
<img src="../Images/accordion/1.png" title="手风琴效果图一">
<span class="pspan">手风琴效果图一</span>
</li>
<li style="width: 83px;">
<img src="../Images/accordion/2.png" title="手风琴效果图二">
<span class="pspan">手风琴效果图二</span>
</li>
<li style="width: 83px;">
<img src="../Images/accordion/3.png" title="手风琴效果图三">
<span class="pspan">手风琴效果图三</span>
</li>
<li style="width: 83px;">
<img src="../Images/accordion/4.png" title="手风琴效果图四">
<span class="pspan">手风琴效果图四</span>
</li>
<li style="width: 83px;">
<img src="../Images/accordion/5.png" title="手风琴效果图五">
<span class="pspan">手风琴效果图五</span>
</li>
<li style="width: 83px;">
<img src="../Images/accordion/6.png" title="手风琴效果图六">
<span class="pspan">手风琴效果图六</span>
</li>
</ul>
</div>
</div>
</body>
</html>

另global.css

 * {
margin:;
padding:;
} html, body {
color: #000;
background: #fff;
} p {
display: block;
-webkit-margin-before: 1em;
-webkit-margin-after: 1em;
-webkit-margin-start: 0px;
-webkit-margin-end: 0px;
} 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 {
margin:;
padding:;
list-style: none;
} div {
display: block;
} a {
text-decoration: none;
color: #333;
} a:hover {
color: #14a0cd;
text-decoration: underline;
} img {
border: none;
line-height:;
margin:;
padding:;
vertical-align: bottom;
} table {
border-collapse: collapse;
}
/*td {
padding: 3px;
}*/
input {
padding: 1px;
vertical-align: middle;
line-height: normal;
} a:link, a:visited {
text-decoration: none;
color: #1F376D;
} a:hover, a:active {
text-decoration: underline;
color: #BD0A01;
border: none;
} ul {
clear: both;
overflow: hidden;
width: 100%;
} ul, li {
list-style: none;
}

jQuery插件实例五:手风琴效果[动画效果可配置版]的更多相关文章

  1. 基于jquery fly插件实现加入购物车抛物线动画效果,jquery.fly.js

    在购物网站中,加入购物车的功能是必须的功能,有的网站在用户点击加入购物车按钮时,就会出现该商品从点击出以抛物线的动画相似加入购物车,这个功能看起来非常炫,对用户体验也有一定的提高.下面介绍基于jque ...

  2. 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态。点击列表的项,切换二级列表的显示或隐藏状态

    查看本章节 查看作业目录 需求说明: 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态.点击列表的项,切 ...

  3. jQuery插件实例四:手风琴效果[无动画版]

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

  4. jQuer插件满屏气泡飘落动画效果

    飘落动画效果插件引用: <script src="https://cdn.bootcss.com/JQuery-Snowfall/1.7.4/snowfall.jquery.min.j ...

  5. jQuery插件实例一:年华时代插件Alert对话框

    在工作中使用jQuery插件相信对于程序员来说非常普遍,在网络上也有很多优秀的插件可供大家使用,功能非常强大.在之前用过的一些插件中,有些太过追求功能的强大和可配置性,造成使用的复杂度上升.个人认为与 ...

  6. 一个很简单的jQuery插件实例教程(菜鸟级)

    很多公司的前端设计开发人员都是女孩子,而这些女孩子很多JavaScript技能都不是很好.而前端开发过程中,JavaScript技能又是必不可少的.所以,如果前端小MM正在为某个JavaScript效 ...

  7. 【jQuery小实例】---2自定义动画

    ---本系列文章所用使用js均可在本博客文件中找到 本节用jQuery完一个简易的动画效果,一个小驴跑跑的效果.和一个类似qq面板效果.大致也分为三步:添加jquery-1.8.3.js文件.这个是不 ...

  8. 网站开发常用jQuery插件总结(五)滚动条插件nanoscroller

    网站在展示信息时,如果信息量过大,解决方法主要有三种.1.分页,将信息分页显示.2.整页显示,但是页面过长,影响浏览体验.3.使用滚动条,而默认滚动条样式太单一,用户体验不友好.所以我们需要美化滚动条 ...

  9. jQuery插件实例三:图片滚动[切换]效果一

    图片切换效果在很多网站上都能看到,是一种常见的广告/活动宣传方式,通常位于网页上端.这个插件是众多图片切换效果的形式中的一种,数据源可在前端配置,也可从后台通JSON格式传输数据,当然,数据格式是固定 ...

随机推荐

  1. docker搭建rabbitmq

    Docker部署rabbitmq 1.     准备docker环境: # yum  -y  install  docker # docker ps @如果有输出 CONTAINER ID   IMA ...

  2. C/C++编程GUI库比较

    转自:http://blog.csdn.net/lostown/article/details/658654 最强的GUI库当属Qt,毕竟是商业化的东西,功能最完整,什么都好,包括类似java代码风格 ...

  3. switch-case最容易忽视的一点

    switch语句是常用的一种java语法,但是往往最基本的,总是最容易被人们忽略. 首先,看下switch语句的基本结构: switch(表达式){ case 常量1: 语句1; break; cas ...

  4. web开发中的两把锁之数据库锁:(高并发--乐观锁、悲观锁)

    这篇文章讲了 1.同步异步概念(消去很多疑惑),同步就是一件事一件事的做:sychronized就是保证线程一个一个的执行. 2.我们需要明白,锁机制有两个层面,一种是代码层次上的,如Java中的同步 ...

  5. 悟空模式-java-建造者模式

    [此是锻炼神冰铁,磨琢成工光皎洁.老君自己动钤锤,荧惑亲身添炭屑.五方五帝用心机,六丁六甲费周折.造成九齿玉垂牙,铸就双环金坠叶.身妆六曜排五星,体按四时依八节.短长上下定乾坤,左右阴阳分日月.六爻神 ...

  6. linux系统编程:获取glibc的版本号

    我的环境是ubuntu16.04 glibc官网:http://www.gnu.org/software/libc/libc.html 方法一.一般来说,涉及到库调用的程序,在链接时候都会链接到gli ...

  7. HDU1824(2-SAT)

    Let's go home Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  8. python学习之老男孩python全栈第九期_day003知识点总结

    1. int: i.bit_length(): 把i这个数转换成二进制所需最少的位数 2. bool: (1) 1比True的效率更高 (2) 空字符串(什么都没有)为False:非空字符串为True ...

  9. BZOJ5322: [JXOI2018]排序问题

    传送门 不难看出期望就是 \(\frac{(n+m)!}{\prod_{v=1}^{max}(cnt_v!)}\),\(cnt_v\) 表示 \(v\) 这个数出现的次数. 贪心就是直接把 \(m\) ...

  10. SuperSlide轮播插件滚动高度或宽度不对的问题解决

    声明:本文由w3h5原创,转载请注明出处:<SuperSlide轮播插件滚动高度或宽度不对的问题解决> SuperSlide 是一款比较实用的轮播插件,网站上常用的“焦点图/幻灯片”“Ta ...