jQuery / CSS添加淡入和淡出效果

时间:2017-02-19 17:07:26

标签: javascript jquery html css css3

我制作了3个css类,如下所示:

.modal {
    display: none;
    position: fixed;
    z-index: 1000;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    background: rgba( 255, 255, 255, .8 ) url('') 50% 50% no-repeat;
    background-image: url('../../images/gears.svg');
}

body.loading {
    overflow: hidden;
}

    body.loading .modal {
        display: block;
    }

点击jQuery事件后,我向最终用户显示,以便用户知道发生了什么。

我在这里不喜欢的是,加载看起来非常强烈,过渡时没有平滑,当它消失时。我向用户展示加载齿轮的方法是:

$body = $("body");

然后显示它:

$body.addClass("loading");

或者删除它:

$body.removeClass("loading");

如何使用jquery或CSS添加加载齿轮出现和消失的平滑过渡,以便动画看起来更友好?

有人能帮助我吗?

2 个答案:

答案 0 :(得分:2)

我会删除display: none然后只使用css转换来淡入容器。您也可以将类添加到模态而不是正文。

.loader {
  visibility: hidden;
  opacity: 0;
}

.loader.visible {
   opacity: 1;
   visibility: visible;
   transition: opacity .25s ease-in-out;
   -moz-transition: opacity .25s ease-in-out;
   -webkit-transition: opacity .25s ease-in-out;
}

答案 1 :(得分:2)

除了使用opacityvisibility的CSS转换外,您还可以使用jQuery来显示/隐藏加载器。我会推荐Zach的CSS解决方案,因为它更简单,更高效,但这是另一种选择。

 .modal {
  display: none;
  position: fixed;
  z-index: 1000;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  background: rgba( 255, 255, 255, .8 ) url('') 50% 50% no-repeat;
  background-image: url('../../images/gears.svg');
}
body.loading {
  overflow: hidden;
}

$('body').addClass('loading');

/* fade loader in */
$('.modal').fadeIn('fast');

/* fade loader out */
$('.modal').fadeOut('fast', function() {
  $('body').removeClass('loading');
});