Перелив влево вместо вправо

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

Но как только текст становится достаточно большим, чтобы не помещаться в div, последние символы числа автоматически обрезаются, и пользователь не может видеть новые символы, которые он вводит.

Что я хочу сделать, так это обрезать левые символы, например, div показывает крайнюю правую часть своего содержимого и выходит за пределы левой стороны. Как мне создать такой эффект?

Перелив влево вместо вправо

Для тех, кто пытается заставить текст бегать сверху вниз и выровнять по правому краю, проверьте stackoverflow.com/a/53576895/4418836

Jordan 17.03.2020 17:04
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
112
1
70 167
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Вы пробовали использовать следующее:

direction: rtl;

Для получения дополнительной информации см.
. http://www.w3schools.com/cssref/pr_text_direction.asp

Предупреждение: это не работает для дисплея калькулятора со специальными символами, такими как / и *.

Max 09.02.2013 05:23

Это также не работает для языков с форматированием чисел, отличным от США, например "" для разделителя тысяч. Это неправильное решение

Robert Slaney 13.02.2015 03:18

Это свойство не предназначено для выравнивания, и оно также изменит порядок слов внутри. F.e. 14:00–15:00 превратится в 15:00–14:00 в Firefox.

Andy 21.03.2016 17:58

Разве это тоже не меняет порядок символов?

evolutionxbox 03.08.2016 17:05

Да, вам нужно обернуть содержащиеся элементы в другой элемент с правилом direction: ltr, чтобы обратить эффект.

Óscar Gómez Alcañiz 25.10.2016 11:20

легко сделать, <span> числа и позиционировать диапазон абсолютно справа внутри элемента со скрытым переполнением.

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

:)

rgrds Джейк

Вы можете сделать float:right, и он будет переполняться слева, но в моем случае мне нужно центрировать div, если окно больше, чем элемент, но переполнение слева, если окно меньше. Есть мысли по этому поводу?

Я попытался поиграть с direction:rtl, но это не повлияло на переполнение блочных элементов.

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

Соглашаться. Переместите родительский элемент вправо и убедитесь, что для промежуточных контейнеров не установлено значение скрытого переполнения.

Lisa 07.05.2012 10:53

У меня была такая же проблема, и я решил ее с помощью двух div. Внешний div выполняет обрезку слева, а внутренний div перемещает вправо.

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

Вы должны иметь возможность помещать любой контент во внутренний div и переполнять его слева.

Я хотел увидеть, как это работает, поэтому я сделал этот JSFiddle, чтобы протестировать его, и он отлично работает! Отличный ответ! Спасибо!

WebWanderer 06.01.2016 22:18

Это отличный ответ, поскольку у direction RTL есть всевозможные побочные эффекты. Если вы хотите, чтобы внутренний div был выровнен по левому краю и усекался только влево, если div был превышен, установите для .outer-div значение max-width: 100% и display: inline-block. См. здесь

Luke 11.08.2016 03:28

Спасибо за JSFiddle WebWanderer. Я обновил его, чтобы использовать overflow: visible, чтобы содержимое могло утечка с левой стороны.

joeytwiddle 08.09.2016 08:57

Это сработало как шарм:

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

Изменена разметка 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;

Другие вопросы по теме