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 相关文章推荐
jQuery AjaxQueue改进步骤
Oct 06 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
Dec 14 Javascript
ie9 提示'console' 未定义问题的解决方法
Mar 20 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
May 07 Javascript
JQuery中extend的用法实例分析
Feb 08 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
Feb 17 Javascript
JavaScript获取数组最小值和最大值的方法
Jun 09 Javascript
JQuery.Ajax()的data参数类型实例详解
Nov 20 Javascript
js 声明数组和向数组中添加对象变量的简单实例
Jul 28 Javascript
jquery实现数字输入框
Feb 22 Javascript
将 vue 生成的 js 上传到七牛的实例
Jul 28 Javascript
深入理解 ES6中的 Reflect用法
Jul 18 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
php 检查电子邮件函数(自写)
2014/01/16 PHP
php输出全球各个时区列表的方法
2015/03/31 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
php+croppic.js实现剪切上传图片功能
2018/08/14 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
JavaScript中的闭包原理分析
2010/03/08 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
表单元素与非表单元素刷新区别详细解析
2013/11/06 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
python 判断自定义对象类型
2009/03/21 Python
python3序列化与反序列化用法实例
2015/05/26 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
python中copy()与deepcopy()的区别小结
2018/08/03 Python
在mac下查找python包存放路径site-packages的实现方法
2018/11/06 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
python实现的生成word文档功能示例
2019/08/23 Python
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
德国咖啡批发商:Coffeefair
2019/08/26 全球购物
Java基础类库面试题
2013/09/04 面试题
医学专业毕业生个人求职信
2013/12/25 职场文书
村官工作鉴定评语
2014/01/27 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
毕业生求职信
2014/06/10 职场文书
中小企业员工手册范本
2015/05/14 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书