Масштабирование шрифта в зависимости от ширины контейнера в Bootstrap

Интересно, как масштабировать блок текста (с помощью font-scaling) в Bootstrap Framework? Ширина колонок - главная трудность, потому что она плавная.

как масштабировать блок текста

1 ответ

Решение

Bootstrap использует CSS @media for Grid system [ ссылка ], поэтому вы можете использовать медиазапросы с измерениями Bootstrap для установки других свойств CSS. Посмотрите на скрипку и измените размер панели между js и окном дисплея, чтобы увидеть эффект изменения размера шрифта заголовка.

<div class="container">
  <h1 class="header">header</h1>
  <div class="row">
    <div class="colDiv col-sm-6 col-md-4 col-lg-3">
      <p>ColumnA</p>
    </div>
    <div class="colDiv col-sm-6 col-md-8 col-lg-9">
      <p>ColumnB</p>
    </div>
  </div>
</div>

РЕДАКТИРОВАТЬ:

Хорошо, поэтому я написал небольшую JS-функцию для этого. Вы устанавливаете шесть параметров (по порядку) для управления fontSize:

alignFont(getElement,defaultSize,defaultWidth,acceleration,min,max)
  • getElement - устанавливает для элемента размер шрифта, которым вы хотите манипулировать
  • defaultSize - размер шрифта по умолчанию (начальный)
  • defaultWidth - ширина окна, для которого установлен defaultSize шрифта
  • ускорение - 1 нормально, 2 - увеличивается в два раза быстрее, .5 - увеличивается медленнее
  • min - минимальный fontSize (размер шрифта не может быть меньше этого значения)
  • max - максимальный fontSize (размер шрифта не может быть больше этого значения)

И пример (изменить размер панели между полями js и display): FIDDLE

    var a = document.getElementById('flexibleHeaderA');
    var b = document.getElementById('flexibleHeaderB');
    var c = document.getElementById('flexibleHeaderC');
    var d = document.getElementById('flexibleHeaderD');
    var e = document.getElementById('flexibleHeaderE');

    var settingA = alignFont.bind(this, a, 24, 600, 1, 20, 30);
    var settingB = alignFont.bind(this, b, 24, 600, 1.5, 12, 60);
    var settingC = alignFont.bind(this, c, 30, 600, 1, 15, 35);
    var settingD = alignFont.bind(this, d, 22, 1000, .5, 12, 30);
    var settingE = alignFont.bind(this, e, 16, 80, 1, 12, 26);

    settingA();
    settingB();
    settingC();
    settingD();
    settingE();

    window.addEventListener('resize', function() {
      settingA();
      settingB();
      settingC();
      settingD();
      settingE();
    });


    function alignFont(getElement, defaultSize, defaultWidth, acceleration, min, max) {
      var cWidth = document.body.offsetWidth;
      var newSize = (Math.pow(cWidth / defaultWidth, acceleration)) * defaultSize;
      var limitSize = newSize >= max ? max : newSize <= min ? min : newSize;
      getElement.style.fontSize = limitSize + "px";
    }
h3 {
  border: dotted 1px #33aaff;
  margin: 10px;
  text-align: center;
}
<h3 id="flexibleHeaderA">Hello I'm flexible header</h3>
<h3 id="flexibleHeaderB">Hello I'm flexible header</h3>
<h3 id="flexibleHeaderC">Hello I'm flexible header</h3>
<h3 id="flexibleHeaderD">Hello I'm flexible header</h3>
<h3 id="flexibleHeaderE">Hello I'm flexible header</h3>

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