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 相关文章推荐
控制打印时页眉角的代码
Feb 08 Javascript
ajaxControlToolkit AutoCompleteExtender的用法
Oct 30 Javascript
JQuery中$之选择器用法介绍
Apr 05 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
Nov 13 Javascript
jQuery.extend()的实现方式详解及实例
Jun 29 Javascript
详谈JavaScript内存泄漏
Nov 14 Javascript
jQuery实现的多屏图像图层切换效果实例
May 07 Javascript
解决js图片加载时出现404的问题
Nov 30 Javascript
详解js图片轮播效果实现原理
Dec 17 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
Jun 25 Javascript
用Vue.extend构建消息提示组件的方法实例
Aug 08 Javascript
送你43道JS面试题(收藏)
Jun 17 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代码
2010/07/17 PHP
PHP中IP地址与整型数字互相转换详解
2014/08/20 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
PHP内存溢出优化代码详解
2021/02/26 PHP
PHP守护进程实例
2015/03/06 Javascript
javascript实现简单的二级联动
2015/03/19 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
两行代码轻松搞定JavaScript日期验证
2016/08/03 Javascript
AngularJS国际化详解及示例代码
2016/08/18 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
Bootstrap栅格系统的使用详解
2017/10/30 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
2018/01/02 Javascript
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
微信小程序登录时如何获取input框中的内容
2019/12/04 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
vue实现购物车列表
2020/06/30 Javascript
Python字符串格式化输出方法分析
2016/04/13 Python
Flask之flask-script模块使用
2018/07/26 Python
Python实现分段线性插值
2018/12/17 Python
Python列表切片常用操作实例解析
2019/12/16 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
旅游管理专业个人求职信范文
2013/12/24 职场文书
班会关于环保演讲稿
2013/12/29 职场文书
电子邮箱格式怎么写
2014/01/12 职场文书
上课说话检讨书大全
2014/01/22 职场文书
房地产公司见习自我鉴定
2014/04/28 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers
MySQL 使用索引扫描进行排序
2021/06/20 MySQL