Как динамически изменять высоту текстового поля на основе предопределенного текста, но переменной ширины страницы

#javascript #jquery #.net #asp.net

#javascript #jquery #.net #asp.net

Вопрос:

Я просматривал часть своего старого кода, и у меня есть метод, который статически изменяет высоту элемента управления текстовым полем во время выполнения на основе ширины экрана клиента. Итак, были жестко заданные значения, если разрешение экрана, скажем, «1280×800», то высота текстового поля будет равна 475px. Хорошо, я понял… ПЛОХО, что несколько лет назад это было почти нормально с меньшим количеством разрешений экрана и ЭЛТ-мониторов, но не сейчас по ряду причин.

Я стал намного лучше работать с JavaScript и немного лучше с jQuery и ищу решение, которое может изменять размер высоты текстового поля, содержащего некоторый текст из базы данных, на основе общей ширины содержащего DIV, размер которого равен 100% от ширины экрана клиента. Это означает, что более широким экранам требуется меньшая высота, а менее широким экранам требуется большая высота.

Я хочу делать это динамически, если это возможно. Мое последнее средство — исправить ширину содержащего элемента управления, которая должна определять фиксированную высоту, но я бы предпочел, чтобы текстовый элемент управления занимал все 100% страницы.

Приветствуются любые предложения. Спасибо!

Ответ №1:

Это звучит как эквивалент извлечения метрик текста перед отображением его на дисплее. Я могу придумать способы, которые выполняются в Win Forms, но в браузере… Я мог думать только о представлении текста в div эквивалентного размера (с учетом заполнения в текстовом поле) и захвате отображаемого размера, удалении div (вы могли бы сделать это незаметно по мере загрузки страницы) и применении результатов к вашему текстовому полю.

Комментарии:

1. На самом деле это не совершенно абсурдный способ сделать это, особенно если все на стороне клиента. Я мог бы сделать это с нуля, но вы когда-нибудь видели пример? Получение показателей из скрытого рендеринга для создания конечного продукта отлично работает для меня. Я надеялся, что это было реализовано в каком-нибудь методе jQuery, но, возможно, нет.

2. Действительно, не полностью абсурдно, но близко 😉 Это практично. Я никогда не видел, чтобы это делалось, честно говоря, я думал о некоторых трюках, которые использует jQuery для определения возможностей браузера, и оказалось, что вы можете получить высоту / ширину div из браузера, который даст вам размер текста. Помимо этого, это теоретически … но подумайте о престижности, когда вы заставите это работать и превратите в плагин jQuery 😉

3. В итоге я выбрал простой способ, установив статическую ширину 600 пикселей, и мне нужно знать только пару разных высот в зависимости от установленной ширины. Я подумал о других сайтах, у которых есть «Лицензионные соглашения» и т.д., И Они обычно используют текстовое поле фиксированной ширины для отображения. В любом случае выглядит лучше.