【jQuery笔记Part2】02-jQuery展开&收起动画&帷幔效果案例&下拉菜单案例&显示隐藏更多案例&折叠菜单案例

jQuery笔记目录

HTML DOM overflow 属性

overflow 属性规定如何处理如何处理不符合元素框的内容。

Object.style.overflow=visible|hidden|scroll|auto
描述
visible内容不会被修剪,会呈现在元素框之外。
hidden内容会被修剪,但是浏览器不会显示供查看内容的滚动条。
scroll内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto由浏览器决定如何显示。如果需要,则显示滚动条。

具体示例:菜鸟教程 CSS overflow 属性

展开 slideDown(毫秒, 完成回调函数)

$(this).slideDown(1000)

收起 slideUp(毫秒, 完成回调函数)

$(this).slideUp(1000);

切换 slideToggle(毫秒, 完成回调函数)

$('.wm').slideToggle(1000);

案例:帷幔效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {padding: 0;margin: 0;}
        .box {
            width: 646px;
            height: 363px;
            margin: 100px auto;
            border: 1px solid orange;
            position: relative;
            overflow: hidden;
        }
        .box p {
            width: 100%;
            height: 100%;
            text-align: center;
            line-height: 360px;
        }
        .left {
            background: url("images/weiman_left.jpg") no-repeat;
            width: 343px;
            height: 363px;
            position: absolute;
            top: 0;
            left: 0;
        }
        .right {
            background: url("images/weiman_right.jpg") no-repeat;
            width: 303px;
            height: 363px;
            position: absolute;
            top: 0;
            right: 0;
        }
    </style>
</head>
<body>
    <div class="box">
        <p>看什么看,关上!</p>
        <div class="wm left"></div>
        <div class="wm right"></div>
    </div>
<script type="text/javascript" src="lib/jquery-3.3.1.js"></script>
<script type="text/javascript">
    $(function () {
        $('body').click(function () { /*点击body部分,调用切换*/
            $('.wm').slideToggle(1000);
        });
        $('.left').click(function () {
            event.stopPropagation(); /*阻止传播,即阻止了点击body 的事件*/
            $(this).slideUp(1000);  /*点击左边的帷幕div,则向上滑动*/
        });
        $('.right').click(function () {
            event.stopPropagation(); /*阻止传播,即阻止了点击body 的事件*/
            $(this).slideUp(1000); /*点击右边的帷幕div,则向上滑动*/
        })
    });
</script>
</body>
</html>

运行效果:
点击左侧帷幕,则左侧帷幕上滑;
点击右侧帷幕,则右侧帷幕上滑;
点击没有帷幕的部分,则左右帷幕状态各自切换。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

案例:下拉菜单

stop() 方法具体用法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery展开&收起动画案例-下拉菜单</title>
    <style>
        * {
            padding: 0;
            margin: 0;
            list-style: none;
        }
        .firstNav {
            width: 600px;
            height: 44px;
            margin: 100px auto;
            border: 1px solid #cccccc;
            cursor: pointer; /*鼠标变为小手*/
        }

        .firstNav>li {
            width: 100px;
            float: left;
            text-align: center;
        }

        .firstNav>li>span {
            display: inline-block;
            width: 100%;
            height: 44px;
            line-height: 44px;
        }

        .secondNav {
            border: 1px solid #cccccc;
            border-top: none;
        }

        .secondNav>li {
            margin-top: 1px;
        }

        .secondNav {
            display: none;
        }

        .current .secondNav {
            display: block;
        }
    </style>
</head>
<body>
    <ul class="firstNav">
        <li class="current">
            <span>一级菜单1</span>
            <ul class="secondNav">
                <li>二级菜单1</li>
                <li>二级菜单2</li>
                <li>二级菜单3</li>
                <li>二级菜单4</li>
                <li>二级菜单5</li>
            </ul>
        </li>
        <li>
            <span>一级菜单1</span>
            <ul class="secondNav">
                <li>二级菜单1</li>
                <li>二级菜单2</li>
                <li>二级菜单3</li>
                <li>二级菜单4</li>
                <li>二级菜单5</li>
            </ul>
        </li>
        <li>
            <span>一级菜单1</span>
            <ul class="secondNav">
                <li>二级菜单1</li>
                <li>二级菜单2</li>
                <li>二级菜单3</li>
                <li>二级菜单4</li>
                <li>二级菜单5</li>
            </ul>
        </li>
        <li>
            <span>一级菜单1</span>
            <ul class="secondNav">
                <li>二级菜单1</li>
                <li>二级菜单2</li>
                <li>二级菜单3</li>
                <li>二级菜单4</li>
                <li>二级菜单5</li>
            </ul>
        </li>
        <li>
            <span>一级菜单1</span>
            <ul class="secondNav">
                <li>二级菜单1</li>
                <li>二级菜单2</li>
                <li>二级菜单3</li>
                <li>二级菜单4</li>
                <li>二级菜单5</li>
            </ul>
        </li>
        <li>
            <span>一级菜单1</span>
            <ul class="secondNav">
                <li>二级菜单1</li>
                <li>二级菜单2</li>
                <li>二级菜单3</li>
                <li>二级菜单4</li>
                <li>二级菜单5</li>
            </ul>
        </li>
    </ul>

