Tworzę responsywną stronę internetową dla szkoły, a moje pytanie brzmi:
Jak ustawić maksymalną długość znaków zdań (z CSS) na mojej stronie (np. 75 znaków), że gdy mam bardzo duży ekran, zdania nie będą przekraczać 75 znaków.
Próbowałem maksymalnej szerokości, ale to popsuło mój układ. Korzystam z Flexboksa i zapytań o media, aby reagować.
textarea
lubinput
istnieje dla nich maksymalna długość (maxlength="50"
jest to w HTML) właściwość lub będziesz musiał użyć Javascript. Myślę też, że źle to odczytałem, ustawienie szerokości spowoduje, że zdanie spadnie do następnego wiersza, gdy dotrze do końca. To jest zachowanie domyślne.Odpowiedzi:
Zawsze możesz użyć metody obcinania, ustawiając
max-width
i przepełnienie wellipsis
ten sposóbPrzykład: http://jsfiddle.net/3czeyznf/
W przypadku obcinania wielu linii spójrz na
flex
rozwiązanie. Przykład z obcięciem w 3 rzędach.Przykład: https://codepen.io/srekoble/pen/EgmyxV
źródło
Istnieje „wartość długości” CSS wynosząca
ch
.Z MDN
Może to przybliżać to, czego szukasz.
źródło
ch
urządzenie) wydaje się nie działać (zgodnie z oczekiwaniami) w Chrome 50, IE11 lub FF45 ?!height
aoverflow:hidden
. Elipsa mi się podobała, ale udało mi się ją uruchomić tylko wtedy, gdy ustawięwhite-space:no-wrap
. W moim przypadku tekst może się zawijać, po prostu nie może przekraczać określonego limitu znaków w kontenerze.white-space: nowrap;
Wypróbuj to w celu obcięcia znaków po ustawieniu go na maksymalną szerokość. W tym przypadku użyłem 75 kanałów
Aby obcinać multilinię, kliknij link.
Przykład: https://codepen.io/srekoble/pen/EgmyxV
Będziemy do tego używać css webkit. W skrócie WebKit to silnik renderujący przeglądarki HTML / CSS dla Safari / Chrome. Może to być specyficzne dla przeglądarki, ponieważ każda przeglądarka jest wspierana przez silnik renderujący do rysowania strony internetowej HTML / CSS.
źródło
max-width:100%;
opcji div otoki. Więc masz responsywne obcinanie.przykładowy kod:
źródło
W Chrome możesz ustawić liczbę linii wyświetlanych za pomocą „ -webkit-line-clamp ”:
Więc dla mnie jest to rozszerzenie, więc jest idealne, więcej informacji tutaj: https://medium.com/mofed/css-line-clamp-the-good-the-bad-and-the-straight-up -break-865413f16e5
źródło
Z CSS nie jest to możliwe, w tym celu będziesz musiał użyć Javascript. Chociaż możesz ustawić szerokość p na maksymalnie 30 znaków, a kolejne litery będą automatycznie zmniejszane, ale znowu nie będzie to tak dokładne i będzie się różnić, jeśli znaki będą pisane wielkimi literami.
źródło
HTML
jQuery
CSS
WYNIK
Jsfiddle
źródło
Czyste rozwiązanie CSS do obcinania znaków wieloliniowych
Miałem podobny problem i znalazłem to doskonałe rozwiązanie tylko dla css z Hackingui.com . Możesz przeczytać artykuł w celach informacyjnych, ale poniżej znajduje się główny kod.
Przetestowałem to i działa idealnie. Mam nadzieję, że ktoś uzna to za przydatne przed wyborem JS lub opcji po stronie serwera
źródło
Nowoczesna odpowiedź sieci CSS
Zobacz w pełni działający kod w CodePen . Biorąc pod uwagę następujący kod HTML:
Możesz użyć siatki CSS, aby utworzyć trzy kolumny i powiedzieć kontenerowi, aby wziął maksymalną szerokość 70 znaków dla środkowej kolumny, która zawiera nasz akapit.
Tak to wygląda (Checkout CodePen dla w pełni działającego przykładu):
Oto kolejny przykład, w którym możesz użyć minmax, aby ustawić zakres wartości. Na małych ekranach szerokość zostanie ustawiona na 50 znaków, a na dużych ekranach - na 70 znaków.
źródło
ch
na kolumnach. Śliczny.rrdOvr
. ;)Ten post dotyczy rozwiązania CSS, ale post jest dość stary, więc na wypadek, gdyby inni natknęli się na to i używali nowoczesnego frameworka JS, takiego jak Angular 4+, istnieje prosty sposób, aby to zrobić za pomocą Angular Pipes bez konieczności zadzieraj z CSS.
Prawdopodobnie istnieją również sposoby „React” lub „Vue”. Ma to na celu pokazanie, jak można to zrobić w ramach.
truncate-text.pipe.ts
app.component.html
źródło
Wypróbuj moje rozwiązanie na 2 różne sposoby.
źródło