AngelLeo
@AngelLeo
Вечный поиск знаний!

Как адаптировать авторазмер шрифта под контейнер?

Доброго времени суток, уважаемые форумчане.
Нужна помощь в адаприровании текста.
Есть код:
while( $('.container').children('div').height() > $('.container').height() ) {
          $('.container').children('div').css('font-size', (parseInt($('.container').children('div').css('font-size')) - 1) + "px" );
      }

Для одного контейнера с фиксированным размером div:
<div class="container">
      <div>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.<br>
      </div>
    </div>


.container {
        width: calc(300px - 10px);
        height: calc(100px - 10px);
        border: 1px solid black;
        overflow: hidden;
        font-size: 1em;
        display: flex;
        align-items: center;
        text-align: center;
        padding: 5px;
        margin: 5px;
      }

Работает идеально, шрифт автоматически меняется в зависимости от числа символов подстраиваясь под размер блока.
Проблема в том, что число контейнеров не фиксировано, как всем последующим контейнерам, подгонять шрифт независимо от размера шрифта первого контейнера
<div class="container">
      <div>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.<br>
      </div>
    </div>

    <div class="container">
      <div>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. <br>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.<br>
      </div>
    </div>

    <div class="container">
      <div>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.<br>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.<br>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.<br>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.<br>
      </div>
    </div>

Получается первый контейнер подстраивается под размер, остальные наследуют стиль первого контейнера.
Задавать каждому блоку свой id или class не вариант, прописывать каждому свои стили. При большом числе контейнеров, будет бардак.
Заранее спасибо.
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
AlexDingo
@AlexDingo
Frontend
1. Собрать все контейнеры в массив: var containers = document.querySelectorAll('.container');
2. Пройти циклом по массиву и задать каждому ваше условие:
for(var i = 0; i < containers.length; i++) {
// Здесь ваш код для каждого containers[i], т. е. $('.container'), это теперь containers[i]
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы