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 相关文章推荐
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
Nov 03 Javascript
JQuery 获取和设置Select选项的代码
Feb 07 Javascript
BOM与DOM的区别分析
Oct 26 Javascript
文档对象模型DOM通俗讲解
Nov 01 Javascript
浅谈Javascript 数组与字典
Jan 29 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
Mar 04 Javascript
javascript简单实现滑动菜单效果的方法
Jul 27 Javascript
深入理解jQuery中的事件冒泡
May 24 Javascript
浅谈angularjs依赖服务注入写法的注意点
Apr 24 Javascript
vue-router相关基础知识及工作原理
Mar 16 Javascript
JavaScript 日期时间选择器一些小结
Apr 02 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 Vue.js
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
js控制框架刷新
2008/08/01 Javascript
javascript StringBuilder类实现
2008/12/22 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
jQuery :first选择器使用介绍
2013/08/09 Javascript
查找iframe里元素的方法可传参
2013/09/11 Javascript
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
js图片预加载示例
2014/04/30 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
在IE8上JS实现combobox支持拼音检索功能
2016/05/23 Javascript
Javascript数组中push方法用法分析
2016/10/31 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
通过webpack引入第三方库的方法
2018/07/20 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
Python2.x中文乱码问题解决方法
2015/06/02 Python
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
Python虚拟环境项目实例
2017/11/20 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
详解python多线程、锁、event事件机制的简单使用
2018/04/27 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
python实现简单银行管理系统
2019/10/25 Python
基于Python实现简单学生管理系统
2020/07/24 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
开会迟到检讨书
2014/01/08 职场文书
认识深刻的检讨书
2014/02/16 职场文书
2014年班主任工作总结
2014/11/08 职场文书
中学生打架检讨书之500字
2019/08/06 职场文书