:before, :after,
jeżeli zdjęcie masz w linku, tzn:
<a href="">
<img src="" alt="">
</a>
To dla a nadaj klase relatywną, :before, :after powinny mieć pozycje absolutną.
Do tego opacity + transition i mamy efekt.
:before może być tłem przyciemniającym a :after napisem.