I personally wouldnt make a grid with different images this way, I would probably use background-image to do it but if you want a grid with text layered over images here is a way to do it using z-indexing
FIDDLE http://jsfiddle.net/Dpr3C/
HTML
<ul>
<li><img src="http://www.hockeycanada.ca/Content/images/hockey_canada_640.jpg"><span>Words words</span></li>
<li><img src="http://www.sports-logos-screensavers.com/user/USA_Hockey5.jpg"><span>Words words</span></li>
<li><img src="http://marchhockey.files.wordpress.com/2013/06/russia-hockey-logo.gif"><span>Words words</span></li>
</ul>
CSS
ul { list-style: none; margin: 0; padding: 0; }
ul li { width: 100px; height: 100px; float: left; margin: 5px; position: relative; }
ul li img { display: block; width: 100%; height: 100%; position: relative; z-index: 1 }
ul li span { width: 100%; height: 30px; position: absolute; z-index: 10; bottom: 0; left: 0; background: rgba(0,0,0,0.5); color: #fff; padding-top: 10px; }