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 相关文章推荐
Javascript中typeof 用法小结
May 12 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
Sep 21 Javascript
微信小程序 使用canvas制作K线实例详解
Jan 12 Javascript
javascript常用的设计模式
Feb 09 Javascript
JavaScript 过滤关键字
Mar 20 Javascript
JavaScript之filter_动力节点Java学院整理
Jun 28 Javascript
vue2.0 keep-alive最佳实践
Jul 06 Javascript
对VUE中的对象添加属性
Sep 18 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
Sep 25 Javascript
Vue 引入AMap高德地图的实现代码
Apr 29 Javascript
JQuery实现折叠式菜单的详细代码
Jun 03 jQuery
Javascript异步流程控制之串行执行详解
Sep 27 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 URL编码解码函数代码
2009/03/10 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
js cookies实现简单统计访问次数
2009/11/24 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
nodejs中实现阻塞实例
2015/03/24 NodeJs
jQuery带进度条全屏图片轮播特效代码分享
2020/06/28 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
2016/06/06 Javascript
Angular的$http与$location
2016/12/26 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
2017/01/22 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
2018/05/03 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
[37:03]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第二场 12.16
2020/12/18 DOTA
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
django 中的聚合函数,分组函数,F 查询,Q查询
2019/07/25 Python
Django中modelform组件实例用法总结
2020/02/10 Python
python 画图 图例自由定义方式
2020/04/17 Python
python递归函数用法详解
2020/10/26 Python
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
护士自我鉴定范文
2013/10/06 职场文书
九年级数学教学反思
2014/02/02 职场文书
对公司合理化的建议书
2014/03/12 职场文书
党员教师工作决心书
2014/03/13 职场文书
小学教师读书活动总结
2014/07/08 职场文书
神秘岛读书笔记
2015/07/01 职场文书
公司备用金管理制度
2015/08/04 职场文书
【海涛教你打DOTA】剑圣第一人称视角解说
2022/04/01 DOTA