jQuery插件实例五:手风琴效果[动画效果可配置版]
昨天写了个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插件实例五:手风琴效果[动画效果可配置版]的更多相关文章
- 基于jquery fly插件实现加入购物车抛物线动画效果,jquery.fly.js
在购物网站中,加入购物车的功能是必须的功能,有的网站在用户点击加入购物车按钮时,就会出现该商品从点击出以抛物线的动画相似加入购物车,这个功能看起来非常炫,对用户体验也有一定的提高.下面介绍基于jque ...
- 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态。点击列表的项,切换二级列表的显示或隐藏状态
查看本章节 查看作业目录 需求说明: 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态.点击列表的项,切 ...
- jQuery插件实例四:手风琴效果[无动画版]
手风琴效果就是内容的折叠与打开,在这个插件中,使用了三种数据来源:1.直接写在DOM结构中:2.将数据写在配置项中:3.从Ajax()中获取数据.在这一版中,各项的切换没有添加动画效果,在下一版中会是 ...
- jQuer插件满屏气泡飘落动画效果
飘落动画效果插件引用: <script src="https://cdn.bootcss.com/JQuery-Snowfall/1.7.4/snowfall.jquery.min.j ...
- jQuery插件实例一:年华时代插件Alert对话框
在工作中使用jQuery插件相信对于程序员来说非常普遍,在网络上也有很多优秀的插件可供大家使用,功能非常强大.在之前用过的一些插件中,有些太过追求功能的强大和可配置性,造成使用的复杂度上升.个人认为与 ...
- 一个很简单的jQuery插件实例教程(菜鸟级)
很多公司的前端设计开发人员都是女孩子,而这些女孩子很多JavaScript技能都不是很好.而前端开发过程中,JavaScript技能又是必不可少的.所以,如果前端小MM正在为某个JavaScript效 ...
- 【jQuery小实例】---2自定义动画
---本系列文章所用使用js均可在本博客文件中找到 本节用jQuery完一个简易的动画效果,一个小驴跑跑的效果.和一个类似qq面板效果.大致也分为三步:添加jquery-1.8.3.js文件.这个是不 ...
- 网站开发常用jQuery插件总结(五)滚动条插件nanoscroller
网站在展示信息时,如果信息量过大,解决方法主要有三种.1.分页,将信息分页显示.2.整页显示,但是页面过长,影响浏览体验.3.使用滚动条,而默认滚动条样式太单一,用户体验不友好.所以我们需要美化滚动条 ...
- jQuery插件实例三:图片滚动[切换]效果一
图片切换效果在很多网站上都能看到,是一种常见的广告/活动宣传方式,通常位于网页上端.这个插件是众多图片切换效果的形式中的一种,数据源可在前端配置,也可从后台通JSON格式传输数据,当然,数据格式是固定 ...
随机推荐
- Zend Studio下的PHP代码调试
问题:Zend Studio无法调试php代码 安装Zend Debugger 下载 到http://downloads.zend.com/pdt/server-debugger下载最新的debugg ...
- Hibernate常出现的报错
刚开始学习hibernate的时候,第一次就遇到了空指针异常,结果是我的配置文件处理错误(主要是数据库表的字段与就java实体类的属性名单词写错了):一般是报空指针异常的话,多半是配置文件的问题. 但 ...
- Java 8 新特性-菜鸟教程 (3) -Java 8 函数式接口
Java 8 函数式接口 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为lambda表达式. 函数式接 ...
- mongodb索引--1亿条记录的查询从55.7秒到毫秒级别<补充版>
从头开始,验证mongodb的索引的好处.(window7环境下) 下载mongodb服务器,并解压到d盘,并使用以下命令启动 mongod --dbpath D:\mongodb\data mong ...
- 获取ip 笔记
使用命令 Request.UserHostAddress;//IP地址 Request.UserHostName;//用户名. 1. 在ASP.NET中专用属性: 获取服务器电脑名:Page.Serv ...
- Java Switch支持的类型问题
常见支持类型为int,byte,short,char及枚举类型.以上是JDK1.6以前的版本.JDK1.7时,又增加了String. 参考资料:1.java switch支持的数据类型 2.java中 ...
- [css3] 看博客学习别人的旋转的星球
定义一个div 太阳轨道sunline,边框显示出来,定义position为relative #sunline{ width: 500px; height: 500px; border:2px sol ...
- IntelliJ IDEA 2016.2 注册破解激活教程
下载了IntelliJ IDEA 尽然需要激活,整了终于找到解决的办法了,记录下来. IntelliJ IDEA 2016.2下载地址:http://www.jetbrains.com/idea/do ...
- eclipse .properties插件
资源文件 即 .properties 文件是常用于国际化: eclipse默认的 .properties 文件编辑器有几个问题: 编码问题 多种语言同步问题 下面介绍2种eclipse的 .prope ...
- Fragment的坑
http://www.jianshu.com/p/d9143a92ad94 使用add()加入fragment时将触发onAttach(),使用attach()不会触发onAttach() 使用rep ...