仿拼多多拼单成功的弹幕队列消息提示

 
13079544-96678c5266f33560.png
 
 

最近写的一个功能和拼多多的弹幕提示功能类似,依次显现多个提示信息,效果图如下:

 
 
13079544-6929e23ae1749978.gif
 

在上篇文章中讲到自定义toast的实现:网页自定义toast提示框
因此这个功能只需要做一些改变即可
一:先定义一个数组,存放要显示的信息

 var arr = ["A","B","C","D","E"]

二:循环数组调用封装好的toast提示信息:

 for(var i = 0,l=arr.length;i<l;i++){
        webToastObj({
            message:"我是"+arr[i]+",欢迎您",
            time:(i+1)*1500
        })
 }

注意这里的参数time(触发提示时间)的小技巧,根据索引来确定每个数组元素应该正确出现的时间,越靠后的元素那么延迟触发的时间越长,因此便形成了队列。
三:webToastObj函数封装如下,利用js动态生成元素并添加动画,可参考上一篇文章的解释(网页自定义toast提示框)

    var webToastObj = function(params) {
        var time = params.time;
        if(time == undefined || time == ''){
            time = 1500;
        }
        setTimeout(function () {
            var el = document.createElement("div");
            el.setAttribute("class", "web-toast");
            el.innerHTML = params.message;
            document.body.appendChild(el);
            el.classList.add("fadeIn");
            el.classList.remove("fadeIn");
            el.classList.add("fadeOut");
            el.addEventListener("animationend", function () {
                document.body.removeChild(el);
            });
            el.addEventListener("webkitAnimationEnd", function () {
                document.body.removeChild(el);
            });

        }, time);
    }

因此这里是在定时器里同时加入逐渐显现(fadeIn)和逐渐消失(fadeOut)的动画效果,因为避免提示信息显示时间特别短我们可以在消失动画fadeOut里设置时间长一些,这样会使提示更平缓流畅,css3动画设置如下:

       @keyframes fadeIn {
            0%    {opacity: 0}
            100%  {opacity: 1}
        }
        @-webkit-keyframes fadeIn {
            0%    {opacity: 0}
            100%  {opacity: 1}
        }
        @-moz-keyframes fadeIn {
            0%    {opacity: 0}
            100%  {opacity: 1}
        }
        @-o-keyframes fadeIn {
            0%    {opacity: 0}
            100%  {opacity: 1}
        }
        @-ms-keyframes fadeIn {
            0%    {opacity: 0}
            100%  {opacity: 1}
        }
        /*设置三帧让动画消失得更平缓*/
        @keyframes fadeOut {
            0%    {opacity: 1}
            60%     {opacity: .9}
            100%  {opacity: 0}
        }
        @-webkit-keyframes fadeOut {
            0%    {opacity: 1}
            60%     {opacity: .9}
            100%  {opacity: 0}
        }
        @-moz-keyframes fadeOut {
            0%    {opacity: 1}
            60%     {opacity: .9}
            100%  {opacity: 0}
        }
        @-o-keyframes fadeOut {
            0%    {opacity: 1}
            60%     {opacity: .9}
            100%  {opacity: 0}
        }
        @-ms-keyframes fadeOut {
            0%    {opacity: 1}
            60%     {opacity: .9}
            100%  {opacity: 0}
        }
        .web-toast{
            position: fixed;
            background: rgba(0, 0, 0, 0.7);
            color: #fff;
            font-size: 14px;
            line-height: 1;
            padding:10px;
            border-radius: 3px;
            left: 50%;
            top: 50%;
            transform: translate(-50%,-50%);
            -webkit-transform: translate(-50%,-50%);
            -moz-transform: translate(-50%,-50%);
            -o-transform: translate(-50%,-50%);
            -ms-transform: translate(-50%,-50%);
            z-index: 9999;
            white-space: nowrap;
        }
        /*时间稍微比一般的提示时间长*/
        .fadeOut{
            animation: fadeOut 1.2s;
        }
        .fadeIn{
            animation:fadeIn .5s;
        }

原文作者技术博客:https://www.jianshu.com/u/ac4daaeecdfe
95后前端妹子一枚,爱阅读,爱交友,将工作中遇到的问题记录在这里,希望给每一个看到的你能带来一点帮助。
欢迎留言交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值