KISSY之优化实例

今日任务:拆合菜单代码优化重构

这一节我们主要来看一下拆合菜单进行代码优化重构后的效果。

一、测试页面代码

<div id="content">

<ul id="menu">

<li class="menu-list">

<div><a></a>test0</div>

<ul>

<li>test00</li>

<li>test01</li>

<li>test02</li>

</ul>

</li>

<li class="menu-list">

<div><a></a>test1</div>

<ul>

<li>test10</li>

<li>test11</li>

<li>test12</li>

</ul>

</li>

<li class="menu-list">

<div><a></a>test2</div>

<ul>

<li>test20</li>

<li>test21</li>

<li>test22</li>

</ul>

</li>

</ul>

</div>

二、css样式代码

body{

background-color:#66cccc;

}

#content{

padding-top:20px;

}

#menu{

width:180px;

background-color:#66cccc;

border:0px solid #CDC8CF;

border-bottom:none;

}

#menu .menu-list{

display:inline;

}

#menu .menu-list div{

height:27px;

background:url(../img/menu-header-bg.jpg) 0px 0px repeat-x #99F;

border-bottom:1px solid #CDC8CF;

padding-top:3px;

padding-left:10px;

cursor:pointer;

}

#menu .menu-list div a{

font-size:14px;font-weight:bold;color:#765D97;

margin-left:10px;

background:url(../img/menu-arrow.jpg) 0px -24px no-repeat;padding-left:20px;

}

#menu .menu-list  ul{

background-color:#FFF;

border-bottom:1px solid #CDC8CF;

padding:5px 50px;

height:90px;

}

#menu .menu-item  ul li{

padding:2px 20px;

border:1px solid #FFF;

}

#menu .menu-item  ul li a{

color:#666;

}

.arrow-down{

background-position:0px 2px !important;

}

}

图片依然是之前的那两张图片,此处不再展示。

三、js之KISSY方法

KISSY.use('node,anim', function (S,Node,Anim) {

var $=Node.all;

//隐藏所有子菜单项

$(".menu-list").each(function(v){

$(v).children('ul').hide();

});

$("#menu div").on('click',function(ev){

//获得当前menu-list的ul节点

var nextMenu = $(ev.target).next();

//获得当前menu-list节点

var parentMenu=$(ev.target).parent();

//获取当前menu-list的ul节点的display样式属性值

var display =$(nextMenu).css('display');

//获取当前menu-list的div的子节点a

var children = $(ev.target).children();

//获得当前menu-list之外的同级menu-list节点

var sibItems = $(parentMenu).siblings();

//隐藏其同级节点

$(sibItems).each(function(v){

$(v).children('ul').hide();

$(v).children('div').children().removeClass('arrow-down');

});

/*$("#btn-1").on('click',function(){

//创建一个新的li节点

alert(nextMenu.text());

$(nextMenu).append('<li class="new"><a>test13</a></li>');

});*/

//根据子菜单的显示情况来判断是否显示子菜单

if(display == 'none'){

var h = $(nextMenu).height();

$(nextMenu).css({height: 0,display: 'block',overflow:'hidden'});

//此处用了Anim模块,也可用node模块的animate方法:$(nextMenu).animate({'height':h+'px'},1,'elasticOut');

var anim=Anim($(nextMenu),{'height':h+'px'},1,Anim.Easing.elasticOut);

anim.run();

$(children).addClass('arrow-down');

}else{

$(nextMenu).slideUp(0.5);

$(children).removeClass('arrow-down');

}

return false;

});

});

来亲自操作,体验一下吧!

