Defilement texte dans un trapeze

Fermé
mont_dani Messages postés 229 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 février 2024 - 15 juil. 2022 à 18:04
mont_dani Messages postés 229 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 février 2024 - 17 juil. 2022 à 19:53

Bonjour

Je voudrai presenter un texte dont la marge est oblique en suivant une triangle. Tout ca sans problème.

mon souci est lorsque le texte est plus long que l'espace du trapeze et que j'utilise la barre de defilement, le texte et le triangle se déplace.

Vous voir le résultat ici https://lenergie-vive.com/lev/lev_2/test.php

Comment faire pour que seulement le texte défile en suivant la diagonale du triangle.

J'ai chercher et essayer mais en vain.. Je pense qu'il faut passer par un de JS, mais là mes connaissances sonts restreintes.

Existe t-il un script qui pourrai solucionner mon problème?

Ou pouvez-vous me guider pour arriver a mon objectif?

Voici mon script






<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
		
	</head>
	<style>
p{
  margin:20px auto;
  width:350px;
   height:500px;
  text-align:justify;
   overflow: scroll;/*pour la barre de defilement dans le message*/
  }
p:before{
  /*position: fixed;
  top:10px;
  left:10px;*/
  content:'';
  width:50%; /* largeur du triangle*/
  float:left;
  height:500px;
  
  /*background: url('https://farm4.staticflickr.com/3165/5733278274_2626612c70.jpg') left center;*/
  background-size:cover;
  -webkit-shape-outside: polygon(0 0, 100% 100%, 0 100%); 
  shape-outside: polygon(0 0,  100% 100%, 0 100%);
  -webkit-clip-path: polygon(100% 0, 0 100%, 0 100%);
  clip-path: polygon(100% 0, 0 100%, 0 100%);
  -webkit-shape-margin: 0;
  shape-margin: 0;
}
</style>
<body>
<p>
La manzana es el fruto comestible de la especie Malus domestica, el manzano común. Es una fruta pomácea de forma redonda y sabor muy dulce, dependiendo de la variedad.

Los manzanos se cultivan en todo el mundo y son las especies más utilizadas del género Malus. El árbol se originó en Asia Central, donde su ancestro salvaje, Malus sieversii, todavía se encuentra hoy en día. Las manzanas se han cultivado durante miles de años en Asia y Europa y fueron traídas a América del Norte por colonos europeos. Las manzanas tienen un significado religioso y mitológico en muchas culturas, incluyendo la tradición nórdica, griega y cristiana europea.

Los manzanos son grandes si se cultivan a partir de semillas. Generalmente, los cultivares de manzana se propagan injertando en portainjertos, que controlan el tamaño del árbol resultante. Hay más de 7500 cultivares conocidos de manzanas con diferentes características. Existen cultivares que producen frutos adecuados para cocinar, consumir crudos o producción de sidra. Tanto árboles como frutos son susceptibles de padecer enfermedades, como hongos, bacterias y plagas de parásitos, que se pueden controlar por medios orgánicos y no orgánicos. En 2010, el genoma del fruto fue secuenciado como parte de la investigación sobre el control de enfermedades y la reproducción selectiva en la producción de manzanas.

La producción mundial de manzanas en 2018 fue de 86 millones de toneladas, y China representa casi la mitad del total.1​

La manzana es el fruto comestible de la especie Malus domestica, el manzano común. Es una fruta pomácea de forma redonda y sabor muy dulce, dependiendo de la variedad.

Los manzanos se cultivan en todo el mundo y son las especies más utilizadas del género Malus. El árbol se originó en Asia Central, donde su ancestro salvaje, Malus sieversii, todavía se encuentra hoy en día. Las manzanas se han cultivado durante miles de años en Asia y Europa y fueron traídas a América del Norte por colonos europeos. Las manzanas tienen un significado religioso y mitológico en muchas culturas, incluyendo la tradición nórdica, griega y cristiana europea.

Los manzanos son grandes si se cultivan a partir de semillas. Generalmente, los cultivares de manzana se propagan injertando en portainjertos, que controlan el tamaño del árbol resultante. Hay más de 7500 cultivares conocidos de manzanas con diferentes características. Existen cultivares que producen frutos adecuados para cocinar, consumir crudos o producción de sidra. Tanto árboles como frutos son susceptibles de padecer enfermedades, como hongos, bacterias y plagas de parásitos, que se pueden controlar por medios orgánicos y no orgánicos. En 2010, el genoma del fruto fue secuenciado como parte de la investigación sobre el control de enfermedades y la reproducción selectiva en la producción de manzanas.

