5546 sujets

Sémantique web et HTML

Bonjour à vous tous,

Je voudrais obtenir un défilement horizontale d'une accroche, de la droite vers la gauche, comme le fait la page d'accueil de ce site web : https://coflix.org/ (le petit bandeau orange en haut).

J'ai fait mes recherches sur MDN pour savoir quelles sont les propriétés CSS à utiliser et comment structurer en HTML et je suis arrivé à ça :

HTML

<!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="styles.css">
    <title>Défilement de texte</title>
</head>
<body>
    <div class="defilement-texte bandeau">
        <p>Phrase à faire défiler horizontalement</p>
    </div>                   
</body>
</html>

CSS

.defilement-texte {
  overflow: hidden;
  white-space: nowrap;
}
.defilement-texte p {
  display: inline-block;
  animation: scroll-left 10s linear infinite;
}
.bandeau{
  background-color: red;
  color: white;
}
@keyframes scroll-left {
  0% {
    transform: translateX(100%);
  }
  100% {
    transform: translateX(-100%);
  }
}

J'ai un double problème. Le premier est que la phrase commence à défiler vers la gauche à l'intérieur du bandeau rouge (presque au centre) alors que je voudrais qu'elle entre dans l'écran en partant de l'extrême droite. Le second problème est que je n'arrive pas à contrôler l'épaisseur du bandeau, c'est-à-dire que je voudrais réduire sa hauteur tout en gardant un corps de caractère suffisamment gros, autrement dit, je voudrais un petit padding à l'intérieur parce que je compte utiliser au final une police de caractères de type "dot" comme celle-ci https://fontmeme.com/polices/police-dot-font/ de manière à donner l'impression que les caractères sont digitaux de couleur vert sur fond noir comme l'exemple ci-dessous :
upload/1680619048-62242-istockphoto-1047455364-612x61.jpg

Je n'arrive donc pas à faire démarrer le défilement totalement à droite et je ne contrôle pas non plus l'épaisseur du bandeau. Quelqu'un saurait m'aider ?

Merci pour votre sollicitude et
que le code soit avec vous !
Modifié par ObiJuanKenobi (04 Apr 2023 - 16:41)
Bonjour,
tu n'arrive pas à contrôler l'épaisseur du bandeau parce que tu ne l'as pas déclaré dans le html (en tous cas celui que tu as donné). J'ai l'impression qu'on ne voit pas tout le html. Ensuite, dans le css, il faut mettre un height sur cette class pour augmenter sa hauteur. Un exemple parmi d'autres, qui fonctionne (tu ne touche pas au reste, tu ajoutes juste la class bandeau dans le css et le nouvaeu keyframes ci-dessous à la place du tiens).
.bandeau{
  background-color: red;
  color: white;
  height:8em;
  padding:} //Pour le padding, ce que tu voudras//

@-webkit-keyframes scroll-left {
 	0%, 100% {margin-left:100%;}
 	99.99% {margin-left:-100%;}
 }

Il y a plusieurs façons de faire un défilement de texte, niuxe en a montré un autre. J'ai continué avec ton code.
Mon avis, ce défilement n'est pas toujours apprécié des visiteurs, surtout avec des gros pavés texte. Smiley cligne
Modifié par Bongota (04 Apr 2023 - 19:10)
niuxe a écrit :
Regarde sur la mdn, pourquoi j'ai nommé l'animation "marquee".

Toute une époque !
Merci Bongota, ça marche maintenant.
Je prends note que ce genre de défilement n'est pas conseillé sur les sites web pour rester dans le graphisme Flatdesign.

Après avoir regardé dans MDN la définition de la balise <marquee>, je me demande pourquoi le W3C a décidé de la rendre obsolète. Peut être parce qu'elle n'a pas été créée par le W3C, peut être que c'était une balise créée seulement pour un navigateur spécifique (genre Microsoft pour son navigateur Internet exploreur) ou même créée par des particuliers, en tout cas, c'est dommage qu'elle soit dépréciée.
Possible, je ne connais pas les arcanes de ces décisions.
Tu n'as peut-être pas encore remarqué, mais après avoir défilé, le texte revient dans la fenêtre (sur mes essais en tous cas).
Il y a une fonction qui permet à une animation de rester indéfiniment à l'arrêt après avoir parcouru son chemin. En Français, c'est "au loin", en Anglais ..... Je te laisse chercher.
Avec les keyframes, on fait beaucoup de choses.
Ça se nomme "animation-fill-mode:forwards;"
J'ai juste tapé Smiley cligne "animation infinie" en Français, et ça m'a donné :
https://developer.mozilla.org/fr/docs/Web/CSS/animation
Tout est là ensuite.
Il y a énormément de possibilités avec animation - rapide au début, plus lent après, l'inverse, de gauche à droite.
Pour ton cas précis "animation-fill-mode:forwards; se met sous "animation: scroll-left 10s, linear infinite;"
Le texte qui revient sur la page après son parcours met un certain temps pour le faire. Ça dépend de la durée que tu as donnée dans "animation", durée qui détermine elle-même la vitesse de défilement du texte. Tout se tient, mais on peut jouer avec.

Bonne journée.
Rectification. Forward en Anglais ne veut pas dire précisément "au loin", c'est plutôt "en avant, vers l'avant". Mais dans le contexte, c'est bien au loin que l'on envoie l'animation, pour ne plus la revoir. Smiley biggrin
Modifié par Bongota (07 Apr 2023 - 09:32)