jQuery fadeToggle()方法
jQuery 的 fadeToggle() 方法是一个强大的动画函数,它能够在淡入(fadeIn)和淡出(fadeOut)效果之间切换。如果元素当前是可见的,fadeToggle() 会使其逐渐变为不可见(淡出);如果元素当前是不可见的(opacity 为 0 或 display 属性为 none),fadeToggle() 则会使其逐渐变为可见(淡入)。
基本用法
fadeToggle() 方法的基本语法如下:
$(selector).fadeToggle(speed, callback);
- selector:一个 jQuery 选择器,用于选择你想要应用淡入淡出切换效果的元素。
- speed(可选):动画的速度。可以是字符串- "slow"(600 毫秒)、- "fast"(200 毫秒)或数字(表示毫秒数)。如果省略此参数,则动画会立即完成(但实际上,由于- fadeToggle()是基于透明度的变化,所以即使速度设置为 0,动画仍然会有一定的持续时间,只是非常短)。
- callback(可选):一个在动画完成后执行的函数。
示例
- 基本淡入淡出切换
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jQuery fadeToggle() 方法</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        $(document).ready(function(){
            $("#toggleButton").click(function(){
                $("#myDiv").fadeToggle();
            });
        });
    </script>
    <style>
        #myDiv {
            width: 100px;
            height: 100px;
            background-color: lightblue;
            display: none; /* 初始状态为隐藏,以便首次点击时显示 */
        }
    </style>
</head>
<body>
    <button id="toggleButton">切换 Div 的淡入淡出</button>
    <div id="myDiv"></div>
</body>
</html>
在这个示例中,首次点击按钮会使隐藏的 div 元素逐渐变为可见(淡入),再次点击则会使可见的 div 元素逐渐变为不可见(淡出)。
- 带动画速度的淡入淡出切换
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jQuery fadeToggle() 方法 - 带速度</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        $(document).ready(function(){
            $("#toggleButton").click(function(){
                $("#myDiv").fadeToggle("slow"); // 使用慢速动画
            });
        });
    </script>
    <style>
        #myDiv {
            width: 100px;
            height: 100px;
            background-color: lightcoral;
            opacity: 1; /* 初始状态为完全可见,但为了演示切换,我们会在CSS中设置display为none或通过JS控制 */
            display: none; /* 初始隐藏 */
        }
    </style>
</head>
<body>
    <button id="toggleButton">切换 Div 的淡入淡出(带速度)</button>
    <div id="myDiv"></div>
</body>
</html>
在这个示例中,div 元素的淡入淡出切换效果会带有动画,并且速度较慢。
- 使用回调函数
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jQuery fadeToggle() 方法 - 使用回调函数</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        $(document).ready(function(){
            $("#toggleButton").click(function(){
                $("#myDiv").fadeToggle("fast", function() {
                    if ($(this).css("display") === "none") {
                        alert("元素已淡出并隐藏!");
                    } else {
                        alert("元素已淡入并显示!");
                    }
                });
            });
        });
    </script>
    <style>
        #myDiv {
            width: 100px;
            height: 100px;
            background-color: lightgreen;
            opacity: 1; /* 初始状态为完全可见,但为了演示切换,我们会在CSS中设置display为none或通过JS控制 */
            display: none; /* 初始隐藏 */
        }
    </style>
</head>
<body>
    <button id="toggleButton">切换 Div 的淡入淡出(带回调)</button>
    <div id="myDiv"></div>
</body>
</html>
在这个示例中,当 div 元素的淡入淡出切换效果完成后,会根据元素的最终显示状态弹出一个提示框。
注意事项
- fadeToggle()方法只改变元素的- opacity属性,而不改变其- display属性。但是,在动画完成后,如果元素的- opacity变为- 0,jQuery 可能会将- display属性设置为- none,反之亦然。
- 如果元素被其他 CSS 规则(如 visibility: hidden;)隐藏,fadeToggle()可能无法正常工作,因为它依赖于opacity属性的变化。
- 你可以结合其他 jQuery 动画方法(如 slideUp()、slideDown())来创建更复杂的动画效果。
总结
fadeToggle() 方法是 jQuery 中用于在淡入和淡出效果之间切换的一个非常有用的工具。通过简单地调用这个方法,你可以根据元素的当前可见性状态来逐渐改变其透明度,从而实现平滑的动画效果。无论是基本的淡入淡出切换、带速度的淡入淡出切换还是使用回调函数的复杂切换效果,fadeToggle() 方法都能很好地满足你的需求。
本文地址:https://www.tides.cn/p_jquery-fade-toggle
