137 votes

Débordement à gauche au lieu de droite

J'ai un div avec overflow:hidden à l'intérieur duquel j'affiche un numéro de téléphone au fur et à mesure que l'utilisateur le tape. Le texte à l'intérieur du div est aligné à droite et les caractères entrants sont ajoutés à droite au fur et à mesure que le texte s'étend vers la gauche.

Mais une fois que le texte est suffisamment grand pour ne pas tenir dans le div, les derniers caractères du numéro sont automatiquement rognés et l'utilisateur ne peut pas voir les nouveaux caractères qu'il tape.

Ce que je veux faire, c'est recadrer les caractères de gauche, comme si le div affichait la partie la plus à droite de son contenu et débordait sur le côté gauche. Comment puis-je créer cet effet ?

overflowing phone number to left

0 votes

Pour tous ceux qui ont essayé de faire en sorte que le texte se déroule de haut en bas et soit aligné à droite, vérifiez stackoverflow.com/a/53576895/4418836

185voto

Rob Bell Points 809

Avez-vous essayé d'utiliser ce qui suit :

direction: rtl;

Pour plus d'informations, voir
http://www.w3schools.com/cssref/pr_text_direction.asp

24 votes

Attention : cela ne fonctionne pas pour l'affichage d'une calculatrice avec des caractères spéciaux comme / et * .

11 votes

Elle ne fonctionne pas non plus pour les pays dont le formatage des nombres n'est pas américain, comme " " pour le séparateur de milliers. Ce n'est pas la bonne solution

16 votes

Cette propriété n'est pas destinée à l'alignement, et elle modifiera également l'ordre des mots à l'intérieur. F.e. 14:00–15:00 se tournera vers 15:00–14:00 dans Firefox.

68voto

Abe Points 61

J'ai eu le même problème et je l'ai résolu en utilisant deux divs. La div extérieure effectue le découpage sur la gauche et la div intérieure effectue le flottement sur la droite.

.outer-div {
  width:70%;
  margin-left:auto;
  margin-right:auto;
  text-align:right;
  overflow:hidden;
  white-space: nowrap;
}

.inner-div {
  float:right;
}

:

<div class="outer-div">
  <div class="inner-div">     
    <p>A very long line that should be trimmed on the left</p>
  </div>
</div>

Vous devriez pouvoir placer n'importe quel contenu à l'intérieur du div interne et le faire déborder sur la gauche.

10 votes

Je voulais voir si ça fonctionnait, alors j'ai fait ce JSFiddle pour le tester et il fonctionne très bien ! Excellente réponse ! Merci !

4 votes

C'est une excellente réponse car la direction rtl a toutes sortes d'effets secondaires. Si vous voulez vous assurer que la div intérieure est alignée à gauche et seulement tronquée à gauche si la div est dépassée, définissez le .outer-div à max-width : 100% et display : inline-block. Voir aquí

2 votes

Merci pour le JSFiddle WebWanderer. Je l'ai mis à jour pour utiliser overflow: visible pour que le contenu puisse fuite du côté gauche .

14voto

Andreas Furster Points 1338

Voici une solution beaucoup plus simple qui utilise le système Flexbox. Elle fonctionne également sur les pseudo-éléments.

p {
  display: flex;
  justify-content: flex-end;
  white-space: nowrap;
  overflow: hidden;

  font-size: 2em;
  width: 120px;
  background: yellow;
}

<p>156189789123</p>

12voto

Dji Points 61

Ça a marché comme sur des roulettes :

<div style="direction: rtl;">
  <span style="white-space: nowrap; direction: ltr; display: inline-block;">your short or long comment<span>
</div>

11voto

ohnoezitasploded Points 371

Vous pouvez faire float:right et il débordera sur la gauche, mais dans mon cas, je dois centrer le div si la fenêtre est plus grande que l'élément, mais déborder sur la gauche si la fenêtre est plus petite. Avez-vous des idées à ce sujet ?

J'ai essayé de jouer avec direction:rtl mais cela ne semble pas changer le débordement des éléments du bloc.

Je pense que la seule solution est de le faire flotter à droite, avec un div à sa droite qui est également flotté à droite, puis de définir la largeur du div à droite à la moitié de l'espace restant de la fenêtre avec jquery.

0 votes

D'accord. Faites flotter le parent vers la droite et assurez-vous qu'aucun conteneur intermédiaire n'a le paramètre overflow défini sur hidden.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X