Awesome Grid Hover Effects with jQuery and CSS3

Awesome Grid Hover Effects with jQuery and CSS3
File Size: 428 KB
Views Total: 7411
Last Update:
Publish Date:
Official Website: Go to website
License: MIT
   

Makes uses of jQuery and CSS3 transitions & keyframes to create a image grid with awesome caption hover effects like slide, twist, fade and much more.

How to use it:

1. Include the jQuery library and other required resources in your document.

<link href="//fonts.googleapis.com/css?family=Roboto:400,100,300,900" rel="stylesheet">
<link  href="reset.css" rel="stylesheet">
<script src="prefixfree.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

2. The markup Html structure to create a grid of images with different caption hover effects.

<div class="container one">
  <img alt="" src="1.jpg">
  <div>
    <span>
      <h2>SLIDE Effect</h2>
      Image caption 1
    </span>
  </div>
</div>

<div class="container two">
  <img alt="" src="2.jpg">
  <div>
    <span>
      <h2>SLIDE Effect 2</h2>
      Image caption 1
    </span>
  </div>
</div>

<div class="container three">
  <img alt="" src="3.jpg">
  <div>
    <span>
      <h2>FADE Effect</h2>
      Image caption 3
    </span>
  </div>
</div>

<div class="container four">
  <img alt="" src="4.jpg">
  <div>
    <span>
      <h2>TWIST Effect</h2>
      Image caption 4
    </span>
  </div>
</div>

3. The required CSS/CSS3 to style the image grid. You can tweak the caption effects or create your own effects by editing the following styles.

<style>
body {
  text-align: center;
  font-family: "Roboto", sans-serif;
}

.container {
  vertical-align: top;
  display: inline-block;
  position: relative;
  background: #efefef;
  background-size: cover;
  width: 300px;
  height: 200px;
  overflow: hidden;
  margin-right: -0.25em;
}

.container.one div.over {
  -webkit-animation: slideLeft 300ms ease-in-out;
  -webkit-animation-fill-mode: forwards;
}

.container.one div.out {
  -webkit-animation: slideLeftOut 300ms ease-in-out;
  -webkit-animation-fill-mode: forwards;
}

.container.two div.over {
  -webkit-animation: slideUp 300ms ease-in-out;
  -webkit-animation-fill-mode: forwards;
}

.container.two div.out {
  -webkit-animation: slideUpOut 300ms ease-in-out;
  -webkit-animation-fill-mode: forwards;
}

.container.three div {
  left: 0;
  opacity: 0;
}

.container.three:hover div { opacity: 1; }

.container.four div {
  left: 0;
  opacity: 0;
  -webkit-transform: rotate(180deg) scale(0.2);
}

.container.four:hover div {
  opacity: 1;
  -webkit-transform: rotate(0deg);
}

.container.five div {
  left: 0;
  opacity: 0;
  -webkit-transform: scale(0.9);
}

.container.five:hover div {
  opacity: 1;
  -webkit-transform: scale(1);
}

.container img { width: 100%; }

.container div {
  box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.3);
  font-weight: 300;
  color: #efefef;
  text-align: center;
  position: absolute;
  width: 100%;
  height: 100%;
  background: rgba(231, 76, 60, 0.7);
  top: 0;
  left: 100%;
  transition: all 300ms ease-in-out;
  background: #a90329;
  background: linear-gradient(135deg, rgba(169, 3, 41, 0.8) 0%, rgba(143, 2, 34, 0.8) 44%, rgba(109, 0, 25, 0.8) 100%);
}

.container div:before {
  content: "";
  display: inline-block;
  height: 100%;
  vertical-align: middle;
  margin-right: -0.25em;
}

.container div span {
  display: inline-block;
  vertical-align: middle;
  padding: 30px;
  letter-spacing: 1px;
}

.container div span h2 {
  font-weight: 900;
  font-size: 4em;
  letter-spacing: 1px;
  line-height: 0.85em;
}

 @-webkit-keyframes 
slideLeft {  0% {
 left: 100%;
}
 70% {
 left: 0%;
}
 85% {
 left: 4%;
}
 100% {
 left: 0%;
}
}
@-webkit-keyframes 
slideLeftOut {  0% {
 left: 0%;
}
 70% {
 left: 100%;
}
 85% {
 left: 96%;
}
 100% {
 left: 100%;
}
}
@-webkit-keyframes 
slideUp {  0% {
 top: 100%;
 left: 0%;
}
 70% {
 top: 0%;
}
 85% {
 top: 4%;
}
 100% {
 top: 0%;
 left: 0%;
}
}
@-webkit-keyframes 
slideUpOut {  0% {
 top: 0%;
 left: 0%;
}
 70% {
 top: 100%;
}
 85% {
 top: 96%;
}
 100% {
 top: 100%;
 left: 0%;
}
}
</style>

4. A little jQuery script to enable the caption hover effects.

$('.container').hover(
  function(){
    $(this).children("div").removeClass('out').addClass('over');
  },
  function(){
    $(this).children("div").removeClass('over').addClass('out');
  }
);

This awesome jQuery plugin is developed by caseymorrisus. For more Advanced Usages, please check the demo page or visit the official website.