how fade in a flex box?

后端 未结 4 698
遥遥无期
遥遥无期 2021-01-30 20:15

How do I get a flex box to not be part of the page until I fade it in? I used to do this with \'display: 0;\' and then use jquery .fadeIn(). But now if I set display to 0, when

相关标签:
4条回答
  • 2021-01-30 20:52

    It seems a bit odd, but what you can do is in the css, set it to display: none. Then the trick is to set the display to flex in your jquery and then hide it again, then fadeIn:

    CSS:

    #popupContainer {
        /* ... */
    
        display:none;
        flex-direction: row;
        flex-wrap: wrap;
    
        /* ... */
    }
    

    JS:

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

    This works because fadeIn() will set the item back to its previous non-hidden display value. So setting flex and re-hiding it will set this "default" for it to be set back to.

    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>

    0 讨论(0)
  • 2021-01-30 20:56

    You can set the opacity as 0 and animate:

    $('#popupContainer').animate({
        opacity: 1
    }, 'fast');
    
    0 讨论(0)
  • 2021-01-30 20:57

    Easiest and most clean way (if you can edit DOM) is to wrap the element, and fade the wrapper while having div with flex inside

    <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;
    }
    

    js:

    $("#popupContainer").fadeIn();
    
    0 讨论(0)
  • 2021-01-30 21:02

    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>

    0 讨论(0)
提交回复
热议问题