Search code examples
csscss-animationsonmouseoveronmouseoutblockquote

CSS LOVE! Animated background in blockquote on mouse over works but on mouse out doesn't


Took me few hours to completely overhaul the standard <blockquote> tag and now I am stuck at the final step, the animation. I've tried just about everything there is, but can get it to work properly. If someone could help me here, I'd really appreciate it.

Ideally I'd like Twitter bird to move and fade in & out:

From LEFT to CENTER (fade in while moving towards center - on mouse over) and
From CENTER to RIGHT (fade out while moving towards right - on mouse out)

I got the bird moving from left to center on mouse over, but I can't get it to move from center to the right on mouse out.

Please note this <blockquote> is customized with Pseudo Classes & Elements and looks like this.

<blockquote>
  <a href="#">Text link here</a>
</blockquote>

I used 1 class for the link, only to expand clickable area. If you know of a way that doesn't involve this old trick, please let me know.

Please check out my work. Any suggestions or code improvements are more than welcome.

FIDDLE - https://jsfiddle.net/7kr7en1m


Solution

  • I used this answer to help figure this out.

    The key was animating both margin-left and and left. It works like this:

    1. The bird starts to the right of the blockquote
    2. On hover, the bird moves to the left of the blockquote without any animation by setting margin-left to 0, and then starts the left property starts animating in.
    3. After hover, the bird animates to the right because the margin-left animation has been reapplied.

    a {
      text-decoration: none;
    }
    
    a:link {
      color: #f00;
    }
    
    a:visited {
      color: #f00;
    }
    
    a:hover {
      color: rgba(0, 0, 0, 0);
    }
    
    blockquote {
      position: relative;
      font-weight: 900;
      font-size: 18px;
      line-height: 22px;
      text-align: left;
      padding: 10px 35px 10px;
      margin: 0 15px;
      border: solid 1px rgb(220, 220, 220);
      border-radius: 10px;
      position: relative;
      background-color: white;
      box-shadow: 5px 5px 20px #e9edef;
      width: 20%;
      min-width: 200px;
      float: right;
    	overflow: hidden;
    }
    
    blockquote:hover {
      
    }
    
    a:after {
      content: '';
      position: absolute;
      width: 100%;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      left: -90%;
      margin-left: 200%;
      transition: left 300ms linear, margin-left 300ms ease-out;
      color: #009fff;
      cursor: pointer;
      background-image: url('http://image.prntscr.com/image/39b3926093f442c095554fb6a147ef01.png');
      background-repeat: no-repeat;
      background-position: center;
      background-size: contain;
      /* transition: background-image 0.5s ease;
      -moz-transition: all 0.5s ease;
      -ms-transition: all 0.5s ease;
      -webkit-transition: all 0.5s ease;
      -o-transition: all 0.5s ease; */
    }
    
    a:before {
      content: '';
      transition: background-color 300ms ease;
    }
    
    a:hover:before {
      position: absolute;
      width: 100%;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      background-position: center;
      background-size: contain;
      background-color: #009fff;
      border: solid 1px #009fff;
    }
    
    a:hover:after {
      transition: left 300ms ease-out;
      margin-left: 0;
      left: 0;
    }
    <h3>
    What is Lorem Ipsum?
    </h3>
    
    <blockquote>
      <a href="#" class="qoute-to-tweet">Animated Lorem Ipsum dummy text that is used in this quote is ready to be tweeted with one click</a>
    </blockquote>
    
    Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.