web前端学习(五)(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>

原文地址:https://www.cnblogs.com/foreverlin/p/10123046.html

时间: 2024-10-22 06:04:18

web前端学习(五)(9)-- jQuery菜单的相关文章

好程序员web前端学习路线分享jQuery学习技巧

好程序员web前端学习路线分享jQuery学习技巧,jQuery在web前端学习中是一个必不可少的内容,很多小伙伴都在学习这阶段的时候遇到问题,今天我们就来聊一下jQuery,让我们一起来看一看吧! 1.关于页面元素的引用 通过jquery的$引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定义的方法. 2.jQuery对象与dom对象的转换 只有jquery对象才能使用jquery定义的方

jQuery延迟加载(懒加载)插件 – jquery.lazyload.js-Web前端(W3Cways.com) - Web前端学习之路

Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预加载的处理方式正好是相反的. 在包含很多大图片长页面中延迟加载图片可以加快页面加载速度. 浏览器将会在加载可见图片之后即进入就绪状态. 在某些情况下还可以帮助降低服务器负担. Demo页面: 基本选项 淡入效果 对不支持JavaScript浏览器的降级处理 水平滚动 容器内水平滚动 容器内垂直滚动

WEB前端学习笔记 五

接web前端学习笔记第四篇,此篇为web学习笔记 五,在此感谢您的采集和转发,但请注明文章出自网知博学. 2.0.3  html标签的属性格式 现在我们知道了两个双标签分别是,标题标签:<h1> - <h6>.和段落标签:<p></p>还知道了一个换行的单标签:<br />,现在我们给<p></p>标签添加一个属性,来改变段落是右对齐,还是左对齐,还是居中. 如上图,<p>标签中的 align(中文就是排列的意

WEB前端学习笔记 一

最近时间比较充裕,整理了一下学习过的笔记,此篇笔记包含了:Html.Css.JavaScript.Jquery.以及使用帝国CMS或是织梦CMS建立自己的网站,也许也会整理一下PHP的笔记,如果时间允许会整理完全. 虽然笔记是从最基础的开始,但是,并不包含电脑的基础知识,所以你必须已经掌握了一些电脑的基本操作,比如开关机,你的电脑用的是什么操作系统,至少也要会用word和wps吧.浏览器是做什么的,什么拷贝.复制.粘贴.知道最基本的文件类型,如,文本文件,视频文件,图片文件,什么是可执行文件,分

WEB前端:02_Menu下拉菜单

menu下拉菜单 网站常用效果之一以下为简化版,用于学习javascript基础知识. 效果图: menu下拉菜单 - 纯JS简化版 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 6

Web前端学习小建议

这里跟大家扯一扯学习前端的小方法,是我自己的学习方法,大家凑合看看,倒也不一定对~ 在写css前,其实html的结构要是比较合理的,这样写css也会比较顺手.在写一个网页之前,建议先琢磨几分钟,不要上来就写.多去看看别人是怎么写的,然后结合自己的项目,心中有一个大致规划.可以先把最外层轮廓写好,先不着急去写某一个具体的部分. 这里给大家分享一些css小技巧: 1.使用reset.css火狐和IE这两种不同的浏览器,在绘制CSS样式方法上截然不同.这种情况下,使用reset.css重置所有的基本样

Web前端学习笔记(001)

....编号    ........类别    ............条目  ................明细....................时间 一.Web前端学习笔记                                    2016年6月15日10:38:53    /****************************************************************begin******************************

web前端学习的基础知识1

Web前端是一个很新的职业,在国内乃至国际上真正开始受到重视的时间不超过5年.Web前端开发是从网页制作演变而来的,名称上有很明显的时代特征.目前看来,这个一个就业前景很大的职业. web前端的学习不能一蹴而就,也不是那么轻而易举就能够学会的,需要我们慢慢的去学习,去理解. 今天,给大家说的就是一些web前端学习中的一些基础知识. web前端中使用的语言不是我们人与人之间进行交流的语言,而是计算机语言.计算机的语言有很多种:C.PHP.Rudy.Java.C#.Basic.JS.....这里主要

Web前端学习第二篇

今天看到了一篇写的不错的文章,是有关对JQuery.js等一些源代码初识的内容,感觉写的还是不错,所以拿过来分享一下. 文章的地址:http://my249645546.iteye.com/blog/1716629 1.对(function(){})(); 几乎所有的开源js代码开篇都是这样(function(……){……})(……); 下面是Jquery的部分源码: (function( window, undefined ) { var jQuery = function( selector

python基础下的web前端学习之HTML(一)

一.参考书籍: <Web 前端开发 HTML5+CSS3+jQuery+AJAX 从学到用完美实践> 备注:本书为工具书. 二.HTML5元素: 按功能划分:基础.格式.表单.框架.图像.音频/视频.链接.列表.表格.样式/节.元信息.编程.(参考P76) 元素属性:基本属性.语言属性.键盘属性.内容属性.延伸属性等.(参考P82) 三.结构基础: <!DOCTYPE html> #<!DOCTYPE>元素定义文档类型为html <html lang="