Wiem, że możesz użyć kombinacji reguł CSS, aby tekst kończył się wielokropkiem (...), gdy nadejdzie czas przepełnienia (wyjścia poza granice rodzica).
Czy można (śmiało powiedzieć: nie) osiągnąć ten sam efekt, ale tekst zawija się w więcej niż jednym wierszu?
Oto demo .
div {
width: 300px;
height: 42px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
Jak widać, tekst kończy się wielokropkiem, gdy jest szerszy niż szerokość elementu div. Jednak nadal jest wystarczająco dużo miejsca, aby tekst zawinął się w drugą linię i kontynuował. Jest to przerywane przez white-space: nowrap
, które jest wymagane do działania elipsy.
Jakieś pomysły?
PS: brak rozwiązań JS, czysty CSS, jeśli to możliwe.
Odpowiedzi:
Nie jestem pewien, czy widzieliście TO , ale świetny CSS-Tricks.com Chrisa Coyiera zamieścił link do tego jakiś czas temu i jest to czyste rozwiązanie CSS, które spełnia dokładnie to, czego szukasz.
(Kliknij, aby wyświetlić na CodePen)
HTML:
CSS:
Oczywiście bycie czystym rozwiązaniem CSS oznacza, że jest również dość skomplikowane, ale działa czysto i elegancko. Zakładam, że Javascript nie wchodzi w rachubę, ponieważ jest to znacznie łatwiejsze do osiągnięcia (i prawdopodobnie bardziej degradowalne) z Javascriptem.
Jako dodatkowy bonus, dostępny jest plik zip do pobrania z całego procesu (jeśli chcesz to zrozumieć i wszystko), ale także plik mieszany SASS, dzięki czemu możesz go łatwo złożyć w swoim procesie.
Mam nadzieję że to pomoże!
http://www.mobify.com/blog/multiline-ellipsis-in-pure-css/
źródło
Proste właściwości CSS mogą załatwić sprawę. Poniżej przedstawiono trójwierszowy wielokropek.
źródło
Spójrz na tę czystą wersję css: http://codepen.io/martinwolf/pen/qlFdp
źródło
text-overflow
idisplay
zasady?CSS poniżej powinien załatwić sprawę.
Po drugiej linii tekst będzie zawierał ...
źródło
overflow:hidden
Użyj tego, jeśli powyższe nie działa
źródło
Moje rozwiązanie ponownie wykorzystuje rozwiązanie amcdnl, ale moje rozwiązanie zastępcze polega na użyciu wysokości dla kontenera tekstu:
źródło
-webkit-line-clamp
nie działa dla IE11, Edge lub Firefox.Bazując na odpowiedzi, którą zobaczyłem w stackoveflow, stworzyłem ten MNIEJSZY mixin ( użyj tego linku do wygenerowania kodu CSS ):
Stosowanie
źródło
Bardziej eleganckie wydaje się połączenie dwóch klas. Możesz opuścić
two-lines
zajęcia, jeśli tylko jeden wiersz wymaga:źródło
Ograniczenie do kilku linii będzie działać w prawie wszystkich przeglądarkach, ale wielokropek (3 kropki) nie będzie wyświetlany w przeglądarce Firefox i IE. Demo - http://jsfiddle.net/ahzo4b91/1/
źródło
Znalazłem kombinację zarówno zacisku liniowego, jak i wysokości linii: D
źródło
W mojej aplikacji kątowej następujący styl zadziałał, aby uzyskać wielokropek na przepełnieniu tekstu w drugiej linii :
Mam nadzieję, że to komuś pomoże.
źródło
Osoby pracujące w scss muszą dodać
!autoprefixer
na początku komentarza, aby został zachowany dla postów:Spotkałem się z tym problemem, dlatego zamieszczam go tutaj
Odniesienie
źródło
Możesz użyć efektu rozpuszczenia zamiast wielokropka, czystego CSS i wygląda bardziej profesjonalnie:
Tutaj założyłem, że twój kolor tła jest biały.
źródło
To totalny hack, ale działa:
http://jsfiddle.net/2wPNg/
Ma problemy ... może niezręcznie uciąć list i prawdopodobnie będzie miał dziwne wyniki w responsywnej witrynie.
źródło
Oto prosty skrypt do zarządzania wielokropkiem za pomocą jQuery. Sprawdza rzeczywistą wysokość elementu i tworzy ukryty oryginalny węzeł oraz węzeł obcięty. Kiedy użytkownik kliknie, przełącza się między dwiema wersjami.
Jedną z wielkich zalet jest to, że „wielokropek” znajduje się blisko ostatniego słowa, zgodnie z oczekiwaniami.
Jeśli używasz czystych rozwiązań CSS, trzy kropki pojawiają się jako odległe od ostatniego słowa.
źródło
Nie wiesz, jaki jest twój cel, ale czy chcesz, aby tekst znalazł się w drugiej linii?
Oto twój jsFiddle: http://jsfiddle.net/8kvWX/4/ właśnie usunął następujące:
Nie jestem pewien, czy tego właśnie szukasz, czy nie.
Pozdrowienia,
Mee
źródło