ล้นไปทางซ้ายแทนที่จะเป็นขวา


106

ฉันมี div ด้วยoverflow:hiddenซึ่งฉันจะแสดงหมายเลขโทรศัพท์ในขณะที่ผู้ใช้พิมพ์ ข้อความภายใน div จะจัดชิดขวาและอักขระขาเข้าจะถูกเพิ่มไปทางขวาเมื่อข้อความขยายไปทางซ้าย

แต่เมื่อข้อความใหญ่พอที่จะไม่พอดีกับ div อักขระสุดท้ายของตัวเลขจะถูกครอบตัดโดยอัตโนมัติและผู้ใช้จะไม่เห็นอักขระใหม่ที่เธอพิมพ์

สิ่งที่ฉันต้องการทำคือครอบตัดอักขระทางซ้ายเช่น div แสดงเนื้อหาทางขวาสุดและล้นไปทางด้านซ้าย ฉันจะสร้างเอฟเฟกต์นี้ได้อย่างไร?

หมายเลขโทรศัพท์ล้นไปทางซ้าย


สำหรับใครก็ตามที่พยายามทำให้ข้อความทำงานจากบนลงล่างและจัดชิดขวาให้ชำระเงินstackoverflow.com/a/53576895/4418836
จอร์แดน

คำตอบ:


151

คุณได้ลองใช้สิ่งต่อไปนี้:

direction: rtl;

สำหรับข้อมูลเพิ่มเติมโปรดดูที่
http://www.w3schools.com/cssref/pr_text_direction.asp


22
คำเตือน: สิ่งนี้ใช้ไม่ได้กับการแสดงเครื่องคิดเลขที่มีอักขระพิเศษเช่น / และ *
สูงสุด

11
นอกจากนี้ยังใช้ไม่ได้กับภาษาที่มีการจัดรูปแบบตัวเลขที่ไม่ใช่สหรัฐอเมริกาเช่น "" สำหรับตัวคั่นหลักพัน นี่ไม่ใช่วิธีแก้ปัญหาที่ถูกต้อง
Robert Slaney

12
คุณสมบัตินี้ไม่ได้มีไว้สำหรับการจัดตำแหน่งและจะเปลี่ยนลำดับของคำภายในด้วย Fe 14:00–15:00จะเปลี่ยนเป็น15:00–14:00ใน Firefox
Andy

3
นี่ไม่ย้อนลำดับตัวละครด้วยเหรอ?
evolutionxbox

7
ใช่คุณต้องรวมองค์ประกอบที่มีอยู่ในองค์ประกอบอื่นด้วยdirection: ltrกฎเพื่อย้อนกลับเอฟเฟกต์
ÓscarGómezAlcañiz

56

ฉันมีปัญหาเดียวกันและแก้ไขโดยใช้สอง 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

4
นี่เป็นคำตอบที่ยอดเยี่ยมเนื่องจาก direction rtl มีผลข้างเคียงทุกประเภท หากคุณต้องการให้แน่ใจว่า div ด้านในชิดซ้ายและจะถูกตัดไปทางซ้ายเท่านั้นหาก div เกินให้ตั้งค่า. router-div เป็น max-width: 100% และ display: inline-block ดูที่นี่
ลุค

2
ขอบคุณสำหรับ JSFiddle WebWanderer ฉันอัปเดตเพื่อใช้overflow: visibleเพื่อให้เนื้อหาสามารถรั่วไหลออกทางด้านซ้ายมือได้
joeytwiddle

8

คุณสามารถทำได้float:rightและมันจะล้นไปทางซ้าย แต่ในกรณีของฉันฉันต้องจัดกึ่งกลาง div ถ้าหน้าต่างใหญ่กว่าองค์ประกอบ แต่จะล้นไปทางซ้ายถ้าหน้าต่างเล็กกว่า มีความคิดเกี่ยวกับเรื่องนี้หรือไม่?

ฉันลองเล่นด้วยdirection:rtlแต่ดูเหมือนว่าจะไม่เปลี่ยนองค์ประกอบบล็อกมากเกินไป

ฉันคิดว่าคำตอบเดียวคือลอยให้ถูกต้องโดยให้ div ทางขวาของมันลอยไปทางขวาด้วยจากนั้นตั้งค่าความกว้างของ div ไปทางขวาให้เหลือครึ่งหนึ่งของพื้นที่หน้าต่างที่เหลือด้วย jquery


ตกลง. ลอยพาเรนต์ไปทางขวาและตรวจสอบให้แน่ใจว่าไม่มีการแทรกแซงคอนเทนเนอร์ที่ล้นถูกตั้งค่าเป็นซ่อน
Lisa

8

ทำได้อย่างง่ายดาย<span>ตัวเลขและตำแหน่งของช่วงสัมบูรณ์ไปทางขวาภายในองค์ประกอบที่ซ่อนส่วนเกินไว้

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

:)

rgrds เจค


5

สิ่งนี้ได้ผลเหมือนมีเสน่ห์:

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

0

แก้ไขมาร์กอัป HTML และเพิ่มจาวาสคริปต์ในโซลูชัน 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;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.