向左溢出而不是向右溢出

Ser*_*gel 94 html css overflow

我有一个div overflow:hidden,我在其中显示用户输入的电话号码.div内的文本与右对齐,并且当文本向左扩展时,传入的字符将添加到右侧.

但是一旦文本大到不适合div,数字的最后一个字符就会自动裁剪,用户无法看到她输入的新字符.

我想要做的是裁剪左边的字符,就像div显示其最右边的内容并溢出到左侧.我该如何创造这种效果?

电话号码溢出到左边

Rob*_*ell 143

您是否尝试过使用以下内容:

direction: rtl;
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅
http://www.w3schools.com/cssref/pr_text_direction.asp

  • 警告:这对于具有特殊字符(如/和*)的计算器显示不起作用. (19认同)
  • 它也不适用于具有非美国数字格式的语言环境,例如""表示千位分隔符.这不是正确的解决方案 (10认同)
  • 此属性不用于对齐,它也会更改内部单词的顺序.Fe`14:00-15:00`将在Firefox中变为"15:00-14:00". (10认同)
  • 是的,您需要使用`direction:ltr`规则将包含的元素包装在另一个元素中以反转效果. (7认同)
  • 这不会颠倒字符的顺序吗? (3认同)

小智 52

我有同样的问题,并使用两个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>
Run Code Online (Sandbox Code Playgroud)

您应该能够将任何内容放在内部div中并将其溢出到左侧.

  • 我想看到这个工作,所以我做了[**这个JSFiddle**](https://jsfiddle.net/WebWanderer/375fmu1q/)来测试它,它很棒!很棒的答案!谢谢! (6认同)
  • 这是一个很好的答案,因为方向rtl有各种各样的副作用.如果要确保内部div保持对齐并且仅在超过div时将其截断到左侧,请将.outer-div设置为max-width:100%并显示:inline-block.见[这里](https://jsfiddle.net/jew4zfyk/) (3认同)
  • 感谢 JSFiddle WebWanderer。我将其更新为使用 `overflow: visible` 以便内容可以[从左侧泄漏](https://jsfiddle.net/375fmu1q/22/)。 (2认同)

And*_*ter 14

这是使用 Flexbox 的一种更简单的解决方案。它也适用于伪元素。

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

  font-size: 2em;
  width: 120px;
  background: yellow;
}
Run Code Online (Sandbox Code Playgroud)
<p>156189789123</p>
Run Code Online (Sandbox Code Playgroud)

  • 是否可以在开头添加“...”,例如使用 text-overflow:ellipsis 完成的操作? (2认同)

cat*_*gif 7

你可以做float:right,它会溢出到左边,但在我的情况下,如果窗口大于元素,我需要居中div,但如果窗口较小,我需要向左溢出.有什么想法吗?

我试过玩,direction:rtl但似乎并没有改变块元素的溢出.

我认为唯一的答案是将其向右浮动,右侧的div也向右浮动,然后使用jquery将div的宽度设置为剩余窗口空间的一半.


小智 5

容易完成,<span>数字和位置绝对在一个隐藏溢出的元素内的绝对位置.

<div style="width: 65px; height: 20px;
            overflow: hidden; position: relative; background: #66FF66;">
    <span style="position: absolute; right: 0;">05451234567</span>
</div>
Run Code Online (Sandbox Code Playgroud)

:)

rgrds杰克


小智 5

这就像一个魅力:

<div style="direction: rtl;">
  <span style="white-space: nowrap; direction: ltr; display: inline-block;">your short or long comment<span>
</div>
Run Code Online (Sandbox Code Playgroud)