右ではなく左へのオーバーフロー


105

overflow:hiddenユーザーが入力するときに電話番号を表示するdivがあります。div内のテキストは右に揃えられ、テキストが左に大きくなるにつれて着信文字が右に追加されます。

ただし、テキストがdivに収まらないほど大きくなると、数字の最後の文字が自動的にトリミングされ、ユーザーは入力した新しい文字を表示できなくなります。

私がしたいことは、divがコンテンツの右端を表示して左側にオーバーフローしているように、左の文字をトリミングすることです。この効果を作成するにはどうすればよいですか?

左に電話番号があふれています


テキストを上から下、右に揃えよ
ジョーダン

回答:


149

以下を使用してみましたか:

direction: rtl;

詳細については、http://www.w3schools.com/cssref/pr_text_direction.aspを参照して
ください


22
警告:これは、/や*などの特殊文字を含む電卓ディスプレイでは機能しません。
最大

11
また、桁区切り記号の「」など、米国以外の数値形式のロケールでは機能しません。これは正しい解決策ではありません
Robert Slaney、2015

12
このプロパティは整列を目的としたものではなく、内部の単語の順序も変更します。Fe 14:00–15:0015:00–14:00Firefoxを使用します。
アンディ

3
これもキャラクターの順番を逆にしませんか?
evolutionxbox

7
はい、含まれている要素を別の要素にdirection: ltrルールでラップして、効果を元に戻す必要があります。
オスカーゴメスアルカニス2016年

56

同じ問題があり、2つの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内にコンテンツを配置し、左側にオーバーフローできるはずです。


8
私はこれが動作することを確認したかったので、このJSFiddleをテストしてテストしました。正解です。ありがとう!
WebWanderer 2016年

4
方向rtlにはあらゆる種類の副作用があるため、これは素晴らしい答えです。内部divを左揃えにし、divを超えた場合にのみ左に切り捨てるようにするには、.outer-divをmax-width:100%に設定し、display:inline-blockに設定します。ここを
ルーク

2
JSFiddle WebWandererをありがとう。overflow: visibleコンテンツを左側からリークできるように更新して使用しました。
joeytwiddle 2016

8

あなたがすることができfloat:right、それは左にオーバーフローしますが、私の場合、ウィンドウが要素より大きい場合はdivを中央に配置する必要がありますが、ウィンドウが小さい場合は左にオーバーフローします。それについての考えは?

いろいろ試してみましdirection:rtlたが、ブロック要素のオーバーフローが変わるようには見えません。

唯一の答えは、右にフロートし、その右側にdivも右にフロートすることです。次に、jqueryを使用して、divの幅を残りのウィンドウスペースの半分に右に設定します。


同意します。親を右にフロートし、間にあるコンテナーがオーバーフローを非表示に設定していないことを確認します。
リサ

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をWebWandererのjsFiddleソリューションに追加しました。

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;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.