La producción mundial de manzanas en 2018 fue de 86 millones de toneladas, y China representa casi la mitad del total.1​

</p>


</body>
</html>








2 réponses

Salut,

le plus simple est probablement d'adapter la hauteur à la taille du texte.

Je ne pense pas que JavaScript ou la programmation soit essentiel ici, il suffit de changer la hauteur de 500px par quelque chose qui prends en compte la taille du texte, "em" par exemple:

https://www.codeur.com/tuto/css/unite-de-mesure-taille-px-em-rem/

Ce qui peut se faire par la programmation c'est éventuellement de calculer la hauteur de chaque page pour adapter la taille de police et le nombre de lignes(donc nombres d'em) mais comme ce n'est pas précisé ici cela ne me semble pas utile.

A noter que ce genre de mise en page ne sont pas évidentes ni facilement lisibles.

Si vous voulez quelque chose de joli et facilement adaptable il est plus commun de jouer sur les marges même si cela devient un peu plus un travail d’orfèvre:

première ligne: on décale la marge à gauche et à droite pour indiquer la pointe,

seconde ligne on décale un peu moins les marges pour élargir la pyramide(ou la forme que l'on veut du texte), etc...

Un truc du genre:

<p style="margin:0 3em;width:100%;">1ere ligne</p>
<p style="margin:0 2.5em;width:100%;">2nd ligne</p>
<p style="margin:0 2em;width:100%;">3eme ligne</p>
...

Aussi possibilité d'utiliser du SVG incluant un texte pour avoir d'autres possibilités de textes

https://developer.mozilla.org/fr/docs/Web/SVG/Element/text

Ou même avec CANVAS(dessin en 2D via la balise CANVAS) avec des pochoirs et/ou le même travail de décalage ligne par ligne.

Ces deux dernières solutions ont l’inconvénient de ne plus avoir un texte accessible car il devient une image.

L'inconvénient d'avoir un texte dans une forme un peu biscornu outre la complexité à le faire c'est la perte de lisibilité et la difficulté voire impossibilité à adapter, donc c'est à éviter dans la plupart des cas(je parle d'un paragraphe entier de texte et non d'une phrase ou d'un titre ou des lettrines ou une combinaison avec une image de fond feront le boulot sans trop s'embêter).

ps: laissez tomber le DOCTYPE strict, utilisez le DOCTYPE HTML5 beaucoup plus simple à écrire, permissif et adapté aux normes actuelles(le doctype strict date d'avant les années 2000, le transitional le début 2000 et était transitoire):

https://tutowebdesign.com/doctype-html5.php

0
mont_dani Messages postés 229 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 février 2024
17 juil. 2022 à 19:53

Merci pour toutes tes options.

il me semble que CANVAS peut etre une bonne option.

J'ai donc préparé un canvas qui s'affiche bien.

le problème est lorsque je veux mettre la hauteur a hauteur de pantalla.

J'ai essayer 100% mais sans résultat masi si met la valeur en pixel ca fonctionne

Voici le code

<!DOCTYPE html>
<html>
    <head>
        <meta charset='utf-8'>
        
        <style>
            #c1{
                background-color: yellow;
            }
        </style>
    </head>
    <body>
	<script>  alert("La resolución de pantalla que tienes en este momento es de: " + screen.width + " x " + screen.height) </script>
        <canvas id="c1" width="
							<script type="text/javascript">
							var largeur = screen.width;
							document.write(largeur);
							</script>" //si je met ici la largeur en pixel c est ok
						height="
							<script type="text/javascript">
							var hauteur = screen.height;
							document.write(hauteur);
							</script>"//si je met ici la hauteur en pixel c est ok
				></canvas>
<script>
	
	var ht = screen.height;
	var lg = screen.width;
	 
	let canvas = document.getElementById('c1');
let ctx = canvas.getContext('2d');


ctx.beginPath();
ctx.moveTo(0, 0); //en haut a gauche gauche / haut
ctx.lineTo(0, ht);//en bas a droite gauche / haut
ctx.lineTo(125, ht); //en bas a droite gauche / haut
ctx.fillStyle = '#d916a2'; //violet
ctx.fill();

canvas.width = canvas.parentNode.offsetWidth;
canvas.height  = canvas.parentNode.offsetHeight;
</script>
    </body>
</html>

Ou est mon erreur et quelle est-elle?

0