如何使用Javascript或CSS淡出Django成功消息?

如何使用Javascript或CSS淡出Django成功消息?,javascript,html,css,css-transitions,Javascript,Html,Css,Css Transitions,我试图用一个小的Javascript脚本淡出Django成功消息,但似乎无法让它正常工作。这在my base.html中: Django只是呈现您的模板,并从服务器端返回一个HTML文件,然后需要您的浏览器使用CSS和javascript处理该文件。执行动画的一种简单方法是使用CSS转换 CSS转换 然后使用Javascript向其中添加一个类: <script> var m = document.getElementsByClassName("alert"); // Return

我试图用一个小的Javascript脚本淡出Django成功消息,但似乎无法让它正常工作。这在my base.html中:


Django只是呈现您的模板,并从服务器端返回一个HTML文件,然后需要您的浏览器使用CSS和javascript处理该文件。执行动画的一种简单方法是使用CSS转换

CSS转换 然后使用Javascript向其中添加一个类:

<script>
var m = document.getElementsByClassName("alert");  // Return an array

setTimeout(function(){
   if (m && m.length) {
       m[0].classList.add('hide');
   }
}, 3000);
</script>
CSS动画库 这是一个详细的版本,包括编写您自己的动画并完全按照您的需要进行配置,但一个简单的解决方案可能是使用CSS动画库,它提供了一组基于相同原理的惊人转换


只是要小心不要使用太多,你不希望你的应用程序看起来像一棵圣诞树,Django只是呈现你的模板,然后从服务器端返回一个HTML文件,然后需要你的浏览器使用CSS和javascript来处理。执行动画的一种简单方法是使用CSS转换

CSS转换 然后使用Javascript向其中添加一个类:

<script>
var m = document.getElementsByClassName("alert");  // Return an array

setTimeout(function(){
   if (m && m.length) {
       m[0].classList.add('hide');
   }
}, 3000);
</script>
CSS动画库 这是一个详细的版本,包括编写您自己的动画并完全按照您的需要进行配置,但一个简单的解决方案可能是使用CSS动画库,它提供了一组基于相同原理的惊人转换


注意不要使用太多,你不希望你的应用程序看起来像圣诞树,假设你的div已经正确显示并且标记在源代码上,这不是Django问题,而是Javascript问题。我觉得这肯定属于Django标记,因为{{{template tag}Django只是在渲染你的模板,你想要的是CSS动画/转换,或者是对DOM的javascript处理来更新它。我没有意识到这可以用CSS来处理。这就是人们通常的做法吗?Django标记本质上是复制/粘贴,它创建了一个发送到客户端的文件,因此显示和淡出消息将在JS客户端完成。假设您的div已经正确显示,并且标记位于源代码上,这不是Django的问题,而是一个Javascript问题。我觉得这肯定属于Django标记,因为{{template tag}}被引用,但我删除了它以使您高兴。Django只是呈现您的模板,您需要的是CSS动画/转换,或者javascript处理您的DOM来更新它,我没有意识到这可以用CSS来处理。这就是人们通常的做法吗?Django标记本质上是复制/粘贴,它创建了一个文件并发送到客户端,因此显示和淡出消息将在JS客户端完成;对于一个简单的任务来说,这似乎是一个很大的工作。它不是真的,当你知道它的时候,只需要很少的时间来编写,而且它的级别非常低,非常适合定制。你可以使用库,基本上是一套现成的动画;对于一个简单的任务来说,这似乎是一个很大的工作。它不是真的,当你知道它的时候,只需要很少的时间来编写,而且它的级别非常低,非常适合定制。您可以使用基本上是一组随时可用的动画的库。
<div class="alert alert-{{ message.tags }}">
    {{ message }}
</div>
.alert {
    positition: relative;
    opacity: 1;
    visibility: visible;
    transform: translateX(0px);
    transition: visibility 0s, opacity 250ms, transform 250ms;
}
.alert.hide {
    positition: relative;
    opacity: 0;
    visibility: hidden;
    transform: translateX(-10px); // translateX, translateY, translateZ works well
    transition: visibility 0s 250ms, opacity 250ms, transform 250ms;
}
<script>
var m = document.getElementsByClassName("alert");  // Return an array

setTimeout(function(){
   if (m && m.length) {
       m[0].classList.add('hide');
   }
}, 3000);
</script>