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与iframe交互实现代码
Dec 24 Javascript
JS获取IP、MAC和主机名的五种方法
Nov 14 Javascript
纯javascript判断查询日期是否为有效日期
Aug 24 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
Jun 06 Javascript
全面解析Javascript无限添加QQ好友原理
Jun 15 Javascript
深入理解JS实现快速排序和去重
Oct 17 Javascript
Vue中引入样式文件的方法
Aug 18 Javascript
小程序实现留言板
Nov 02 Javascript
vue模块拖拽实现示例代码
Mar 09 Javascript
微信小程序自定义toast组件的方法详解【含动画】
May 11 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
Sep 03 Javascript
Vue实现购物车基本功能
Nov 08 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教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
javascript parseInt与Number函数的区别
2010/01/21 Javascript
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
jQuery实现鼠标经过显示动画边框特效
2017/03/24 jQuery
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
vue父子模板传值问题解决方法案例分析
2020/02/26 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
python下如何让web元素的生成更简单的分析
2008/07/17 Python
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
python实现机器学习之多元线性回归
2018/09/06 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
django使用channels实现通信的示例
2020/10/19 Python
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
IE9对HTML5中部分属性不支持的原因分析
2014/10/15 HTML / CSS
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
数字漫画:comiXology
2020/06/13 全球购物
歌唱比赛获奖感言
2014/01/21 职场文书
安全责任书范文
2014/03/12 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
大学生村官考核材料
2014/05/23 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
浅谈MySQL函数
2021/10/05 MySQL