как исчезают в гибкой коробке?

Как мне получить гибкую коробку, чтобы не быть частью страницы, пока я ее не угаснет? Я делал это с помощью "display: 0;" а затем используйте jquery.fadeIn(). Но теперь, если я установлю отображение на 0, когда я его увяжу, я, конечно, теряю гибкость коробки. Если я использую jquery, чтобы настроить отображение на гибкий, тогда он будет просто появляться, а не исчезать.

<div class="" id="popupContainer">
<div class="flex-item-popup" id="popup">
    <div class="close"><i class="fa fa-2x fa-times-circle"></i></div>
    <h2></h2>
    <div class='text'></div>
    <div class="videos"></div>
    <div class="flex-container images"></div>
</div>

    #popupContainer {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    display:flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    align-content: flex-start;
    align-items: center;
    z-index: 15;
}

JQuery:

$(document).ready(function() {
    //???
});

Ответы

Ответ 1

Кажется немного странным, но то, что вы можете сделать, это в css, чтобы оно display: none. Тогда хитрость заключается в том, чтобы установить display на flex в вашем JQuery и скрыть его снова, то fadeIn:

CSS:

#popupContainer {
    /* ... */

    display:none;
    flex-direction: row;
    flex-wrap: wrap;

    /* ... */
}

JS:

$("#popupContainer")
    .css("display", "flex")
    .hide()
    .fadeIn();

Это работает, потому что fadeIn() вернет элемент к предыдущему не скрытому display значению. Таким образом, установка flex и повторного скрытия приведет к установке этого значения "по умолчанию" для его возврата.

http://jsfiddle.net/z2kxyjcq/1/

$("#popupContainer")
    .css("display", "flex")
    .hide()
    .fadeIn(2000);
#popupContainer {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    display:none;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    align-content: flex-start;
    align-items: center;
    z-index: 15;
    background-color: red;
}
#popupContainer *{
    border: 1px solid blue;
background-color: white;    
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="" id="popupContainer">
<div class="flex-item-popup" id="popup">
    <div class="close"><i class="fa fa-2x fa-times-circle">1</i></div>
    <h2>2</h2>
    <div class='text'>a</div>
    <div class="videos">b</div>
    <div class="flex-container images">c</div>
</div>

Ответ 2

Вы можете установить непрозрачность как 0 и анимировать:

$('#popupContainer').animate({
    opacity: 1
}, 'fast');

Ответ 3

Самый простой и самый чистый способ (если вы можете редактировать DOM) состоит в том, чтобы обернуть элемент и вытереть обертку, имея div с flex внутри

<div class="popup" id="popupContainer">
  <div class="popup__flexbox">
    <div class="popup__flex-item" id="popup">
    <div class="popup__close">
       <i class="fa fa-2x fa-times-circle"></i>
    </div>
    <h2></h2>
    <div class='popup__text'></div>
    <div class="popup__videos"></div>
    <div class="popup__images"></div>
  </div>
</div>

CSS:

.popup {
  display: none;
}

.popup__flexbox {
  display: flex;
}

ЯШ:

$("#popupContainer").fadeIn();

Ответ 4

var flex = $('#flex');

console.log(flex.css('display'));

flex.hide();

flex.velocity('fadeIn', {duration: 100, display: 'flex'});

setTimeout(function(){
  console.log(flex.css('display'));
 }, 100);
#flex{
  display: 'flex'
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/velocity/1.5.0/velocity.min.js"></script>

<div id="flex"></div>