js自定义QQ菜单效果


Posted in Javascript onJanuary 10, 2017

QQ菜单大家都见过,这样有以下的功能:
1.点击我的好友,会展示下拉出具体的好友
2.再点击我的好友,会收缩
3.首次点击具体的某个好友,只有当前这个好友高亮
4.再次点击这个好友时,高亮状态就消失了

还是瞄一眼效果图吧:

js自定义QQ菜单效果

最后代码

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
ul,h2 {padding:0;margin:0;}
li{list-style:none;}
#list{width:200px;margin:0 auto;border:1px solid #000;}
#list{width:200px;}
#list h2{width:200px;height:30px;line-height:30px;text-align:center;background:url(img/ico1.gif) no-repeat 20% 50% #6699FF;text-indent:24px;border-bottom:1px dotted #000;}
#list h2.active{background:url(img/ico2.gif) no-repeat 20% 50% #FFCC99;}
#list ul{width:200px;text-align:center;display:none;}
#list ul li{width:200px;height:30px;line-height:30px;}
#list ul li.highlight{background:#FF66FF;}
</style>
<title>无标题文档</title>
<script>
window.onload = function () {
 var oUl = document.getElementById('list');
 var oH2 = oUl.getElementsByTagName('h2');
 var aUl = oUl.getElementsByTagName('ul');
 var aLi = [];
 var arr = [];
 var oldLi = null;
 var num = 0;

 // 点击菜单显示隐藏
 for( var i = 0; i < oH2.length; i++ ) {
 oH2[i].index = i;
 oH2[i].onclick = function () {
  if (this.className === '') {
  aUl[this.index].style.display = 'block';
  this.className = 'active';
  } else {
  aUl[this.index].style.display = 'none';
  this.className = '';
  }
 }
 }
 // 获取菜单中的每个li
 for ( var i = 0; i < aUl.length; i++ ) {
 aLi = aUl[i].getElementsByTagName('li');
 for ( var j = 0; j < aLi.length; j++ ) {
  arr.push(aLi[j]);
 }
 }
 // 遍历aLi
 for ( var i = 0; i < arr.length; i++ ) {
 arr[i].onOff = false;
 arr[i].onclick = function () {
  // 当上一个点击的li不是当前点击的Li
  if (oldLi && oldLi !== this) {
  oldLi.className = '';
  oldLi.onOff = false;
  }
  this.className = this.onOff ? '' : 'highlight';
  this.onOff = !this.onOff;
  oldLi = this;
 }
 }
}
</script>
</head>

<body>
<ul id="list">
 <li class="lis">
 <h2>我的好友</h2>
 <ul>
  <li>张三1</li>
  <li>张三2</li>
  <li>张三3</li>
 </ul>
 </li>
 <li class="lis">
 <h2>企业好友</h2>
 <ul>
  <li>李四1</li>
  <li>李四2</li>
  <li>李四3</li>
 </ul>
 </li>
 <li class="lis">
 <h2>黑名单</h2>
 <ul>
  <li>王五1</li>
  <li>王五2</li>
 </ul>
 </li>
</ul>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
超级退弹代码
Jul 07 Javascript
Firefox window.close()的使用注意事项
Apr 11 Javascript
js 对象是否存在判断
Jul 15 Javascript
JQuery 绑定事件时传递参数的实现方法
Oct 13 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
Aug 02 Javascript
用jquery中插件dialog实现弹框效果实例代码
Nov 15 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
Apr 29 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
Jul 14 Javascript
纯JS实现五子棋游戏
May 28 Javascript
原生JS实现无缝轮播图片
Jun 24 Javascript
vue中的v-model原理,与组件自定义v-model详解
Aug 04 Javascript
JavaScript实现简单计时器
Jun 22 Javascript
js实现将json数组显示前台table中
Jan 10 #Javascript
详解Vue自定义过滤器的实现
Jan 10 #Javascript
JS实现的表头列头固定页面功能示例
Jan 10 #Javascript
VUE JS 使用组件实现双向绑定的示例代码
Jan 10 #Javascript
微信小程序 地图map详解及简单实例
Jan 10 #Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
Jan 10 #Javascript
jQuery UI仿淘宝搜索下拉列表功能
Jan 10 #Javascript
You might like
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
用php获取本周,上周,本月,上月,本季度日期的代码
2009/08/05 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
jQuery实现仿Google首页拖动效果的方法
2015/05/04 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
nodejs连接mysql数据库简单封装示例-mysql模块
2017/04/10 NodeJs
vue-cli配置文件——config篇
2018/01/04 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
python中mechanize库的简单使用示例
2014/01/10 Python
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
Python如何生成树形图案
2018/01/03 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
Django自定义过滤器定义与用法示例
2018/03/22 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
django创建简单的页面响应实例教程
2019/09/06 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
一套.net面试题及答案
2016/11/02 面试题
毕业生找工作的自我评价
2013/10/18 职场文书
协议书格式
2014/04/23 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
中班教师个人总结
2015/02/05 职场文书
社区元宵节活动总结
2015/02/06 职场文书
难以忽视的真相观后感
2015/06/05 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python