Уменьшение размера текста относительно его количества — как действовать?
Спасибо дизайнерам за такую удачу заниматься полной ерундой.
Задача. Есть блок динамичного текста (он может быть разного размера). Сам блок имеет фиксированную высоту.
Текст может не вмешаться - проблемес.
Я решил, что надо регулировать размер текста, если он не влезает по высоте в родителя.
Как действовать? Как мыслить?
Что-то ума не приложу: сравнивать высоту родителя и текста и, если высота текста больше - уменьшать его размер на единицу, пока высота не станет меньше или равна?
Денис Букреев: в соседнем треде девушка тоже жаловалась что клиент какую-то херню просит, не нравится ему что меню на две строки растягивается при -30% зуме. Вроде закончилось тем, что она ему объяснила маразматичность таких требований. Мне кажется вам тоже стоит попытаться вашего дизайнера уговорить потратить хоть немного времени на изобретение какого-нибудь дизайнерского решения.
Погодите, вы говорите у вас блок фиксированного размера, а в нем должен быть текст? Если так, то это ошибка дизайна, тк при статичных размерах блока единственным решением может быть изменение размера шрифта или текста. А это неприемлимо с точки зрения дизайна. Разве нет?
А если заюзать text-overflow: ellipsis? А если человек хочет до конца прочитать, то по тыку убирать это свойство и контейнер меняет свою высоту в зависимости от текста. Типо как в вк "Читать далее".
Можно попробовать использовать transform: scale().
1. Узнавать через js высоты контейнера и блока текста. Текст пока с прокруткой.
2. Высчитывать через пропорцию коэф. уменьшения, чтобы выровнять высоту блока текста и контейнера.
3. Применять к блоку с текстом transform: scale() с вычисленным коэффициентом. Тогда видимая ширина блока текста внутри контейнера уменьшится, появятся margins справа и слева.
4. На тот же коэффициент увеличить ширину блока текста. Тогда текст начнет занимать меньше строк и под текстом появится пустое пространство.
5. Похимичить с формулами, чтобы отступ снизу был минимальным.
Может этот вариант натолкнет вас на решение. По крайней мере у него фиксированное количество итераций.