5607 sujets

Sémantique web et HTML

Bonjour à vous tous,

Voici du code HTML dont la coloration syntaxique a été faite avec la bibliothèque https://highlightjs.org
<!DOCTYPE html>
<html lang="fr">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css">
    <style>
        pre code.hljs {
            background-color: #0d1117;
        }
        code mark {
            background-color: #ffd33d;
            color: #000;
            padding: 0 2px;
            border-radius: 3px;
        }
    </style>
    <title>Titre de la page</title>
</head>

<body>
    <pre><code class="language-html" data-highlight='aria-activedescendant="option-2"'>&lt;!DOCTYPE html&gt;
&lt;html lang="fr"&gt;
&lt;head&gt;
   &lt;meta charset="UTF-8"&gt;
   &lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
   &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
   &lt;link rel="stylesheet" href="styles.css"&gt;
   &lt;title&gt;Titre de la page web&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;input id="searchbox"
           role="combobox"
           aria-activedescendant="option-2"
           aria-owns="listbox"
           aria-haspopup="listbox"&gt;

    &lt;ul id="listbox" role="listbox"&gt;
        &lt;li id="option-1" role="option"&gt;Pomme&lt;/li&gt;
        &lt;li id="option-2" role="option"&gt;Poire&lt;/li&gt; &lt;!-- actif --&gt;
        &lt;li id="option-3" role="option"&gt;Banane&lt;/li&gt;
    &lt;/ul&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
    <script>
        document.querySelectorAll("code[data-highlight]").forEach(code => {
            const target = code.dataset.highlight;
            code.innerHTML = code.innerHTML.replace(
                target,
                `<mark>${target}</mark>`
            );
        });
    </script>
    <script>
        hljs.highlightAll();
    </script>
</body>

</html>

Je voudrais maintenant surligner une ligne du code de cette manière :

upload/1772435533-62242-capturedancran2026-01-2310562.png

Mais ce n'est pas possible, ce que vous voyez ci-dessus est simplement une sélection à la souris puis une capture écran pour illustrer ce que je veux obtenir. J'ai essayé en ajoutant la balise <mark> et </mark>, encapsulant la ligne aria-activedescendant="option-2", mais ça ne fonctionne pas, parce que chaque ligne est considérée comme du texte brut et aucune balise placée à l'intérieur ne peut être exécutée.

J'ai soumis le problème à ChatGPT et il ne sait pas comment faire.
Confirmez-vous qu'il n'y a pas de solution ?

Que le code soit avec vous
Modifié par ObiJuanKenobi (02 Mar 2026 - 10:57)
Felipe a écrit :
Il te faudra utiliser une autre lib avec plus de possibilités (et plus lourde, etc)

Merci Felipe, j'ai cherché sur le web et j'ai trouvé la bibliothèque Javascript https://prismjs.com/plugins/line-highlight/ qui permet la coloration syntaxique, la numérotation des lignes et le surlignement de ou des lignes.

Voici le résultat que j'obtiens :
upload/1772456345-62242-capturedancran2026-03-0213583.png

Et voici le code HTML complet et modifié :
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/prismjs/themes/prism-tomorrow.css" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/prismjs/plugins/line-numbers/prism-line-numbers.css" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/prismjs/plugins/line-highlight/prism-line-highlight.css" rel="stylesheet">
    <style>
        .line-highlight {
            background: rgba(0, 191, 255, 0.30);
            border-left: 6px solid #00bfff;
            box-shadow: inset 0 0 8px rgba(0, 191, 255, 0.6);
        }
    </style>
    <title>Titre de la page</title>
</head>
<body>
    <pre class="line-numbers" data-line="13, 17"><code class="language-html ">&lt;!DOCTYPE html&gt;
&lt;html lang="fr"&gt;
&lt;head&gt;
   &lt;meta charset="UTF-8"&gt;
   &lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
   &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
   &lt;link rel="stylesheet" href="styles.css"&gt;
   &lt;title&gt;Titre de la page web&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;input id="searchbox"
           role="combobox"
           aria-activedescendant="option-2"
           aria-owns="listbox"
           aria-haspopup="listbox"&gt;
    &lt;ul id="listbox" role="listbox"&gt;
        &lt;li id="option-1" role="option"&gt;Pomme&lt;/li&gt;
        &lt;li id="option-2" role="option"&gt;Poire&lt;/li&gt; &lt;!-- actif --&gt;
        &lt;li id="option-3" role="option"&gt;Banane&lt;/li&gt;
    &lt;/ul&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<script src="https://cdn.jsdelivr.net/npm/prismjs/prism.js"></script>
<script src="https://cdn.jsdelivr.net/npm/prismjs/plugins/line-numbers/prism-line-numbers.js"></script>
<script src="https://cdn.jsdelivr.net/npm/prismjs/plugins/line-highlight/prism-line-highlight.js"></script>
</body>

</html>

Modifié par ObiJuanKenobi (02 Mar 2026 - 14:12)
Administrateur
C'est la référence ou ça l'était quand c'est sorti en tout cas, ce qui est utilisé sur le Forum. 12 ko compressés (33 ko de JS), je pensais que c'était plus. J'avais souvenir de plus lourd mais ce sont peut-être les langages supplémentaires (Python, Rust, etc qui ne nous concernent pas trop dans le web enfin côté navigateur en tout cas) et plugins qui finissent par peser...

EDIT : Pas les langages qui pèsent... 2,26 ko de CSS pour
/* PrismJS 1.30.0
 https://prismjs.com/download.html?#themes=prism-okaidia&languages=markup+css+clike+javascript+css-extras+csv+json+markup-templating+php+python+scss...  */

Modifié par Felipe (03 Mar 2026 - 09:38)