Het a/img probleem oplossen

1 mei 2009, 16:03 |

Ik heb vorige week eindelijk een oplossing gevonden voor een probleem waar ik al heel lang mee zat, en dat niemand leek op te kunnen lossen. Het is een beetje complex om uit te leggen, dus ik heb er maar een screencast van gemaakt, die je hieronder kan afspelen. Ik ga toch een tekstuele poging doen:

Als je borders gebruikt in plaats van text-decoration: underline; om je links te stijlen, dan krijg je de border rond een gelinkte <img> niet weg met CSS. Aangezien CSS enkel sequentieel van “boven naar onder” kan gaan (d.w.z. van je <body> tot het diepste element, maar niet meer terug, moeten we hier naar javascript grijpen om het probleem op te lossen. De code hiernaast kijkt na voor elke image of dat het bovenliggende element een link is, en als dat zo is, wordt dynamisch de CSS-klasse linkedImage toegevoegd.

Dit is het stukje javascript dat ik daarvoor gebruik in de screencast (jQuery):

$(document).ready(function() {

	// Fix the a/img problem
	$(".content img").each(function() {
		var parentTag = $(this).parent().get(0).tagName;
		if (parentTag == 'A') {
			$(this).parent().addClass('linkedImage');
		};
	});

});				

Die klasse kan je dan stijlen naargelang je wensen: soms wil je helemaal geen borders, soms wil je het duidelijker maken dat iets “zoomable” is (door bvb. een icoontje of een tekst. Een idee dat ik heb om dit verder uit te werken is bvb. de volgende CSS:

		a.linkedImage {
			border: none;
			display: block;
			font-size: 11px;
			color: #808080;
		}

		a.linkedImage img {
			display: block;
		}

		a.linkedImage:after {
			content: "Click the image for a larger version";
		}

Dat geeft dan als resultaat dat er een kleine grijze tekst onder image staat die aanduid dat je op de img kan klikken. Op images zonder link staat dit dan uiteraard niet.

Dit was een beetje een technische post, maar ik ben er zeker van dat een groot deel van mijn publiek volledig kan volgen ;). Als laatste nota wil ik wel meegeven dat je dit best situationeel toepast – op een kleine site, ok, maar je wilt dit echt niet op een fotopagina met 20 foto’s en 20 avatars gaan doen op een high traffic site als pakweg Netlog of ABConcerts.

P.S. Ik heb een geluidstechnicus nodig ;)

8 reacties op “Het a/img probleem oplossen”


Reacties gesloten

Het is niet meer mogelijk om reacties te geven op dit bericht. Na plaatsing is het gedurende 2 weken mogelijk om te reageren. Dit om de kwaliteit van de uiteindelijke post hoog te houden en spam tegen te gaan. Mocht je toch nog (persoonlijk) willen reageren, zie de contactpagina.