Если я правильно понимаю, вы просто хотите, чтобы заголовок показывался при наведении курсора на изображение. Лучший способ сделать это с помощью JavaScript. Я рекомендую использовать js Framework, например jQuery, что делает его действительно простым. Вы можете просто включить исходный код jQuery и поместить его в тег сценария или внешний файл в заголовке документа.
$(document).ready(function(){
$('li img').hover(function(){
$(this).siblings('div.caption').fadeIn('slow');
}, function(){
$(this).siblings('div.caption').fadeOut('slow');
});
});
Тогда все дело в стилях CSS, непрозрачности, цвете фона, цвете текста. Вам решать.
Относительно ширины 100% в заголовке вашего вопроса, поскольку он находится в теге DIV, он должен автоматически заполнить 100% своего родителя, LI.