28112 sujets

CSS et mise en forme, CSS3

Pages :
Bonjour,
Je suis parti de ce topic :
https://forum.alsacreations.com/topic-4-85272-1-Texte-vertical-ok-mais-comment-le-lire-de-bas-en-haut-.html
IMPECCABLE. Mes CSS sont donc :
.test h2 {
	position: absolute;
	writing-mode: vertical-lr!important/*Texte vertical*/;
	text-align: center!important;
	background-color: green;
	right: 0px!important;
	display: block!important;
	height: 100%;
	z-index: 1!important;
	padding-right: 15px!important;
	padding-left: 15px!important;
	transform: rotate(180deg);
}

Est-ce possible de faire défiler le texte de bas en haut (en mode 180deg), ou de gauche à droite (sens de lecture) ?
Bonne journée,
ED
Bonjour kerlitinoec Smiley biggrin
je parle d'animation, le transform: rotate est uniquement là pour que le texte se lise à la verticale. Smiley murf
Bon après-midi Smiley cligne
ED
et du coup ça veut dire quoi "(en mode 180deg)" ?
Tu veux que ça défile au sein d'une div ou depuis le bord de l'écran ?
Avec un screenshot ça ira mieux Smiley sweatdrop
Que le texte à l'intérieur de la div verte aille de gauche à droite. Le texte, pas la div.
Merci Smiley biggrin upload/1654867496-48192-capturedaeacran2022-06-10aa15.jpg
Modérateur
Bonjour,

Quelques infos.

Pour ton "layout" , tu peut te servir de grid pour éviter le positionnement absolue.

Pour retourner ton texte, scale(-1) fonctionne aussi Smiley cligne .

Pour le défilement, si tu ne veut pas surcharger transform, tu peut utiliser du text-indent ou te servir d'un conteneur suplementaire.

Si ton texte à une longeur connue , un text-shadow (caler sur text-indent) peut aider à éviter d'avoir un moment de blanc .

Petite démo pour donner un peu plus de sens a ces mots avec du text-indent/text-shadow et translate() dans une grille https://codepen.io/gc-nomade/pen/BaYGWbq

cdt
Modifié par gcyrillus (10 Jun 2022 - 17:14)
Je n'ai pas le temps de chercher/tester, j'ai déjà un codepen Smiley lol
FA-BU-LEUX. Quel gain de temps Smiley biggrin
Bon, je risque de revenir vers vous niveau animation parce que ce que m'a expliqué gcyrillus, pas compris grand chose, mais je vais chercher... text-indent etc...
Encore merci à vous.
Bon week-end !
ED
Modérateur
Bonjour,

Le texte en 30em et les 100vh utilisé pour le défilement ne sont pas compatible. en réduisant la longueur u texte de h1 , tu verra que cela fonctionne à nouveau : https://jsfiddle.net/bh09j7ng/

Pour ce cas, il te faut plutôt regarder comment le h2 fonctionne , qui lui déplace une boite de texte. Pour l'ombrage en miroir, il te faudra l'adapter à la longueur du texte pour qu'il n'y est pas de chevauchement ex https://jsfiddle.net/mbo70s9c/1/

Un copier/coller sans comprendre est toujours sources de surprises Smiley decu

Cdt
Bonjour gcyrillus pour ton aide, tes codepen et tes explications. Smiley lol
Ou dois je chercher pour comprendre "grid" ?
C'est nouveau pour moi Smiley murf et je ne demand qu'à comprendre Smiley cligne
Encore merci, bonne fin de journée,
ED
Modérateur
Bonsoir,

Pour grid , tu peux commencer avec les tutos/articles ici Smiley smile https://www.alsacreations.com/tutoriels/ (tape grid dans la recherche une fois sur la page pour faire un tri rapide)

Peut-être commencer avec https://www.alsacreations.com/astuce/lire/1739-CSS-Grid-Layout-les-ressources-indispensables-pour-apprendre.html gridbyexample va te montrer plein d'exemple qui vont tout de suite te montrer ce que ça fait et tu pourras même jouer avec et modifier les exemples, csstricks va être utile comme aide mémoire , c'est anglophone, mais les traduction en lignes devraient le faire , ça aussi ça a bien évolué ).

En fait, grid, c'est pas nouveau, dix ans environ, c'est juste que les vielles habitudes ont la vie dure, que les navigateurs ont mis un moment pour s'accorder et que les pc/tablette/mobile sont aussi devenus suffisamment performant. Donc plus aucunes excuse pour bouder grid Smiley cligne

