前端(jQuery)(9)-- jQuery菜单
1、垂直菜单布局
2、垂直菜单实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="jquery-3.3.1.min.js"></script>
<script>
$(document).ready(function(){
$(".main>a").click(function(){
var ulNode = $(this).next("ul");
// if(ulNode.css("display")=="none"){
// ulNode.css("display", "block");
// }else{
// ulNode.css("display","none");
// }/*这种方法有些繁琐。*/
// ulNode.hide();/*隐藏*/
// ulNode.show();/*显示*/
//ulNode.toggle(500);/*显示/隐藏 这种是相对上面方便的方法*/
/*
* 数字、slow、normal、fast
* */
// ulNode.slideDown();
// ulNode.slideUp();//这两种方法也需要自己进行判断。
ulNode.slideToggle();//这种方法就不需要自己进行判断了。
});/*用尖角号防止点击子菜单也会执行上面函数*/
});
</script>
<style>
ul,li{
list-style: none;
}
ul{
padding:0px;/*覆盖子菜单的缩进*/
margin:0px;/*防止ie浏览器的问题。*/
}
.main{
background-image: url("images/title.gif");
background-repeat: repeat-x;
width:100px;
}
li{
background-color:#eeeeee;
}
a{
text-decoration: none;
padding-left:20px;
display:block;
width:80px;
padding-top:3px;
padding-bottom:3px;
}
.main>a{
color:white;
background-image: url("images/collapsed.gif");
background-repeat:no-repeat;
background-position:3px center;/*距离左面3px,垂直方向居中*/
}
.main li a{
color:black;
background-image:none;
}
.main ul{
display:none;
}
</style>
</head>
<body>
<ul>
<li class="main">
<a href="#">菜单1</a>
<ul>
<li><a href="">子菜单1</a></li>
<li><a href="">子菜单2</a></li>
</ul>
</li>
<li class="main">
<a href="#">菜单2</a>
<ul>
<li><a href="">子菜单1</a></li>
<li><a href="">子菜单2</a></li>
</ul>
</li>
<li class="main">
<a href="#">菜单3</a>
<ul>
<li><a href="">子菜单1</a></li>
<li><a href="">子菜单2</a></li>
</ul>
</li> </ul>
</body>
</html>
3、水平菜单的实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="jquery-3.3.1.min.js"></script>
<script>
$(document).ready(function () {
isClick = 1;
/*为了防止多次点击而设置的变量*/
$(".main>a").click(function () {
// 这里有个非常nice的写法:$(".main>a,.hmain>a").click(function(){
// if (isClick) {
// isClick = 0;
var ulNode = $(this).next("ul");
ulNode.stop(true,false).slideToggle();/*详情查询stop函数的用法啊,取消回调函数,两个参数第一个参数决定是否取消当前正在执行的动画,
第二个参数决定是否立即完成当前正在执行的动画。
我们在这里使用的动画效果不足以用到第一个参数,所以这里true和false都是可以的。
这里实现了如何避免动画重复的功能
*/
/*插两个标签:hover、stop标签*/
changeIcon($(this));
// setTimeout(function () {
// isClick = 1;
// }, 1000);
// /*如何处理多次点击造成的之后一直执行动作的方法。
// 这里用的是toggle()函数所以没法分开两个动作的处理
// 比如在还没展开完毕的时候再次点击没有实现直接收回动作。*/
// }
});
// $(".hmain").hover(function(){
// $(this).children("ul").slideToggle();
// });//这是一种比较简单的方法,下面还有一种很奇妙的方法,给hover两个函数对象作为参数。
isHover = 1;
/*为了防止多次点击而设置的变量*/ $(".hmain").hover(function () {
$(this).children("ul").stop(false,false).slideDown(500);
changeIcon($(this).children("a"));
/*点击的是main的子元素a标签之后执行的动作。*/
}
, function () {
$(this).children("ul").stop(false,false).slideUp(500);
changeIcon($(this).children("a"));
}
);
/*jQuery官方文档中有介绍,这是有两个参数时的方法。
一个参数是鼠标放上去的时候有的动作,第二个参数时鼠标离开时将要执行的动作。*/ }); function changeIcon(mainNode) {
if (mainNode) {
if (mainNode.css("background-image").indexOf("collapse.gif") >= 0) {/*indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。*/
mainNode.css("background-image", "url('images/expanded.gif')");
} else {
mainNode.css("background-image", "url('images/collapse.gif')");
}
}
}
</script>
<style>
ul, li {
list-style: none;
} ul {
padding: 0px; /*覆盖子菜单的缩进*/
margin: 0px; /*防止ie浏览器的问题。*/
} .main, .hmain {
background-image: url("images/title.gif");
background-repeat: repeat-x;
width: 100px;
} li {
background-color: #eeeeee;
} a {
text-decoration: none;
padding-left: 20px;
display: block;
width: 80px;
padding-top: 3px;
padding-bottom: 3px;
} .main > a, .hmain > a {
color: white;
background-image: url("images/collapsed.gif");
background-repeat: no-repeat;
background-position: 3px center; /*距离左面3px,垂直方向居中*/
} .main li a, .hmain li a {
color: black;
background-image: none;
} .main ul, .hmain ul {
display: none;
} .hmain {
float: left;
margin-right: 3px;
}
</style>
</head>
<body>
<ul>
<li class="main">
<a href="#">菜单1</a>
<ul>
<li><a href="">子菜单1</a></li>
<li><a href="">子菜单2</a></li>
</ul>
</li>
<li class="main">
<a href="#">菜单2</a>
<ul>
<li><a href="">子菜单1</a></li>
<li><a href="">子菜单2</a></li>
</ul>
</li>
<li class="main">
<a href="#">菜单3</a>
<ul>
<li><a href="">子菜单1</a></li>
<li><a href="">子菜单2</a></li>
</ul>
</li> <br/>
<li class="hmain">
<a href="#">菜单1</a>
<ul>
<li><a href="">子菜单1</a></li>
<li><a href="">子菜单2</a></li>
</ul>
</li>
<li class="hmain">
<a href="#">菜单2</a>
<ul>
<li><a href="">子菜单1</a></li>
<li><a href="">子菜单2</a></li>
</ul>
</li>
<li class="hmain">
<a href="#">菜单3</a>
<ul>
<li><a href="">子菜单1</a></li>
<li><a href="">子菜单2</a></li>
</ul>
</li>
</ul>
</body>
</html>
前端(jQuery)(9)-- jQuery菜单的更多相关文章
- 知问前端——概述及jQuery UI
知问系统,是一个问答系统.主要功能:即会员提出问题,会员回答问题.目前比较热门的此类网站有:知乎http://www.zhihu.com.百度知道http://zhidao.baidu.com等.这里 ...
- 简单jQuery 实现手风琴菜单
简单jQuery 实现手风琴菜单 css代码 如下: *{ margin: 0; padding: 0; } #accordion{ width: 500px; } #accordion>div ...
- 前端学习之jquery/下
前端学习之jquery 一 属性操作 html(): console.log($("div").html()); $(".test").html("& ...
- 前端学习之jquery
前端学习之jquery 1. 什么是jQuery对象? jQuery对象就是通过jQuery包装DOM对象后产生的对象.jQuery对象是jQuery独有的.如果一个对象是jQuery对象,那么它 ...
- 近20个绚丽实用的jQuery/CSS3侧边栏菜单(转载)
http://developer.51cto.com/art/201510/493530.htm 近20个绚丽实用的jQuery/CSS3侧边栏菜单 jQuery作为一款主流的JavaScript前端 ...
- Python学习(二十三)—— 前端基础之jQuery
转载自http://www.cnblogs.com/liwenzhou/p/8178806.html 一.jQuery入门 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQue ...
- 前端基础之jQuery入门 01
jQuery介绍 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行Ajax交互, ...
- 第一百七十七节,jQuery,知问前端--概述及 jQuery UI
jQuery,知问前端--概述及 jQuery UI 学习要点: 1.项目介绍 2.jQuery UI 3.UI 主题 一.项目介绍 我们重点仿照“知乎”的架构模式来搭建界面和布局,以及大部分前端功能 ...
- 前端基础 之 jQuery
浏览目录 jQuery介绍 jQuery的优势 jQuery对象 jQuery内容 一.jQuery介绍 1.jQuery是一个轻量级的.兼容多浏览器的JavaScript库. 2.jQuery使用户 ...
- 前端(5)之jQuery
前端(5)之jQuery jQuery介绍 1.jQuery是一个轻量级的,兼容多浏览器的JavaScript库. 2.jQuery使用户能够更方便地处理HTML Document.Events.实现 ...
随机推荐
- nginx 配置文件备份 nginx.conf and vhosts
bogon:vhosts xingchong$ brew services restart nginx Stopping `nginx`... (might take a while) ==> ...
- Django流程
开始具体的代码之旅前,先来宏观地看下Django是如何处理Http Resquest的,如下图: 假设你已经在浏览器输入了 http://127.0.0.1:8000/polls/,接下来浏览器会把请 ...
- 关于电容与Q值
1, 电容模型 电容阻抗可以表示为: 可算得自谐振频率点为: 在该点,容抗与感抗差为0,电容表现出纯电阻性. 2, 阻抗曲线 自谐点是区分电容器呈容性还是感性的分界点.从阻抗曲线看,在自谐点附近阻抗较 ...
- <input> type 属性
单行文本域 语法格式:<input type = “text” 属性 = “值” /> 常用属性 1 name:文本框的名字.命名规则是:可以包含字母.数字.下划线,只能以字母开头. ...
- window查看端口信息
netstat -nao |findstr "2129" 列出所有端口的情况 tasklist|findstr "pid" 查看对应进程信息
- layui -关闭窗口方法
1.关闭当前窗口 var index=parent.layer.getFrameIndex(window.name); //获取当前窗口的nameparent.layer.close(index); ...
- nginx+supervisor 前后端分离项目的发布流程
[第一部分] 前端发布(vue项目),假设项目名为demo_vue Step1:编译打包前端项目 cd到demo_vue目录下, 执行cnpm run build:prod命令,生成disc文件夹 S ...
- 795. Number of Subarrays with Bounded Maximum
数学的方式 是对于所有的字符分成简单的三类 0 小于 L 1 LR 之间 2 大于R 也就是再求 不包含 2 但是包含1 的子数组个数 不包含2的子数组个数好求 对于连续的相邻的n个 非2类数 就有 ...
- 如何在easyui datagrid 中显示外键的值
1.需要在角色列表显示角色类别的值,而角色类别是外键,关联数据字典,明细见下图: 2.代码如下: columns: [[ { field: 'ck', checkbox: true, align: ' ...
- ORA-01790: 表达式必须具有与对应表达式相同的数据类型
出现这种错误,要先看一下是不是sql中有用到连接:union,unio all之类的,如果有,需要注意相同名称字段的数据类型一定要相同.