<script type="text/javascript" src="lib/jquery-3.3.1.js"></script>
<script type="text/javascript">
    $(function () {
        // 1.1 先让第一个二级菜单隐藏
        $('.firstNav>li.current .secondNav').css('display','none');

        // 1.2 监听鼠标进入
        /*
        $('.firstNav>li').hover(function () {
            $(this).children('.secondNav').slideDown(200);
            $(this).siblings().children('.secondNav').slideUp(200);
        },function () {
            $(this).children('.secondNav').slideUp(200);
        })
        // 此段代码与下面的代码效果相同
        */
        $('.firstNav>li').hover(function () { // 给所有的一级菜单添加鼠标悬浮事件
            $(this).children('.secondNav').stop().slideToggle(200); // stop停止动画再调用切换,则只有当前元素有特效
        })

    });
</script>

</body>
</html>

运行效果:
鼠标停在哪个一级菜单,则这个一级菜单下拉二级菜单,鼠标移走则收回。
在这里插入图片描述

js 中 == 与 === 的区别

== 叫做相等运算符,只要值相等即可为真。
=== 叫做严格运算符,不仅要求值相等,类型也要求相等。

案例:显示隐藏更多

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery展开&收起动画案例-显示隐藏更多</title>
    <style>
        * {
            padding: 0;
            margin: 0;
            list-style: none;
        }
        .box {
            width: 450px;
            border: 1px solid #ccc;
            margin: 100px auto;
            text-align: center;
        }
        .box ul {
            overflow: hidden;
        }
        .box ul>li {
            width: 150px;
            height: 30px;
            line-height: 30px;
            text-align: center;
            float: left; /*设置浮动,不设置的话li会一排排显示*/
        }
        .box button {
            width: 150px;
            height: 30px;
            line-height: 30px;
            border: 1px solid #909EAB;
            text-align: center;
            margin: 10px 0;
        }
    </style>
</head>
<body>
<div class="box">
    <ul>
        <li>香蕉</li>
        <li>苹果</li>
        <li>梨子</li>
        <li>猕猴桃</li>
        <li>橙子</li>
        <li>桃子</li>
        <li>哈密瓜</li>
        <li>西红柿</li>
        <li>西瓜</li>
        <li>荔枝</li>
        <li>榴莲</li>
        <li>人生果</li>
    </ul>
    <button>显示更多</button>
</div>

<script type="text/javascript" src="lib/jquery-3.3.1.js"></script>
<script type="text/javascript">
    $(function () {
        // 1.设置默认的隐藏
        $('.box>ul>li:gt(2)').hide() /*大于2的li隐藏*/
        
        // 2.监听按钮的点击
        $('.box>button').click(function () {
            // 2.1 改变文字
            var text = $(this).text() === '显示更多' ? '隐藏': '显示更多';
            $(this).text(text);
            $('.box>ul>li:gt(2)').slideToggle(); /*大于2的li进行切换*/
        })
    });
</script>

</body>
</html>

运行效果:
默认只显示前三个;
点击显示更多,则显示全部,并且按钮改成隐藏;
点击隐藏,则只显示前三个,并且按钮改成显示更多。
在这里插入图片描述

在这里插入图片描述

案例:折叠菜单

CSS cursor 属性:一些不同的光标。

cursor 具体用法(菜鸟教程)

CSS3 transform 属性:旋转 div 元素

transform 具体用法(菜鸟教程)

end() 返回调用链的上一级。

即,将匹配的元素列表变为前一次的状态。end() 具体用法

find() 搜索所有与指定表达式匹配的元素

这个函数是找出正在处理的元素的后代元素的好方法。find() 具体用法

案例代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery展开&收起动画案例-折叠菜单</title>
    <style>
        * {padding: 0;margin: 0;list-style: none;}
        .nav {width: 300px;margin: 100px auto;border: 1px solid orange;}
        .top {
            width: 300px;
            height: 30px;
            line-height: 30px;
            box-sizing: border-box;
            background: orange;
            border-bottom: 1px solid white;
            cursor: pointer;
        }
        .top .arrow {
            background: url("images/arrow_right.png") no-repeat;
            float: right;
            width: 16px;
            height: 16px;
            margin-top: 7px;
        }
        .list {
            width: 100px;
            display: none;
        }
    </style>
</head>
<body>

<ul class="nav">
    <li>
        <div class="top">
            <span class="arrow"></span>
            <span>一级菜单</span>
        </div>
        <div class="list">
            <ul>
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
            </ul>
        </div>
    </li>
    <li>
        <div class="top">
            <span class="arrow"></span>
            <span>一级菜单</span>
        </div>
        <div class="list">
            <ul>
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
            </ul>
        </div>
    </li>
    <li>
        <div class="top">
            <span class="arrow"></span>
            <span>一级菜单</span>
        </div>
        <div class="list">
            <ul>
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
            </ul>
        </div>
    </li>
    <li>
        <div class="top">
            <span class="arrow"></span>
            <span>一级菜单</span>
        </div>
        <div class="list">
            <ul>
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
            </ul>
        </div>
    </li>
</ul>

<script type="text/javascript" src="lib/jquery-3.3.1.js"></script>
<script type="text/javascript">
    $(function () {
        // 1. 监听li标签的点击
        $('.nav>li').click(function () {
            $(this).children('.list').slideDown().end().siblings().children('.list').slideUp();

            // 2. 处理箭头旋转
            $('.top .arrow').css({
                'transform': 'rotate(0deg)'
            });

            $(this).find('.arrow').css({
                'transform': 'rotate(90deg)'
            });
        })
    });
</script>
</body>
</html>

运行效果:
点击一级菜单,会产生二级菜单的下拉列表。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌宅鹿同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值