源码下载地址:
链接:https://pan.baidu.com/s/1x9c1...
提取码:2bzr
如果有赞就很幸福了.

今天要和你们分享的是我看了JQuery库的手风琴列表样式。
它的核心在于它的JQuery代码思想,对于html或者是css都是次要的,在前端中,这种列表十分常用,一起学习起来吧。
开始讲解前,为大家做一些知识储备,在接下来的实操中会用到。

1.on()方法:在被选元素及子元素上添加一个或多个事件处理程序,它有三个参数。
event:事件名称,例如click.
childSelector:指定的子元素上的事件处理程序,不是选择器本身.
function:事件发生时运行的函数.
在实践中的会这样体现这个方法:

$(".accordion > li").on('click', '.link', function(){ // }

2.slideToggle()方法
在被选元素上进行 slideUp() 和 slideDown() 之间的切换。
该方法检查被选元素的可见状态。
如果一个元素是隐藏的,则运行 slideDown()
如果一个元素是可见的,则运行 slideUp() - 这会造成一种切换的效果。

3.parent()方法
表示当前选择器选中元素的父级

4.childern()方法
表示当前选择器选中元素的子级

5.toggleClass()方法
添加或者移除一个类名

6.find()方法
返回被选元素的后代元素,可以指定class为哪个名称。

接下来分为三个模块跟大家来讲解:

Html模块:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜单</title>
<link rel="stylesheet" type="text/css" href="css/nav.css">//导入css文件
<link rel="stylesheet" href="http://www.jq22.com/jquery/font-awesome.4.6.0.css"> //图标样式
<script src="js/jquery-3.1.1.min.js"></script>
<script src="js/nav.js"></script>
</head>
<body>
<div>
<ul id="accordion" class="accordion">
<li>//这一层为列表标题栏目,点击可以展开
<div class="link"><i class="fa fa-paint-brush "></i>语音技术voice<i class="fa fa-chevron-down"></i></div>
<ul class="submenu">
<li><a href="#">语音识别</a></li>
<li><a href="#">语音合成</a></li>
<li><a href="#">语音唤醒</a></li>
<li><a href="#">智能呼叫中心</a></li>
</ul>
</li>
<li>
<div class="link"><i class="fa fa-code"></i>图像技术photo<i class="fa fa-chevron-down"></i></div>
<ul class="submenu">
<li><a href="#">文字识别</a></li>
<li><a href="#">图像识别</a></li>
<li><a href="#">图像审核</a></li>
<li><a href="#">图像搜索</a></li>
</ul>
</li>
<li>
<div class="link"><i class="fa fa-mobile"></i>人脸与人体识别face<i class="fa fa-chevron-down"></i></div>
<ul class="submenu">
<li><a href="#">人脸识别</a></li>
<li><a href="#">人体分析</a></li>
</ul>
</li>
<li>
<div class="link"><i class="fa fa-globe"></i>视频技术video<i class="fa fa-chevron-down"></i></div>
<ul class="submenu">
<li><a href="#">视频内容分析</a></li>
<li><a href="#">视频封面选取</a></li>
<li><a href="#">视频比对检索</a></li>
<li><a href="#">视频内容审核</a></li>
</ul>
</li>
</ul>
</div>
</body>
</html>

CSS板块

* {
margin:0;
padding:0;
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box
} /*初始化*/
body {
background:#2d2c41;
font-family:open sans, Arial, Helvetica, Sans-serif, Verdana, Tahoma;
} /*使用什么字体*/
ul {
list-style-type:none; /*去掉前面小圆点*/
}
.accordion {
max-width: 360px;
width: 100%;
background-color: #ffffff;
-webkit-border-radius:4px;
-moz-border-radius:4px;
border-radius: 4px;
margin: 30px auto 20px;
}
.accordion .link{
cursor: pointer;
display: block;
padding: 15px 15px 15px 42px;
color: #4d4d4d;
font-size: 14px;
font-weight:700;
border-bottom:1px solid #ccc;
position:relative;
}
.accordion li i {
position:absolute;
top:16px;
left:12px;
font-size:18px;
color:#595959;
}
.accordion li i.fa-chevron-down {
right:12px;
left:auto;
font-size:16px
-webkit-transition:all .4s ease;
-o-transition:all .4s ease;
transition:all .4s ease
}
.submenu {
display:none;
background:#444359;
font-size:14px
}
.display{
display: block;
}
.submenu li {
border-bottom:1px solid #4b4a5e
}
.submenu a {
display:block;
text-decoration:none;
color:#d9d9d9;
padding:12px;
padding-left:42px;
-webkit-transition:all .25s ease;
-o-transition:all .25s ease;
transition:all .25s ease
}
.submenu a:hover {
background:#b63b4d;
color:#fff;
}
.fa-chevron-down-hover{ /* JQ对它的操作:点击后添加这个class,再次点击后去除这个class*/
-webkit-transform:rotate(180deg);
-ms-transform:rotate(180deg);
-o-transform:rotate(180deg);
transform:rotate(180deg)
}

JQ部分(重点)

$(function(){
$(".accordion > li").on('click', '.link', function() {
$(this).next(".submenu").slideToggle(500);
//这里的this代表的就是html模块中:class为link的div;link的next()就为submenu,功能为:下拉列表的出现与消失
$(this).parent().siblings().children('.submenu').slideUp(500);
//如果一个列表展开,其他的兄弟列表就要收起
$(this).find(".fa-chevron-down").animate().toggleClass("fa-chevron-down-hover");
//关于图标旋转问题,点击一下旋转180度,再次点击回来原来的位置
$(this).parent().siblings().children(".link").find(".fa-chevron-down").animate().removeClass("fa-chevron-down-hover");
//除了被点击的li,所有的li都要去掉fa-chevron-down-hover 这个class
console.log("方法被执行");
});
});

以上就是我今天的分享
有时候要学会与未来的自已对话,不要被未来的自已当成陌生人,问未来的自已你想要现在的我:为你做一些什么样的努力.
希望我们都一直在进步的路上.

《第40天 : JQuery - 手风琴列表》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. P1115 最大子段和(简单DP)

    题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入格式 第一行是一个正整数NN,表示了序列的长度. 第二行包含NN个绝对值不大于1000010000的整数A_iAi​,描述了这段序 ...

  2. IDEA Maven项目 pom.xml 找不到 Dependency 依赖

    转载: IDEA Maven项目 pom.xml 找不到 Dependency 依赖 如果你的pom.xml中使用了dependencyManagement管理依赖并且添加了你本地仓库中不存在的依赖可 ...

  3. 0-1-Tree CodeForces - 1156D (并查集)

    大意: 给定树, 边权为黑或白, 求所有有向路径条数, 满足每走过一条黑边后不会走白边. 这题比赛的时候想了个假算法, 还没发现..... 显然所求的路径要么全黑, 要么全白, 要么先全白后全黑, 所 ...

  4. jq each遍历数组或对象

    var arr = ["北京","上海","天津","重庆","河北","河南" ...

  5. VMware安装,安装CentOS 6.3 ,安装CentOS 7_1511_mini

    VMware安装包+汉化包+序列号 百度云链接:https://pan.baidu.com/s/1c8ZsZc9ySdCdxrywFO4eUA 提取码:iq7k 打开 VMware Workstati ...

  6. Maven项目构建利器05——Maven的生命周期

    Maven各个构建环节执行的顺序: 不能打乱顺序, 必须按照既定的正确顺序(编译,测试.打包.部署)来执行Maven的核心程序中定义了抽象的生命周期, 生命周期中各个阶段的具体任务是由插件来完成的,可 ...

  7. 接口开发中 遇到的坑——Java byte与C# byte 数据转换问题

    前提: 公司与其他公司进行接口对接 需要使用Byte[]数据流传输数据 原本想法如下:直接IO生成就ok了 using System; using System.IO; using System.Te ...

  8. 多线程使用@Async注解创建多线程,自定义线程池

    转载自博客https://www.jianshu.com/p/7ac04a501eba

  9. InnoDB和MyISAM的六大区别

    本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群:   281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29Lo ...

  10. axios获取响应头

    [转载] 来源:https://segmentfault.com/a/1190000009125333 在用 axios 获取 respose headers 时候获取到的只有的 Object { c ...