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 相关文章推荐
清除网页历史记录,屏蔽后退按钮!
Dec 22 Javascript
js实现在文本框光标处添加字符的方法介绍
Nov 24 Javascript
JavaScript获取/更改文本框的值的实例代码
Aug 02 Javascript
JS实现程序暂停与继续功能代码解读
Oct 10 Javascript
jquery中交替点击事件toggle方法的使用示例
Dec 08 Javascript
js实现上传图片及时预览
May 07 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
Sep 08 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
Dec 07 Javascript
Vue实现virtual-dom的原理简析
Jul 10 Javascript
利用vue.js把静态json绑定bootstrap的table方法
Aug 28 Javascript
vue路由分文件拆分管理详解
Aug 13 Javascript
VUE+Element实现增删改查的示例源码
Nov 23 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 什么是PEAR?(第二篇)
2009/03/19 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
php设计模式之职责链模式定义与用法经典示例
2019/09/19 PHP
判断ie的两种简单方法
2013/08/12 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
js定时器(执行一次、重复执行)
2014/03/07 Javascript
javascript实现简单的省市区三级联动
2015/05/14 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
javascript实现弹幕墙效果
2019/11/28 Javascript
vuex分模块后,实现获取state的值
2020/07/26 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
通过实例解析javascript Date对象属性及方法
2020/11/04 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
用python写测试数据文件过程解析
2019/09/25 Python
美国婚礼和派对礼品网站:Kate Aspen(新娘送礼会、迎婴派对)
2018/03/28 全球购物
卫生系统先进事迹
2014/05/13 职场文书
会计专业求职信范文
2015/03/19 职场文书
新学期开学寄语2016
2015/12/04 职场文书
2019年圣诞节祝福语集锦
2019/12/25 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL
python基础学习之生成器与文件系统知识总结
2021/05/25 Python
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js
方法汇总:Python 安装第三方库常用
2022/04/26 Python
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers