с участием
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
«...» будет показано в конце строки, если переполнено. Однако это будет показано только в одной строке. Но я бы хотел, чтобы это было показано в несколько строк.
Это может выглядеть так:
+--------------------+
|abcde feg hij dkjd|
|dsji jdia js ajid s|
|jdis ajid dheu d ...|/*Here it's overflowed, so "..." is shown. */
+--------------------+
Ответы:
Есть также несколько плагинов jquery, которые решают эту проблему, но многие не обрабатывают несколько строк текста. Следующие работы:
Там также некоторые тесты на соответствие .
источник
Я взломал, пока мне не удалось достичь чего-то близкого к этому. Это идет с несколькими оговорками:
Следует также отметить, что текст будет разбит на границе слова, а не на границе символа. Это было преднамеренно (поскольку я считаю, что это лучше для более длинных текстов), но поскольку это отличается от того
text-overflow: ellipsis
, что делает, я подумал, что должен упомянуть об этом.Если вы можете жить с этими предостережениями, HTML выглядит следующим образом:
И это соответствующий CSS, на примере блока шириной 150 пикселей с тремя строками текста на белом фоне. Предполагается, что у вас есть сброс CSS или аналогичный, который устанавливает поля и отступы в ноль, где это необходимо.
Результат выглядит так:
Чтобы прояснить, как это работает, вот то же изображение, за исключением того, что
.hidedots1
выделено красным и.hidedots2
голубым. Это прямоугольники, которые скрывают многоточие, когда нет невидимого текста:Протестировано в IE9, IE8 (эмулируется), Chrome, Firefox, Safari и Opera. Не работает в IE7.
источник
your text
оборачивают<p>
тег (как они должны быть), то вы можете использовать.ellipsify p:before
и.ellipsify p:after
тогда, конечно, нужны код для многоточия, а также, возможно , потребуется , поскольку они не могут работать для пустых элементов..ellipsify p:before{content:"\2026";}
\2026
content:" ";
+1
.Вот недавняя статья css-tricks, в которой это обсуждается.
Некоторые из решений в вышеупомянутой статье (которые не упомянуты здесь)
1)
-webkit-line-clamp
и 2) Поместите абсолютно позиционированный элемент внизу справа с затуханиемОба метода предполагают следующую разметку:
с CSS
1) -webkit-line-зажим
FIDDLE зажима линии (.. максимум для 3 линий)
2) исчезают
Исчезать FIDDLE
Решение № 3 - комбинация с использованием @supports
Мы можем использовать @supports для применения линейного зажима webkit в браузерах webkit и применения затухания в других браузерах.
@supports line-зажим с затухающей резервной скрипкой
CSS
источник
Ссылка ниже предоставляет чистое HTML / CSS решение этой проблемы.
Поддержка браузера - как указано в статье:
http://www.mobify.com/dev/multiline-ellipsis-in-pure-css
CSS:
HTML:
скрипку
(изменить размер окна браузера для тестирования)
источник
Chrome for Mac Version 48.0.2564.116
После просмотра спецификации W3 для переполнения текста , я не думаю, что это возможно, используя только CSS. Ellipsis - это новое свойство, поэтому оно, вероятно, пока не получило большого использования или обратной связи.
Однако этот парень, похоже, задал похожий (или идентичный) вопрос, и кто-то смог придумать хорошее решение jQuery. Вы можете продемонстрировать решение здесь: http://jsfiddle.net/MPkSF/
Если javascript не вариант, я думаю, вам не повезло ...
источник
Просто хочу добавить к этому вопросу ради полноты.
источник
-o-ellipsis-lastline
возможно, были удалены, когда Opera переключилась на WebKit. Оставив пулю в исторических целях.Отличный вопрос ... Хотелось бы, чтобы был ответ, но это самое близкое, что вы можете получить с помощью CSS в наши дни. Нет многоточия, но все еще довольно удобно.
источник
Я нашел это решение CSS (Scss), которое работает довольно хорошо. В браузерах webkit он показывает многоточие, а в других браузерах просто обрезает текст. Что хорошо для моего предполагаемого использования.
Пример создателя: http://codepen.io/martinwolf/pen/qlFdp
источник
-webkit-line-clamp
поддержка браузера caniuse.com/#search=-webkit-line-clampВот самое близкое решение, которое я мог получить, используя только CSS.
HTML
CSS
Рабочая скрипка ( измените размер окна, чтобы проверить )
Ссылка на мой блог для объяснения
Обновленная скрипка
Я надеюсь, что теперь у какого-нибудь специалиста по CSS есть идея, как сделать его идеальным. :)
источник
div::before
вместо этогоspan
? :)Здесь много ответов, но мне нужен был такой:
Предостережение заключается в том, что он не обеспечивает многоточие для браузеров, которые не поддерживают
-webkit-line-clamp
правило (в настоящее время IE, Edge, Firefox), но он использует градиент для затухания текста.Вы можете увидеть его в действии в этом CodePen, а также увидеть версию Javascript здесь (без jQuery).
источник
Немного опоздал на эту вечеринку, но я придумал, как мне кажется, уникальное решение. Вместо того, чтобы пытаться вставить свой собственный многоточие с помощью css-трюка или js, я подумал, что попробую перекатиться с ограничением на одну строку. Поэтому я дублирую текст для каждой «строки» и просто использую отрицательный текстовый отступ, чтобы убедиться, что одна строка начинается там, где заканчивается последняя. FIDDLE
CSS:
HTML:
Больше подробностей в скрипке. Существует проблема с перекомпоновкой браузера, для которой я использую перерисовку JS, и поэтому проверяйте ее, но это основная концепция. Любые мысли / предложения очень ценятся.
источник
спасибо @balpha и @Kevin, я объединяю два метода вместе.
в этом методе нет необходимости
Вы можете использовать
background-image
без градиента, чтобы скрыть точки.innerHTML
из.ellipsis-placeholder
не является необходимым, я использую ,.ellipsis-placeholder
чтобы сохранить одинаковую ширину и высоту с.ellipsis-more
. Вы могли бы использоватьdisplay: inline-block
вместо этого.jsfiddler
источник
Решение Javascript будет лучше
is-ellipsis
класс, если размер окна или изменение элементаgetRowRects
Element.getClientRects()
работает как этокаждый ряд в одной и той же строке имеет одинаковое
top
значение, поэтому найдите значения с различнымtop
значением, например такпоплавок
...more
как это
определить изменение размера окна или элемента
как это
источник
увидеть больше нажмите здесь
источник
основанный на чистом методе css -webkit-line-зажим:
источник
Я нашел трюк с JavaScript, но вы должны использовать длину строки. Допустим, вы хотите 3 строки шириной 250 пикселей, вы можете рассчитать длину на строку, т.е.
источник