Une Lightbox en CSS sans Javascript
En suite du billet sur la pseudo Lightbox sans Framework, je poursuis avec cette nouvelle Lightbox, cette fois ci, sans Javascript, avec une seule image et en CSS pure.
L'article précédent m'ayant fait découvrir que d'autres y avaient pensé avant moi, j'ai poursuivi mes investigations. Un certain Andreas Blixt dans une page cachée de son site en construction propose une CSS Lightbox plus simple, et plus plus légère.
Cette fois plus de Javascript, plus de DOM utilisé et une seule image qui, grâce à la CSS, va être réduite pour devenir une vignette. Exercice pratique :
1/ Créez un conteneur pour votre vignette
div.vign {float: left;margin-right: 8px;background: transparent;border: 4px solid #FC0}
Là aussi vous pouvez habiller votre vignette de vos atours,
l'important c'est qu'elle float
2/ Générez votre vignette
a.lightbox img {height: 100px}
Voux allez utiliser la même image qui va être ici réduite de manière homothétique avec une hauteur de 100 pixels.
3/ Création du voile d'obscurcissement sur la page
a.lightbox:active span.f,a.lightbox:focus span.f {-khtml-opacity: .8;-moz-opacity: .8;filter: alpha(opacity=80);opacity: .8;background: #000;display: block;height: 100%width: 100%position: fixed;left: 0;top: 0;z-index: 1000}
La ligne 7 qui concerne la couleur de fond peut bien sûr être changée.
Attention : prenez ce code plutôt que celui du site d'Andreas. La position doit
être fixed pas absolute sinon le voile ne recouvre pas la totalité de la page.
4/ Création de la boîte d'affichage
a.lightbox:active img,a.lightbox:focus img {border:16px solid #FC0;background:#FC0;height: auto;left: 50%;margin: -250px 0 0 -310px;overflow: hidden;position: absolute;z-index: 1001;}
Pas de case de fermeture comme vous le noterez : il suffit de cliquer hors de l'image pour que celle-ci se referme automatiquement. Le code HTML atteint ici l'épure :
5/ Création du code HTML
<div class="lightbox-vign"> <a class="lightbox" href="#paco"> <span class="f"></span> <img id="paco" alt="Paco, mon idiot de chien" src="paco.jpg"/> </a> </div>
Le ci-devant camarade syndiqué Bruno (voir son commentaire
plus bas) nous donne la solution au fait que « Quelques
inconvénients toutefois...
Dans Firefox et Internet Explorer 7, l'ouverture de la boîte fait remonter l'ascenseur
en haut de la page. Assez ennuyeux. » Il suffit de donner une ID à
l'image et placer celle-ci dans l'URL ainsi :
a href="#ID
et le tour est joué.
Un inconvénient toutefois :
Dans Opera 9x on peut cliquer où l'on veut, la boîte ne se referme pas.
Pas testé sous d'autres navigateurs.
Peut-être pourrez-vous m'en dire plus ?
Du coup, le titre de ma page « Comment faire un effet
Lightbox en CSS et sans Javascript ? » ne donne par conséquent plus la réponse
mais pose quelques questions.
Si des maîtres ès CSS et Opera passent par là...
Vous avez aimé cet article ?








bruno bichet le 09.08.2008 @ 13:50
Effectivement ça remonte sous Firefox. Le problème vient du a href="#" qui pointe vers une ancre # vide, ce qui amènera tous les navigateurs à remonter par défaut en haut de la page.

Avec un ID sur img et en faisant pointer le href dessus ça devrait marcher, soit a href="#image" et img id="image"
Enfin, c'est une piste car je n'ai pas testé