私は純粋なcssソリューションに行きました.jsは必要ありません. 私が使用した CSS トランジションは、完全にクロス ブラウザーではありませんが、適切に劣化するはずです。劣ったブラウザー (IE を参照) を使用する場合は、ブラウジング エクスペリエンスが劣ることが予想されます。
私のコードは次のようになります (もう少し読みやすくするために、HTML を少し単純化しました)。
<a class="hover-me">
    <span class="caption">VIEW</span>
    <img src="http://lorempixel.com/261/261/"/>
</a>
.hover-me {
    position: relative;
    width: 250px;
    display: inline-block;
}
.hover-me img{
    width:100%;
    height:auto;
    display: block;
}
.hover-me:after {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    z-index: 1;
    background: rgba(255,0,0,.5);
    transition: all .5s ease;
    opacity: 0;
}
.hover-me .caption {
    display: block;
    height: 50%;
    position: absolute;
    top: 50%;
    left: 0; right: 0;
    margin-top: -10px;
    text-align: center;
    transition: all .5s ease;
    opacity: 0;
    z-index: 2;
    color: #fff;
    line-height: 20px;    
}
.hover-me:hover:after , .hover-me:hover .caption {
    opacity: 1;
}
お気づきかもしれませんが: 
 - キャプションとオーバーレイは不透明度を使用して隠され、css で変更できるようになっています。
 - ストレッチは、bottom: 0;またはを追加することによって行われheight: 100%;
 ます - テキストは、上部を 50% に設定し、margin-top をテキストの高さの半分に設定することにより、垂直方向に中央揃えされます
 - オーバーレイは:after、リンクの で実現されます。今は完全な高さではありません。これが z-index がある理由でもあります。そうしないと、オーバーレイがキャプションの上に表示されます。
コードをprefixrのようなものを介して実行することを忘れないでください(または、持っている場合はless / sass mixinを使用して)、最大のクロスブラウザサポートを取得します(主に不透明度とトランジション用)
コードが明確であることを願っています。そうでない場合は、お気軽にお問い合わせください。また、実演するためにフィドルを更新しました:http://jsfiddle.net/5X7ub/25/