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 ajax对特殊字符进行转义防止js注入使用示例
Nov 21 Javascript
js中reverse函数的用法详解
Dec 26 Javascript
js数组方法扩展实现数组统计函数
Apr 09 Javascript
js控制当再次点击按钮时的间隔时间
Jun 03 Javascript
JavaScript数组和循环详解
Apr 27 Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
Oct 25 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
Jan 20 Javascript
对称加密与非对称加密优缺点详解
Feb 06 Javascript
JavaScript运动框架 多值运动(四)
May 18 Javascript
小程序云开发教程如何使用云函数实现点赞功能
May 18 Javascript
electron实现静默打印的示例代码
Aug 12 Javascript
JS实现简单九宫格抽奖
Jun 28 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/11/19 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
jQuery chili图片远处放大插件
2009/11/30 Javascript
javascript delete 使用示例代码
2010/03/29 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
BootStrap扔进Django里的方法详解
2016/05/13 Javascript
Bootstrap 实现查询的完美方法
2016/10/26 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
VUE引入第三方js包及调用方法讲解
2019/03/01 Javascript
实例详解vue中的$root和$parent
2019/04/29 Javascript
在Python中进行自动化单元测试的教程
2015/04/15 Python
详解python中的json的基本使用方法
2016/12/21 Python
用pycharm开发django项目示例代码
2019/06/13 Python
python实现广度优先搜索过程解析
2019/10/19 Python
python实现LRU热点缓存及原理
2019/10/29 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
2020/04/16 Python
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
室内拓展活动方案
2014/02/13 职场文书
校园文明倡议书
2014/05/16 职场文书
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
go mod 安装依赖 unkown revision问题的解决方案
2021/05/06 Golang
Pandas加速代码之避免使用for循环
2021/05/30 Python
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python
浅谈JavaScript作用域
2021/12/06 Javascript