CSS transition: fade background color, resetting after

前端 未结 3 821
耶瑟儿~
耶瑟儿~ 2021-01-31 03:43

I have a list of divs and allow my user to add a new one dynamically by posting new content. If the user posts new content, I\'d like to highlight it on the screen by fading the

相关标签:
3条回答
  • 2021-01-31 03:51

    You could make use of animation keyframes. No additional javascript needed.

    $('input[type=button]').click( function() {
     $('#newContent').addClass('backgroundAnimated');
    });
    @-o-keyframes fadeIt {
      0%   { background-color: #FFFFFF; }
      50%  { background-color: #AD301B; }
      100% { background-color: #FFFFFF; }
    }
    @keyframes fadeIt {
      0%   { background-color: #FFFFFF; }
      50%  { background-color: #AD301B; }
      100% { background-color: #FFFFFF; }
    }
    
    .backgroundAnimated{    
        background-image:none !important; 
             -o-animation: fadeIt 5s ease-in-out; 
                animation: fadeIt 5s ease-in-out; 
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div>Old stuff</div>
    <div>Old stuff</div>
    <div>Old stuff</div>
    <div id="newContent">New stuff, just added</div>
    
    <input type="button" value="test" />

    0 讨论(0)
  • 2021-01-31 04:06

    If you can use jquery-ui this might help:

    $('input[type=button]').click( function() { 
      var animTime = 1000;
     $('#newContent').addClass('pulse', animTime).removeClass('pulse', animTime);
    });
    .pulse{
            background-color: #AD310B;     
    }
    <script src="http://code.jquery.com/jquery-latest.min.js" 
        type="text/javascript" charset="utf-8"></script>
    <script	src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"
    			  type="text/javascript" charset="utf-8"></script>
    		
    <div>Old stuff</div>
    <div>Old stuff</div>
    <div>Old stuff</div>
    <div id="newContent">New stuff, just added</div>
    
    <input type="button" value="test" />

    0 讨论(0)
  • 2021-01-31 04:13

    Hmmm.. If you wanted to keep it in css you could add a setTimeout inside your click event and then add another class.

    $('input[type=button]').click( function() {
     $('#newContent').addClass('backgroundAnimated');
        setTimeout(function(){
            $('#newContent').addClass('nextBackgroundAnimated');
        }, 5000);
    });
    

    CSS::

    .backgroundAnimated{
            background-color: #AD310B !important;
            background-image:none !important;
        -webkit-transition: background-color 5000ms linear;
        -moz-transition: background-color 5000ms linear;
        -o-transition: background-color 5000ms linear;
        -ms-transition: background-color 5000ms linear;
        transition: background-color 5000ms linear;
            -webkit-animation-direction: alternate; /* Chrome, Safari, Opera */
        animation-direction: alternate;
    
            -webkit-animation-iteration-count: 2; /* Chrome, Safari, Opera */
        animation-iteration-count: 2;
    }
    .nextBackgroundAnimated{
            background-color: white !important;
            background-image:none !important;
    }
    

    http://jsfiddle.net/pUeue/1954/

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