Tràn sang trái thay vì phải


105

Tôi có một div với overflow:hidden, bên trong tôi hiển thị một số điện thoại khi người dùng nhập nó. Văn bản bên trong div được căn chỉnh sang phải và các ký tự đến được thêm vào phải khi văn bản phát triển sang trái.

Nhưng một khi văn bản đủ lớn không vừa với div, các ký tự cuối cùng của số sẽ tự động bị cắt và người dùng không thể nhìn thấy các ký tự mới mà họ nhập.

Những gì tôi muốn làm là cắt các ký tự bên trái, giống như div đang hiển thị ở ngoài cùng bên phải của nội dung và tràn sang bên trái. Làm cách nào để tạo hiệu ứng này?

tràn số điện thoại sang trái


Đối với bất kỳ ai đang cố gắng làm cho văn bản chạy từ trên xuống dưới và được căn phải, hãy xem stackoverflow.com/a/53576895/4418836
Jordan

Câu trả lời:


149

Bạn đã thử sử dụng như sau:

direction: rtl;

Để biết thêm thông tin, hãy xem
http://www.w3schools.com/cssref/pr_text_direction.asp


22
Cảnh báo: điều này không hoạt động đối với màn hình máy tính có các ký tự đặc biệt như / và *.
Tối đa

11
Nó cũng không hoạt động đối với các ngôn ngữ có định dạng số không phải của Hoa Kỳ, như "" cho dấu phân tách nghìn. Đây không phải là giải pháp chính xác
Robert Slaney

12
Thuộc tính này không dùng để căn chỉnh và nó cũng sẽ thay đổi thứ tự của các từ bên trong. Fe 14:00–15:00sẽ chuyển sang 15:00–14:00trong Firefox.
Andy

3
Điều này không đảo ngược thứ tự của các ký tự sao?
Evolutionxbox

7
Có, bạn cần bọc các phần tử được chứa trong một phần tử khác bằng direction: ltrquy tắc để đảo ngược hiệu ứng.
Óscar Gómez Alcañiz

56

Tôi đã gặp vấn đề tương tự và đã giải quyết nó bằng cách sử dụng hai div. Div bên ngoài thực hiện cắt ở bên trái và div bên trong thực hiện nổi ở bên phải.

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

Bạn sẽ có thể đặt bất kỳ nội dung nào bên trong div bên trong và làm tràn nó ở bên trái.


8
Tôi muốn thấy điều này hoạt động, vì vậy tôi đã tạo JSFiddle này để kiểm tra nó và nó hoạt động rất tốt! Câu trả lời chính xác! Cảm ơn!
WebWanderer

4
Đây là một câu trả lời tuyệt vời vì hướng dẫn rtl có tất cả các loại tác dụng phụ. Nếu bạn muốn đảm bảo div bên trong được căn trái và chỉ bị cắt ngắn ở bên trái nếu div bị vượt quá, hãy đặt .outer-div thành max-width: 100% và display: inline-block. Xem ở đây
Luke

2
Cảm ơn vì JSFiddle WebWanderer. Tôi đã cập nhật nó để sử dụng overflow: visiblenên nội dung có thể bị lọt ra ngoài bên tay trái .
joeytwiddle

8

Bạn có thể làm float:rightvà nó sẽ tràn sang trái, nhưng trong trường hợp của tôi, tôi cần căn giữa div nếu cửa sổ lớn hơn phần tử, nhưng tràn sang trái nếu cửa sổ nhỏ hơn. Bất kỳ suy nghĩ về điều đó?

Tôi đã thử chơi xung quanh direction:rtlnhưng điều đó dường như không thay đổi sự tràn các phần tử khối.

Tôi nghĩ câu trả lời duy nhất là thả nổi nó bên phải, với một div ở bên phải nó cũng nổi bên phải, sau đó đặt chiều rộng của div ở bên phải bằng một nửa không gian cửa sổ còn lại bằng jquery.


Đồng ý. Làm nổi phần cha sang bên phải và đảm bảo không có vùng chứa nào can thiệp có phần tràn được đặt thành ẩn.
Lisa

8

dễ dàng thực hiện, <span>các số và định vị khoảng tuyệt đối ở bên phải bên trong một phần tử có ẩn tràn.

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

:)

rgrds jake


5

Điều này hoạt động như một sự quyến rũ:

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

0

Đánh dấu HTML đã sửa đổi và thêm một số javascript vào giải pháp jsFiddle của 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;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.