Підстроюємо html контейнери під ширину контенту

До цього я розповідав про min-content, одне із значущих ключових слів в CSS, яке дизайнери можуть використовувати для створення веб-дизайнів, що приділяють першочергову увагу контенту. У цій статті я розгляну протилежне ключове слово: max-content.

Використовуємо max-content, щоб підлаштувати розміри групи зображень

Припустимо, що у нас є кілька мініатюр зображень, розташованих в елементі header:

Це буде виглядати приблизно так:

Все б нічого, але як бути з порожнім простором в кінці контейнера?

Зазвичай у випадку з адаптивними зображеннями необхідно збільшити масштаб контенту так, щоб він повністю заповнив контейнер. Але що якщо б ми змогли використовувати протилежний підхід: зменшити розмір контейнера до тих пір, поки він не буде відповідати початкових розмірів зображень? Ми можемо домогтися потрібного результату шляхом збільшення розміру кожного зображення, поки в сумі загальний розмір зображень не буде відповідати фіксованим розміром елемента header, але це буде повільний, виснажливий і трудноізменяемий спосіб (до того ж він не буде адаптивним).

Замість цього ми будемо використовувати max-content:

І після додавання Вендорний префіксів результат буде таким:

Цей результат набагато краще. Інші стандартні альтернативи: застосування до контейнера властивостей display: inline-block, display: table-cell або властивості float. Але використання даних способів тягне серйозні наслідки, що впливають на розташування решти контенту на сторінці; width: max-content впливає тільки на ширину самого елемента.

Важливо відзначити, що в результаті застосування width: max-content можуть «лопнути» контейнери, що використовують традиційні засоби створення адаптивних зображень для контенту, оскільки штучно зменшені в масштабі зображення повернуться до своїх початкових розмірів. З попереднього прикладу я виключив зображення з медіа-запитами, коли вікно браузера звужується, хоча в майбутньому для даного рішення буде використовуватися атрибут srcset.

Мабуть, найлегший спосіб запам'ятати, що робить max-content, - це запам'ятати, що він відповідає на питання «наскільки маленьким я можу зробити контейнер без необхідності в перенесенні рядків?» І це, до речі, добре продемонстровано в наступному прикладі.

Використання max-content для управління текстом підпису

Можна легко розрізнити min-content і max-content, тому перший з них буде охоче розбивати тест на кілька рядків, поки не зустріне щось «неподільне», таке як зображення, в той час як max-content ніколи так не зробить:

Підстроюємо html контейнери під ширину контенту

Результат цього видно на ілюстрації із застосуванням елемента figure. Як бачите, використовуючи max-content, текст завжди буде мати пріоритет, розташовуючись в один рядок. Звичайно, вам потрібно бути обережними, тому що це фіксує ширину елемента figure, яка буде прив'язана до ширини неподільного тексту підпису, і елемент стане неадаптівним. З іншого боку, max-content - це легкий спосіб повідомити: «завжди робити зображення з підписом такого ж розміру, як і сама підпис»:

Використовуємо адаптивне рішення для max-content

Проявивши трохи кмітливості, ми можемо використовувати max-content для адаптивних веб-дизайнів:

Це можна перекласти наступним чином: «нехай елементи figure займають 33% ширини контейнера, але ніколи не будуть ширше, ніж довжина тексту підпису».

Підтримка і особливості

Ключове слово max-content є частиною CSS і стало доступно майже з моменту випуску Firefox 4, але ще не отримало широкого застосування в веб-розробці. Однією з причин може бути той факт, що воно залишається одним з небагатьох CSS значень, які вимагають використання Вендорний префіксів:

Безумовно, іншим фактором є браузерна підтримка: браузеру IE ще необхідно наздогнати інші браузери в питанні вимірювання внутрішніх і зовнішніх розмірів. Хоча компанія Microsoft стверджує, що підтримка ключових слів знаходиться на розгляді, щоб бути включеною в версію IE 11. А поки для Internet Explorer і Android доведеться використовувати запасні варіанти, розглянуті вище, для досягнення потрібного результату.

Редакція: Команда webformyself.

Найсвіжіші новини IT і веб-розробки на нашому Telegram-каналі