Cdt
Modifié par gcyrillus (13 Jun 2022 - 20:36)
Bonsoir gcyrillus,
J'ai un peu potassé grid, mais je ne comprends pas pourquoi ton codepen ne fonctionne pas sur Chrome Smiley hum
Safari et Firefox OK Smiley murf
Aurais-tu une idée ?
Merci et bonne soirée,
ED
Modifié par el_debutanti (16 Jun 2022 - 22:52)
Modérateur
el_debutanti a écrit :
Bonsoir gcyrillus,
J'ai un peu potassé grid, mais je ne comprends pas pourquoi ton codepen ne fonctionne pas sur Chrome Smiley hum
Safari et Firefox OK Smiley murf
Aurais-tu une idée ?
Merci et bonne soirée,
ED


Apparemment , Chrome à encore du mal avec writing-mode ,
1. l'orientation des ombrages de texte est à l'ouest (il faut inverser les valeurs ...)
2. et l'ombrage de texte ne veut pas s'afficher si en dehors de la boite ...

Solution possible avec le h2, utiliser filter:drop-shadow(), qui lui est insensible au writing-mode, sur l’élément transparent(sans fond) : https://codepen.io/gc-nomade/pen/YzegvxN

Cdt
Modérateur
el_debutanti a écrit :
Smiley biggrin Merci BEAUCOUP gcyrillus Smiley smile
J'ai encore du boulot avec grid Smiley hum
Excellente journée !
ED


Autant c'est simple une fois que tu as compris - En raccourcie : la grille est définie depuis le parent et quasiment tout se règle depuis le parent, les enfants vont ensuite se caler dans les cellules, autant c'est compliqué quand tu bataille avec au début , autant tu aimes une fois que c'est bien compris.

Ceci dit, text-shadow/filter et writing-mode sont totalement indépendant de grid.

Cdt


P.S. je t'ai peut-être proposé un truc en mélangeant trop de choses différentes à la fois : grid, transform, animation, text-indent, text-shadow, writing-mode, ... c'est un peu indigeste au début en effet, désolé. et bon week-end !
Modifié par gcyrillus (17 Jun 2022 - 14:49)
Oui, c'est tellement compliqué que je n'y arrive pas dans ma page Smiley bawling
https://lapagetest.fr/index2%20copie.html
Mes CSS :
*, ::after, ::before {
    box-sizing: border-box;
}

.grid {
  position: relative;
  display: grid;
  grid-gap: 1.5rem;
  grid-template-columns: repeat(12, 1fr);
  height: 100%;
  margin: 0;
}

.item {
  padding: 1.5rem;
  background-color: coral;
}

.text-content {
  grid-column: 1 / 9;
}

.vertical {
  position: absolute;
  grid-column: span 4 / -1;
  grid-row: 1 / 3;
  left: 0; 
  top: 0;
  right: 0;
  bottom: 0;
}
.vertical>h2{
  margin:0;
  grid-column:1;
  grid-row:2;
  display:grid;
  overflow:hidden;
  transform: scale(-1); 
  font-size:2em;
  color:ivory;
  /*text-shadow: 0 calc(100vh - 3.2rem) ,0 calc(-100vh + 3.2rem);  3.2rem = body gap + hauteur/margin de nav */
}
.vertical>h2> up-text{ 
  display:block;
  writing-mode: vertical-rl;
  animation: slide 6s linear infinite /*or*//*reverse*/;
  filter:  drop-shadow( 0 calc(100vh - 3.2rem)) drop-shadow( 0 calc(-100vh + 3.2rem)); 
}
@keyframes slide  {
  from{transform: translatey(100%);}
  to{transform: translatey(-100%); }
}

/* le block conteneur */
.marquee-rtl {
  max-width: 100%;                      /* largeur de la fenêtre */
  overflow: hidden;                     /* masque tout ce qui dépasse */
  height: 500px;
}
/* le bloc défilant */
.marquee-rtl.animated > :first-child {                  /* on ajoute la classe .animated */
  display: inline-block;                /* modèle de boîte en ligne */
  padding-right: 2em;                   /* un peu d'espace pour la transition */
  padding-left: 100%;                   /* placement à droite du conteneur */
  white-space: nowrap;                  /* pas de passage à la ligne */
  animation-name: defilement-rtl;       /* référence à la règle @keyframes mise en oeuvre */
  animation-duration: 15s;                 /* valeur à ajuster suivant la longueur du message */
  animation-iteration-count: infinite;  /* boucle continue */
  animation-timing-function: linear;    /* pas vraiment utile ici */
}
@keyframes defilement-rtl {
  0% {
    transform: translate3d(0,0,0);      /* position initiale à droite */
  }
  100% {
    transform: translate3d(-100%,0,0);  /* position finale à gauche */
  }
}

/* ---------------- */
/* défilement vertical */
.marque-ver {
  position:relative;
  max-width: 100%;
  overflow: hidden;
}
.marque-ver > div {
  position:relative;
  animation: defilement-ver 10s infinite linear;
}

@keyframes defilement-ver {
  0% {
    transform: translate3d(0,0,0);
  }
  100% {
    transform: translate3d(0,-100%,0);
  }
}
/* ---------------- */

Qu'est-ce que j'ai encore mal fait ? Smiley murf
Merci