IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

JS + CSS pour tranformer balise alt de img en légende


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Webmaster
    Inscrit en
    Août 2009
    Messages
    33
    Détails du profil
    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2009
    Messages : 33
    Points : 11
    Points
    11
    Par défaut JS + CSS pour tranformer balise alt de img en légende
    Bonjour,

    Je souhaite afficher une légende sur les photos en utilisant les infos déjà enregistrées dans Alt de img.

    Pour cela je suis donc à la recherche d'un script JS pour récupérer le contenue de "alt" et l'afficher dans "title" avec une mise en forme CSS comme légende par dessus l'image.
    j'ai un grand nombre d'images sur le site et toute non pas forcement de légende mais une majorité tous de même.

    pourriez-vous m'aider ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    en js pur ? avec jquery c'est fait en 3 lignes ...

  3. #3
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Bonjour,

    On aurait pu penser utiliser CSS uniquement avec img:after { content: attr(alt); }, mais les pseudo sélecteurs before et after ne fonctionnent pas avec les tags autofermants comme img.

    Il faut donc passer par JavaScript. Voilà une solution sans l'usage d'une librairie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [].forEach.call(document.querySelectorAll("figure > img"), function(img){
        var caption = document.createElement("figcaption");
        caption.innerHTML = img.getAttribute("alt");
        img.parentNode.insertBefore(caption, img.nextSibling);
    });
    Les images doivent suivre le code HTML5 conseillé pour une image avec sa légende
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <figure>
      <img src="image.jpg" alt="Légende associée" />
      <!-- figcaption sera inséré ici -->
    </figure>

  4. #4
    Membre à l'essai
    Webmaster
    Inscrit en
    Août 2009
    Messages
    33
    Détails du profil
    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2009
    Messages : 33
    Points : 11
    Points
    11
    Par défaut
    Bonjour,
    Merci de vos réponses, je pensais plutôt au jquery. Mais je ne suis pas développeur. La solution la plus stable sera la meilleur.

  5. #5
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Si tu utilises jQuery, pourquoi ne pas avoir posté dans la section jQuery ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("figure > img").each(function(){
        $('<figcaption>').text($(this).attr('alt')).insertAfter(this);
    });

  6. #6
    Membre à l'essai
    Webmaster
    Inscrit en
    Août 2009
    Messages
    33
    Détails du profil
    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2009
    Messages : 33
    Points : 11
    Points
    11
    Par défaut
    Merci de vos réponses et pardon si j'ai poster dans la rubrique JS mais je ne pensais pas ca possible en jQuery.
    Encore une petit question c'est possible de mettre le contenu de la balise "alt" dans la balise "title" de l'image afin qu'il soit lue par les moteurs de recherche.

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 110
    Points : 44 929
    Points
    44 929
    Par défaut
    Bonjour,
    Encore une petit question c'est possible de mettre le contenu de la balise "alt" dans la balise "title" de l'image afin qu'il soit lue par les moteurs de recherche.
    ce n'est pas à javascript de le faire mais au codeur. Cette façon de faire, faisable coté client, ne sera pas prise en compte coté serveur.

  8. #8
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Oui, beaucoup de robots n'exécutent pas le JavaScript donc il faut que l'attribut title soit renseigné directement dans le code HTML.

Discussions similaires

  1. css pour la balise object
    Par logiciel_const dans le forum Mise en page CSS
    Réponses: 20
    Dernier message: 06/08/2008, 16h53
  2. css pour la balise body
    Par Titeuf82 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 25/02/2008, 17h31
  3. [CSS] balise div et css pour eviter les framesets
    Par jfjava2002 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 24/03/2006, 11h56
  4. [CSS] bordure pour la balise td
    Par Bibouda dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 01/01/2006, 22h27
  5. [HTML] [CSS] href et balise img.
    Par Devil666 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 15/06/2005, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo