Переливайтеся вліво, а не вправо


105

У мене є div overflow:hidden, всередині якого я показую номер телефону, коли його вводить користувач. Текст у розділі вирівнюється праворуч, а вхідні символи додаються праворуч, оскільки текст зростає ліворуч.

Але як тільки текст буде достатньо великим, щоб не вмістився у діві, останні символи номера автоматично обрізаються, і користувач не може побачити нові символи, які вона вводить.

Що я хочу зробити, це обрізати ліві символи, як-от div показує найправішу частину вмісту і переливається в ліву частину. Як я можу створити цей ефект?

переповнений номер телефону вліво


Для всіх, хто намагається змусити текст виконувати вирівнювання зверху вниз та вправо, виправте
Йорданія,

Відповіді:


149

Ви спробували використати таке:

direction: rtl;

Для отримання додаткової інформації див.
Http://www.w3schools.com/cssref/pr_text_direction.asp


22
Попередження: це не працює для відображення калькулятора зі спеціальними символами типу / та *.
Макс

11
Він також не працює для локалів з форматуванням номерів, що не входять у США, як "" для роздільника тисяч. Це
невірне

12
Ця властивість не призначена для вирівнювання, а також змінить порядок слів всередині. Fe 14:00–15:00звернеться до 15:00–14:00Firefox.
Енді

3
Чи не обертається це також порядком символів?
evolutionxbox

7
Так, вам потрібно загортати містяться елементи в інший елемент з direction: ltrправилом, щоб повернути ефект.
Оскар Гомес Алькасіс

56

У мене була та сама проблема, і я вирішив її за допомогою двох дівок. Зовнішній дів робить відсікання ліворуч, а внутрішній дів плаває праворуч.

.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>

Ви повинні мати можливість помістити будь-який вміст у внутрішній розділ і переповнити його зліва.


8
Я хотів, щоб це працювало, тому я зробив цей JSFiddle, щоб перевірити його, і він працює чудово! Чудова відповідь! Дякую!
WebWanderer

4
Це чудова відповідь, оскільки напрямок rtl має всілякі побічні ефекти. Якщо ви хочете переконатись, що внутрішній div вирівнюється і усікається лише зліва, якщо div буде перевищено, встановіть .outer-div на max-width: 100% та відображайте: inline-block. Дивіться тут
Лука

2
Дякуємо за веб-переглядача JSFiddle. Я оновив його для використання, overflow: visibleщоб вміст просочився з лівої сторони .
joeytwiddle

8

Ви можете зробити float:right і він переллється ліворуч, але в моєму випадку мені потрібно центрувати діл, якщо вікно більше елемента, але переповнювати ліворуч, якщо вікно менше. Будь-які думки з цього приводу?

Я спробував пограти з, direction:rtlале це, схоже, не змінило переповнення елементів блоку.

Я думаю, що єдина відповідь - це пропустити його праворуч, з дівом праворуч від нього, який також плаває право, а потім встановити ширину діва праворуч на половину решти вільного простору за допомогою jquery.


Погодьтеся. Плавте батьківським правом і переконайтесь, що жодних перешкоджаючих контейнерів переповнений прихований.
Ліза

8

легко зробити, <span>цифри і розташуйте проміжок абсолютним праворуч всередині елемента з прихованим переповненням.

<div style="width: 65px; height: 20px;
            overflow: hidden; position: relative; background: #66FF66;">
    <span style="position: absolute; right: 0;">05451234567</span>
</div>

:)

rgrds jake


5

Це спрацювало як шарм:

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

0

Змінено розмітку HTML та додав javascript до рішення jsFiddle WebWanderer.

https://jsfiddle.net/urulai/bfzqgreo/3/

HTML:

<div id="outer-div">

    <p>ipsum dolor amet bacon venison porchetta spare ribs, tongue turducken alcatra doner leberkas t-bone rump ball tip hamburger drumstick. Shoulder strip steak ribeye, kielbasa fatback pig kevin drumstick biltong pork short loin rump. Biltong doner ribeye, alcatra landjaeger tenderloin drumstick t-bone pastrami andouille. Sirloin spare ribs fatback, bresaola strip steak alcatra landjaeger kielbasa cupim doner. </p>

</div>

CSS:

#outer-div {
  width:100%;
  margin-left:auto;
  margin-right:auto;
  text-align:right;
  overflow:hidden;
  white-space: nowrap;
  border:1px solid black;
}

JS:

let outer = document.getElementById("outer-div");
outer.scrollLeft += outer.scrollWidth;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.