使用纯 javaScript 代码的淡入和淡出动画方法

Fade-in and Fade-out animation methods with pure javaScript code

提问人:Sayed Hosny 提问时间:6/11/2023 最后编辑:Sayed Hosny 更新时间:6/11/2023 访问量:349

问:

总结:问题的总结是,我想找出与我们在jQuery中执行的这个简单代码相对应的复杂代码。我所指的代码与jQuery使用的淡入和淡出动画方法有关。我想使用纯javaScript代码而不是jQuery。

这是jQuery中使用的代码,我想要一个等效的纯javaScript代码。

下面的代码对你来说会很清楚,但对不起,我想指出不止一点,

*第一点:即只有一个按钮来执行该函数(即在两个条件下“输入或输出”的淡入方法)。

*第二点:div 是一个容器标签,它有一个类 =“msg”,但它内部没有文本(即在 html 中),并且文本在函数开始后立即执行(即在 JavaScript 中)。

enter image description here

<body>

     <form autocomplete="off">
        <input type="text" name="username" id="username" placeholder="Enter Username">
        <button type="button" id="btn">OK</button>
     </form>
     <div class="msg"></div>

     <script>
           $(document).ready(function (){

$('#btn').click(function (){
     let usName = $('#username').val();
     
     if(usName != ''){
        $('.msg').html('Welcome ' + usName);
        $('.msg').fadeIn(1500);
     }else{
        $('.msg').html('Username is required');
        $('.msg').fadeIn(1000).delay(1000).fadeOut(1000);
     }
                            });
                                        }); 
     </script>
     
</body>

我尝试做的是非常简单的代码,没有任何动态动画方法,但是该代码也执行得很好。

<body>
   
    <form autocomplete="off">
        <input type="text" name="username" id="username" placeholder="Enter Username">
        <button type="button" id="btn" onclick="show()">OK</button>
     </form>
     
     <div class="msg"></div>
    

     <script>
function show()

{    let usName = document.getElementById("username").value;

if (usName != "")
    { 
  document.getElementsByClassName("msg")[0].innerHTML = "Welcome" +" "+ usName;
    }
else
{
  document.getElementsByClassName("msg")[0].innerHTML = "Username is required";
}
  }
     </script>

</body>

在此处输入图像描述

JavaScript jQuery if-statement 入淡出

评论

4赞 jcubic 6/11/2023
如果我是你,我会使用CSS制作动画,并添加一个类来触发动画,你可以用纯JavaScript切换。这不需要复杂的代码。
0赞 Mister Jojo 6/11/2023
看一看 github.com/camsong/You-Dont-Need-jQuery
0赞 Mister Jojo 6/11/2023
请阅读 meta.stackoverflow.com/questions/285551/...
0赞 Mister Jojo 6/11/2023
请阅读 stackoverflow.com/help/how-to-ask
0赞 zer00ne 6/11/2023
图片是可以的,但不是强制性的。99% 的时间都需要代码作为最小的可重现示例

答:

0赞 cytek04 6/11/2023 #1

从jQuery网站:

.fadeIn() 方法对匹配元素的不透明度进行动画处理。

因此,编写一个不透明度为 0 且过渡的 css 类。

.fade-out {
  opacity: 0;
  transition: opacity 1500ms;
}

现在使用简单的 JavaScript 将类应用于要淡出的元素,并从要淡入的元素中删除该类。

document.getElementById('myId').classList.add('fade-out');
document.getElementById('myId').classList.remove('fade-out');

如果您希望它不影响您的布局。您可以将其设置为淡入淡出完成后立即进行。display:none

0赞 ClassMate-xiaowen 6/11/2023 #2

您可以尝试以下操作:

.fade-in-out{
   opacity:0;
   transition: 1s;
}

您可以使用切换来动态添加或删除类名

document.querySelector('.my-element').classList.toggle('fade-in-out');