CSS3 Flip Card with Automatic Height

后端 未结 2 614
[愿得一人]
[愿得一人] 2020-12-06 08:07

I\'m using a tutorial to create a flip card effect using CSS3 and jQuery and I\'m having issues getting the height to adjust to the content length while having it still flip

相关标签:
2条回答
  • 2020-12-06 08:33

    You can trick it, by making the .back position absolute and 100% height. And leave the .front position relative.

    .front  {position: relative;}
    .back       {position: absolute; top: 0; left: 0; width: 100%; height: 100%;}
    

    Note, might be useful in some scenarios: add 2 additional elements to the back, for header and footer, and make the footer position absolute and set it to bottom 0.

    0 讨论(0)
  • 2020-12-06 08:53

    Here's a working solution on jsFiddle.

    JS:

    $('.flip').click(function(){
        $(this).find('.card').addClass('flipped');
        return false;
    }).mouseleave(function () {
        $('.flip > .card').removeClass('flipped');
    });
    
    var frontHeight = $('.front').outerHeight();
    var backHeight = $('.back').outerHeight();
    
    if (frontHeight > backHeight) {
        $('.flip, .back').height(frontHeight);
    }
    else if (frontHeight > backHeight) {
        $('.flip, .front').height(backHeight);
    }
    else {
        $('.flip').height(backHeight);
    }
    

    A defined height isn't flexible, so what you're seeing is what you've defined. Since the height will not remain constant, the front or the back needs to have a defined height that matches whichever element is the tallest. In the example, .front is taller, so .back is updated to have the same height, allowing you to achieve the vertical flip effect at the center.

    In your example, the mouseleave event can fire while the elements during the animation. I have assumed that you did not want this to occur, so I've updated the logic to remove .flipped when leaving the card, which retains its height throughout the animation. I also cleaned up the CSS to be less redundant. Hope this helps!

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