源码下载地址:
链接: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. json格式和对象类型的转换20170330

    (1)对象的类型转换成字符串类型(或者更确切的说是json类型的) JSONObject jo = JSONObject.fromObject(map);常见的java代码转换成json 比如:后台J ...

  2. 安装运行zookeeper的坑

    从官网下载zookeeper的地址中有俩文件 一个是apache-zookeeper-3.5.5.tar.gz ,另一个是apache-zookeeper-3.5.5-bin.tar.gz 若是使用前 ...

  3. [WPF]鼠标位置捕捉

    private void StackPanel_MouseMove(object sender, MouseEventArgs e) {     Debug.WriteLine("Move& ...

  4. java io 文件下载功能

    一. @RequestMapping(value = "/download/{filename}") public void downloadFile(HttpServletReq ...

  5. 将本地的java项目提交到github出错解决

    1.我们新建一个了java项目后,需要提交到github进行版本控制 2.如果此时github中的仓库不为空,我们在本地使用git push提交时会报以下错误, ! [rejected]       ...

  6. leetcode957. N 天后的牢房

    8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它就会被空置. ...

  7. jfinal layui easyexcel 实现文件的上传下载

    jfinal  layui easyexcel  这三样开源技术这里就不多介绍了,自行百度了解吧,他们的组合算是一个很高效又不失美观的操作体验. 操作主要分以下几步: 1.建立jfinal的操作环境, ...

  8. kickstart一键装机部署

    1.第一步安装DHCP yum -y install dhcp 1.1配置修改文件 cat >> /etc/dhcp/dhcpd.conf <<END subnet 172.1 ...

  9. nodejs fs copy本地文件src dst

    1. // fs.writeFileSync(pathNewFile, fs.readFileSync(fileName)); 2.   fs.createReadStream(fileName).p ...

  10. scrapy 运行时报错 No module named _sqlite3

    新服务器上运行scrapy时报错 exceptions.ImportError: No module named _sqlite3 原因 由于新的环境缺少sqlite的依赖,编译python3是虽然不 ...