RootsLabs

More than a tool ! GitHub Google+ LinkedIn RSS

Comment réaliser un splashscreen pour un site ?

Progi1984 - Commentaires (0)

Sur un site web, il peut être utile, quand un visiteur arrive sur une page, de proposer de se connecter au Facebook lié au site, de s’inscrire à la newsletter ou de cliquer sur une publicité. Et souvent cela se fait par l’intermédiaire d’un splashscreen (a.k.a. page de garde ou page d’attente). Dans cet article nous allons voir comment faire cela avec un peu de jQuery et un peu de CSS.

Splashscreen : mettre en place l’overlay

Avant de mettre notre contenu, commencons par mettre en place un overlay qui prendra comme les mêmes dimensions que la fenêtre. On lui assigne une couleur noir avec une opacité de 80% et on la positionne au dessus de tout ce qui pourrait être à l’écran.

  $('body').append('
'); $('#overlay').css({ 'width' : $(window).width(), 'height' : $(window).height(), 'background-color':'#000000', 'display': 'block', 'left': 0, 'opacity': 0.8, 'position': 'absolute', 'top': 0, 'z-index': 9999 });

Le souci est que si le corps (body) de la page est plus grand, les gens vont pouvoir descendre et ne plus voir l’overlay. Dans ce cas, on va les empecher de scroller en bloquant l’overflow.

$('body').css('overflow', 'hidden');

Affichage de notre contenu

Maintenant que l’on a un overlay, on peut afficher notre contenu qui sera dans la DIV #divSplashScreen. Le contenu est donc placé au centre de l’écran que ce soit en hauteur ou en largeur. Et avec un z-index de 10000, il passe au dessus de l’overlay.

$('#divSplashScreen').css({
  'top' : ($(window).height() - $('#divSplashScrenn').height()) / 2,
  'width' : '100%', 
  'left': 0,
  'position': 'absolute',
  'text-align': 'center',
  'z-index': 10000
});

Le tout suivi d’un petit effet pour l’affichage :

$('#divSplashScreen').fadeIn();

A noter qu’au chargement de la page, la DIV #divSplashScreen doit être caché (‘ display:none ‘) pour profiter de l’effet.

Et pour la fermer ?

Pour cela, il faut utiliser une fonction qui va tout remettre à la normale : que ce soit l’overflow du body, cacher le splashscreen et supprimer l’overlay.

var evtClose = function() {
  // Body en mode Overflow normal
  $('body').css('overflow', 'auto');
  // Splashscreen
  $('#divSplashScreen').hide();
  // Overlay
  $('#overlay').remove();
  // Focus sur le body pour récupérer le fonctionnement des touches directionnels
  $('body').focus();
};

Au niveau des évènements, on peut faire plusieurs choses :
Soit lors du clic sur l’overlay :

$('#overlay').on('click', evtClose);

Soit lors du clic sur le splashscreen :

$('#divSplashScreen').on('click', evtClose);

Soit lors du clic sur une croix en haut à droite du splashscreen :

  // On récupère la taille du splashscreen
  var widthSplashScreen = $('#divSplashScreen').width();
  // On colle dans le splashscreen un span
  $('#divSplashScreen').append('');
  // On le positionne 
  $('#splashScreen_close').css({
    'right' : ($('body').width() - widthSplashScreen) / 2 + 5,
    'background-image': 'url("url of your image.png")',
    'cursor': 'pointer',
    'display': 'inline-block',
    'height': '14px',
    'position': 'absolute',
    'top': '10px'
    'width': '13px'
  });
  // On lui adjoint l évènement de fermeture
  $('#splashScreen_close').on('click', evtClose);

Conclusion

Et voilà, avec cela, cela devrait marcher du tonnerre. Pensez à mettre votre code plutôt dans le window.load de votre page que dans le document.ready car ainsi si votre splashscreen contient des images, elles seront chargées correctement.

Ajouter un commentaire

Commentaire :