KISSY基础篇乄KISSY之优化实例相关推荐

  1. KISSY基础篇乄KISSY之DOM(1)

    KISSY之DOM(1) 今日任务:了解学习DOM的基础知识以及学习拆合菜单实例 KISSY的DOM模块的子模块和方法众多,但又很重要,最好的情况是全部熟练掌握,当然一开始学是不可能全部记住DOM的方 ...

  2. KISSY基础篇乄KISSY之HelloWorld

    KISSY之HelloWorld 今日任务:使用kissy实现简单的hello World! 一.新建Kissy测试项目 打开STS,File->StaticWeb Project,命名其Pro ...

  3. KISSY基础篇乄KISSY之DOM(2)

    KISSY之DOM(2) 今日任务:深入学习DOM知识及进一步完善拆合菜单实例 在上一篇的教程中,明河使用KISSY.DOM的常用方法制作了一个拆合菜单,同时也演练到了几个常用方法,比如addClas ...

  4. KISSY基础篇乄KISSY简介

    KISSY简介 今日任务:了解学习有关Kissy的一些知识,以便于后续的学习 一.相约KISSY,必先了解 KISSY 是一款跨终端.模块化.高性能.使用简单的 JavaScript 框架.除了完备的 ...

  5. KISSY基础篇乄KISSY之Event

    KISSY之Event事件 今日任务:了解学习Event事件的基础知识 Event 模块是KISSY最重要的模块之一,他包含自定义事件机制.事件对象封装.DOM事件封装.面向多终端的事件行为统一.下辖 ...

  6. KISSY基础篇乄KISSY之IO前奏

    KISSY之IO前奏 今日任务:了解学习IO模块之前必备知识. 在学习Kissy的IO之前,咱们先来了解下ajax,http,json等知识,这些是学习IO模块的必备知识.这里只是给出了一些概念性的介 ...

  7. KISSY基础篇乄KISSY之IO(2)

    第14天:KISSY之IO(2) 今日任务:创建Maven Project并学习IO模块. 这一节我们主要来看一下IO模块里的一些方法. 一.Maven Project (1)创建mavenproje ...

  8. KISSY基础篇乄KISSY之Node(1)

    KISSY之Node(1) 今日任务:学习Node模块,对拆合菜单实例代码进行优化重构. 前面我们分别讲解了DOM 和Event模块,那时是按照使用什么模块就引用什么模块的原则编写代码的.同时,我们也 ...

  9. KISSY基础篇乄KISSY之Seed

    KISSY之Seed 今日任务:了解Kissy的模块载入机制 首先恭喜你已经成功使用kissy想世界打了个招呼,不过这只是刚起步,咱们还有很多地方需要学习.在本节咱们就推开kissy的大门,看看房间里 ...

最新文章

  1. Java计算多线程运行时间的简单方式
  2. Eclipse中svn插件:Subclipse插件安装
  3. Java黑皮书课后题第10章:10.3(MyInteger类)设计一个名为MyInteger的类
  4. linux下后缀为so的文件怎么打开,linux中.so后缀的文件怎么使用啊
  5. Nagios监控系统详解
  6. 奇妙的数学动图,美到令人窒息!
  7. SpringBoot的整合————一些常用工具类依赖及用法总结
  8. C++输入变长字符串
  9. HTML5的File API
  10. sci的figure怎么做_一文看懂SCI论文中都有哪几种Figure
  11. Cocos2d-x如何用plist制作帧动画
  12. ❤️PPT素材网站推荐❤️让你的PPT更加迷人❤️
  13. 安装MySQL出现:无法定位序数4699于动态链接库 ...\bin\mysqld.exe
  14. 方正飞鸿智能信息平台(Fix ES2007)
  15. php是什么水处理药剂,国内目前最主要水处理药剂分类及特点
  16. pil库修改图片大小_python 利用PIL库进行更改图片大小的操作
  17. jQuery UI Datepicker 选择时分秒
  18. 广告投放的相关名词CPM/CPT/CPC/CPD/CPI/CPS
  19. 对比数据库中两张表的数据
  20. 苹果手机上没有显示订阅服务器,手机里没有订阅的选项,我该怎样取消自动收费项目...

热门文章

  1. 室内施工图LiSP_CAD快速做室内设计图的技巧
  2. linux ubuntu环境下 android jdk sdk eclipse adt 以及手机连接无法识别的解决方法
  3. 华为项目管理10大模板Excel版(可直接套用_非常实用)
  4. 低功耗基础概念——isolation cell
  5. 艾美捷双链RNA定量试剂盒试验方案
  6. 3.0时代,公关传播在人文营销中的应用
  7. 云计算有哪些?云计算排排坐,拿去不谢
  8. JSON.parse解析json字符串必须注意的那些事
  9. 通达信大智慧联动到同花顺单独下单工具下单
  10. 【码上实战】【立体匹配系列】经典SGM:(2)代价计算