2

嗨朋友们,我正在尝试制作由 jquery 触发的 CSS3 动画。即当用户提交一些表单时,我需要在一段时间内显示动画(css3)并将其重定向到下一页。

CSS3 动画:

.circle {
    background-color: rgba(0,0,0,0);
    border: 5px solid rgba(0,183,229,0.9);
    opacity: .9;
    border-right: 5px solid rgba(0,0,0,0);
    border-left: 5px solid rgba(0,0,0,0);
    border-radius: 50px;
    box-shadow: 0 0 35px #2187e7;
    width: 50px;
    height: 50px;
    margin: 0 auto;
    -moz-animation: spinPulse 1s infinite ease-in-out;
    -webkit-animation: spinPulse 1s infinite linear;
}

.circle1 {
    background-color: rgba(0,0,0,0);
    border: 5px solid rgba(0,183,229,0.9);
    opacity: .9;
    border-left: 5px solid rgba(0,0,0,0);
    border-right: 5px solid rgba(0,0,0,0);
    border-radius: 50px;
    box-shadow: 0 0 15px #2187e7;
    width: 30px;
    height: 30px;
    margin: 0 auto;
    position: relative;
    top: -50px;
    -moz-animation: spinoffPulse 1s infinite linear;
    -webkit-animation: spinoffPulse 1s infinite linear;
}

@-moz-keyframes spinPulse {
    0% {
        -moz-transform: rotate(160deg);
        opacity: 0;
        box-shadow: 0 0 1px #2187e7;
    }

    50% {
        -moz-transform: rotate(145deg);
        opacity: 1;
    }

    100% {
        -moz-transform: rotate(-320deg);
        opacity: 0;
    };
}

@-moz-keyframes spinoffPulse {
    0% {
        -moz-transform: rotate(0deg);
    }

    100% {
        -moz-transform: rotate(360deg);
    };
}

@-webkit-keyframes spinPulse {
    0% {
        -webkit-transform: rotate(160deg);
        opacity: 0;
        box-shadow: 0 0 1px #2187e7;
    }

    50% {
        -webkit-transform: rotate(145deg);
        opacity: 1;
    }

    100% {
        -webkit-transform: rotate(-320deg);
        opacity: 0;
    };
}

@-webkit-keyframes spinoffPulse {
    0% {
        -webkit-transform: rotate(0deg);
    }

    100% {
        -webkit-transform: rotate(360deg);
    };
}

这是html

<div class="circle"></div>
<div class="circle1"></div>
<button class="next" name="submit" id = "submit"></button>

现在,当我用户单击时,我需要在一小段时间内显示此效果(类似于警报框之类的东西,我的意思是在播放此动画时,用户不应该能够在页面的其余部分执行任何操作)

4

3 回答 3

3

通常你通过用一个元素覆盖它来使页面无法访问 - “覆盖”。

HTML:

<div class="loadingOverlay">
    <div class="circle"></div> <!-- it makes sense to put these inside -->
    <div class="circle1"></div>
</div>

CSS:

.loadingOverlay {
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
}

要在用户单击提交按钮时激活它,只需将其默认“隐藏”即可。当用户单击按钮时,使其“可见”。以最基本的形式:

$('#submit').on('click', function () {
    $loadingOverlay.css('display', 'block');
});

以及额外需要的CSS

.loadingOverlay {
    /* ... */
    display: none;
}

在我下面提供的示例中,您将看不到动画。下一页是空白的,加载得太快了。但是您在“真实”的网站情况下看到它。

这是现场示例:http: //jsfiddle.net/9H7wf/2/

编辑:

Max Boll 建议在“新”页面上发生“加载效果”。这说得通。但是在获取新页面时,“旧”页面仍然可见,直到发生一些关键的“http”事件。见http://www.stevesouders.com/blog/2012/12/03/the-perception-of-speed/

因此,将它放在“旧”页面上确实有意义。

于 2013-09-19T14:18:56.927 回答
0

我建议你为此使用 jQuery。

默认情况下,您可以将动画显示为叠加层(如 JOPLOmacedo 所说)。

然后将以下内容添加到您的 javascript 中:

$(document).ready(function() {
  $('.loadingOverlay').fadeOut();
});

只要网站需要加载(您实际上希望通过加载动画显示),这将显示加载覆盖。加载页面后,此 javascript 会将其淡出。

我的解决方案基于 JOPLOmacedo 的回答。

编辑 我刚刚看到你的新评论。要在按钮单击时显示它,您可以这样做:

$(document).ready(function() {
  $('.button').click(function() {
    $('.loadingOverlay').fadeIn();
  });
});

在点击事件函数内部,您可以开始一个间隔以在 X 秒后再次将其淡出。

于 2013-09-19T14:26:22.437 回答
0

嗨,朋友们,我找到了解决这个问题的方法,感谢 @JOPLOmacedo 帮助我解决了这个问题

    $function(){

     $('#submit').click(function(){

     $('.loadingOverlay').css('display', 'block');
     function complete() {
         $('.loadingOverlay').css('display', 'none');
      }
            $('.circle').hide().fadeIn(1000,complete);
            $('.cirlce1').hide().fadeIn(1000,complete);
      });

    }
于 2013-09-19T15:14:21.097 回答