2010-10-11 11 views
7

Więc moje pytanie jest podobny do tego:Fade tekst zbyt długo wewnątrz elementu HTML

crop text too long inside div

Co nie chcę zrobić, to mieć twardą końcówkę do tekstu (odcięcie cokolwiek przepełnienia tekst) .

Pożądane wyjście nie będzie zawierać elips (...), ale "zniknie". Więc gdybym miał coś takiego:

<div class="text">This is the really long area of text that I want to chop</div> 

potem na gdziekolwiek ja decyduję, powiedzmy w połowie drogi w wa | n ... nt byłoby pół wyblakłe, a t byłaby niemal całkowicie zniknęły. Oczywiście pozycjonowanie jest losowe i może spaść na 3 lub 4 litery ...

Oto dopuszczalne rozwiązania w kolejności preferencji.

  1. Czy można ciąć tekst za pomocą css sam?
  2. Jeśli nie jest to możliwe, używając innego elementu w pliku div.text, czy mogę osiągnąć to, czego chcę (czy mogą zniknąć zmętnienia?).
  3. Zrób to z jQuery? (ugh ... nie preferowane)

Odpowiedz

7

Zakładając, że tło strony jest białe: Utwórz gif z przejściem od przezroczystości do bieli (od lewej do prawej). Nakładaj to po prawej stronie elementu div. Twój tekst będzie blednąć do białego.

Jest to podobne do tworzenia "cieni".

Edited by dodać:

mam odpowiedziałeś swoje elementy listy bezpośrednio.

  1. Nie, nie można zignorować tekstu za pomocą samego CSS, chyba że robisz to znak po znaku; ale to prawie niemożliwe do kontrolowania w różnych przeglądarkach i rozdzielczości ekranu.

  2. Opady nie znikają.

  3. Nie znam obiektu jQuery, który to robi, ale nie użyłem go zbyt wiele.

+1

Chyba powinienem określono rozwiązanie obrazu mniej. – Zach

+1

Zgadzam się z egruninem - myślę, że to najlepsza technika. Nie będzie to łatwe z jQuery, ponieważ będziesz musiał obliczyć długość każdej postaci i długość div, zanim będziesz mógł określić, które postacie są poza pewnym punktem. Poza tym, bez względu na to, jakiej techniki używasz dla div (czy to%, px lub em, czy jakiejkolwiek innej jednostki), możesz ustawić znacznik 'img' na' position: absolute; prawe: 0 pikseli; width: number% | px | em | etc'. Mam nadzieję że to pomoże. – ClarkeyBoy

7

Twoje rozwiązanie 2. jest rzeczywiście możliwe. Trzeba tylko użyć absolutnie pozycjonowanego elementu, który ma tło gradientu liniowego, od białego do przezroczystego.

Nie ma potrzeby tworzenia obrazu.

Można spojrzeć na http://css-tricks.com/text-fade-read-more/