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 相关文章推荐
客户端静态页面玩分页
Jun 26 Javascript
jquery HotKeys轻松搞定键盘事件代码
Aug 30 Javascript
dojo学习第二天 ajax异步请求之绑定列表
Aug 29 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
Sep 05 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
May 05 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
Jul 09 Javascript
详解Angular Reactive Form 表单验证
Jul 06 Javascript
浅谈js获取ModelAndView值的问题
Mar 28 Javascript
基于vue如何发布一个npm包的方法步骤
May 15 Javascript
Vue v-for循环之@click点击事件获取元素示例
Nov 09 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
Nov 19 Javascript
如何在vue 中使用柱状图 并自修改配置
Jan 21 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
php mysql索引问题
2008/06/07 PHP
PHP n个不重复的随机数生成代码
2009/06/23 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
php显示时间常用方法小结
2015/06/05 PHP
PHP通过加锁实现并发情况下抢码功能
2016/08/10 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
JavaScript Chart 插件整理
2010/06/18 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
node.js不得不说的12点内容
2014/07/14 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
Vue动画事件详解及过渡动画实例
2019/02/09 Javascript
微信小程序实现下拉框功能
2019/07/16 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
Python变量作用范围实例分析
2015/07/07 Python
教大家使用Python SqlAlchemy
2016/02/12 Python
对python 命令的-u参数详解
2018/12/03 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
2019/05/23 Python
python模拟实现斗地主发牌
2020/01/07 Python
Python 面向对象之类class和对象基本用法示例
2020/02/02 Python
python实现银行实战系统
2020/02/26 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
最新茶叶店创业计划书
2014/01/14 职场文书
《称象》教学反思
2014/04/25 职场文书
妈妈活动方案
2014/08/15 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
专业技术职务聘任证明
2015/03/02 职场文书
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js