Ограничить отображаемую длину строки на веб-странице

Я ищу метод (javascript, CSS, что угодно ???), который позволит мне контролировать количество отображаемой строки. Строка является результатом поиска (и поэтому изначально неизвестна). Подход с использованием простого подсчета символов тривиален, но неприемлем, поскольку он требует обработки пропорциональных шрифтов. Другими словами, если я хочу ограничиться 70 пикселями, то в приведенных ниже примерах показано различное количество символов (9 и 15), оба измерения одинаковы: -

Добро пожаловать M ...
Привет Иэн, если я ...

Если вы посмотрите на результаты поиска Yahoo, они могут ограничить длину строк заголовков и добавить многоточие в конце длинных строк, чтобы указать больше. (попробуйте site: loot.com беспроводные + клавиатура + и + мышь, чтобы увидеть, как Yahoo добивается этого)

Есть идеи?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
1
7 252
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Возможно, вам поможет свойство CSS overflow: hidden; в сочетании с width.

Спасибо - Отличное начало! style = 'переполнение: скрыто; ширина: 100 пикселей; height: 1.2em 'успешно обрабатывает ограничение длины (вам нужно добавить высоту, чтобы остановить перенос). Единственным недостатком является то, что я никак не могу придумать, было ли переполнение, поэтому я не знаю, добавлять ли многоточие.

GreybeardTheUnready 12.10.2008 16:34

вместо того, чтобы применять высоту - потому что все мы знаем, что это не весело ... попробуйте использовать свойство CSS white-space: nowrap. Это заставит все строки оставаться на одной строке: D

Roi 05.03.2012 01:51

Использование диапазона с фиксированной шириной, overflow-x: hidden и white-space: nowrap будет началом.

Получить эллипсис в кроссбраузерном сценарии будет сложно. IE имеет переполнение текста: elipsis, но это нестандартно. Это эмулируется с помощью -o-text-overflow в Opera. Однако в Mozilla этого нет. API-интерфейсы Yahoo Javascript справляются с этим.

Я думаю, вам нужно переполнение-x: hidden. Или просто выберите overflow: hidden на всякий случай.

eyelidlessness 12.10.2008 21:30

ой ты прав опечатка overflow-y не имеет смысла на промежутке, буду редактировать.

AnthonyWJones 16.10.2008 19:14

Yahoo делает это на стороне сервера, усечение и эллипсис ('...') возвращаются в HTML. Предположительно это делается по количеству символов, и если это не вариант для вас, то серверная часть отсутствует.

Помимо overflow: hidden, я не уверен, что CSS может вам здесь помочь. Вы можете измерить ширину содержащего элемента с помощью Javascript и обрезать текст на основе этого. Это можно было бы использовать вместе с overflow:hidden;, чтобы текстовые элементы не меняли размер внезапно, но вам, возможно, придется извлечь текст и добавить временный элемент на страницу где-нибудь для измерения. В зависимости от количества элементов, которые нужно усечь, это может работать не очень хорошо.

Другой немного хитрый вариант - измерить ширину элемента, содержащего букву «W», затем подсчитать количество символов и усечь, если (char_count * width_of_w) > desired_width.

Вы можете использовать text-wrap: none;, чтобы остановить перенос текста на новые строки, хотя это свойство CSS3, и последнее, что я проверял, поддерживалось только IE (представьте мой шок, когда я обнаружил это!).

Для кроссбраузерного решения на чистом CSS взгляните на прототип Hedger Wang text-overflow: ellipsis, здесь:

http://www.hedgerwow.com/360/dhtml/text_overflow/demo2.php

In CSS: .class-name{ width: 5em; white-space: nowrap; text-overflow: ellipsis; }

Hope it can help you.

Другие вопросы по теме