Clean inner transparent border in CSS

Pure CSS 2.1, no image sprite in there

Quand j’ai reçu cette maquette du designer je croyais devoir utiliser une énorme image sprite qui contiendrait un contour rouge de 10 pixels, dont la couche (Photoshop layer) serait à 50% de transparence, pour chaque dimensions d’image utilisés dans le site.

Puis j’ai trouver la méthode CSS “:before” & “:after” proposée par Remy Sharp (VagrantRadio) en réponse à la question “Inner Border in CSS?“. Malgré que cette technique ne soit pas supportée par les anciens navigateurs de Internet Explorer (IE8 et moins), puisqu’il ne s’agit que d’un élément graphique, de savoir que c’est supporté et fonctionnel dans IE9, IE10, Google Chrome, Safari et Firefox me suffit amplement pour ce client.

The HTML source

<a class="picture" title="db_ARTICLE_TITLE" href="#">
 <span class="flag">Flag label</span>
 <img src="image/picture_182x102.jpg" alt="db_IMG_DESC" />
</a>

The CSS code

a.picture{
	position:relative;
	width:182px;
	height:102px;
}
.picture:before{
	content:'';
	position:absolute;
	left:0;
	top:0;
	width:162px;
	height:82px;
	border:10px solid transparent;
}
.picture:hover:before{
	border-color:rgba(215,32,23,.5);
}

Références: