Если окно браузера по ширине становится меньше заданной минимальной ширины элемента, то ширина элемента остается неизменной, а в окне появляется горизонтальная полоса прокрутки.
Значение ширины элемента будет вычисляться в зависимости от установленных значений свойств width, max-width и min-width.
Если значение ширины (width) меньше значения min-width, то ширина элемента принимается равной min-width.
В качестве значений принимаются пиксели (px), проценты (%) и другие единицы измерения, принятые в CSS. Отрицательные значения не допускаются.
auto Минимальная ширина для flex-элементов по умолчанию, предоставляет более разумное значение по умолчанию, чем
0 для других способов разметки.
max-content Внутренняя предпочтительная ширина.
min-content Внутренняя минимальная ширина.
fill-available Ширина родительского блока минус горизонтальные margin, border, и padding. (Обратите внимание, что некоторые браузеры реализуют устаревшее имя для этого ключевого слова available.)
fit-content Определяет как min(max-content, max(min-content, fill-available)).
Значение по-умолчанию:
min-width: auto;
Применяется ко всем элементам, кроме строчных и таблиц
Спецификации
CSS Intrinsic & Extrinsic Sizing Module Level 3
CSS Level 2 (Revision 1)
Поддержка браузерами
Can I Use minmaxwh? Data on support for the minmaxwh feature across the major browsers from caniuse.com.
Описание и примеры
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>min-width</title>
<style>
.container {
min-width: 420px; /* Минимальная ширина контейнера */
}
.col1 {
background-color: #fc0; /* Цвет фона колонки */
padding: 5px; /* Поля вокруг текста */
float: left; /* Обтекание по правому краю */
width: 150px; /* Ширина левой колонки */
}
.col2 {
background-color: #c0c0c0; /* Цвет фона колонки */
padding: 5px; /* Поля вокруг текста */
width: 250px; /* Ширина правой колонки */
float: left; /* Обтекание по правому краю */
}
</style>
</head>
<body>
<div>
<div>Колонка 1</div>
<div>Колонка 2</div>
</div>
</body>
</html>
Подстройка html элементов под ширину контента
Контент при верстке всегда помещается в элементы-контейнеры, и затем они стилизуются. В некоторых случаях необходимо определить размеры контейнера для контента, не задавая принудительно ему значение. Существует свойство min-content – это одно из встроенных свойств CSS, которые верстальщики используют для создания content-first дизайна. В этой статье рассмотрим CSS свойство max-content, позволяющее задавать неразрывные области.
Использование свойства max-content для обертки групп изображений
К примеру, у нас есть набор изображений:
Тут все портит пустое пространство после последнего изображения.
Конечно можно использовать решение для адаптивных изображений, чтобы полностью заполнить эту область. Или вообще использовать другой подход – уменьшать размер области до тех пор, пока изображения не впишутся в эту область. Для этого нужно просуммировать ширину всех изображений и сделать ширину контейнера равную этой сумме. На самом деле, это довольно кропотливая работа и в случае изменения размера изображений придется все делать по новой. Есть путь проще – воспользоваться свойством max-content (обратите внимание, что свойство прописывается с вендорными свойствами):
Это куда более лучший результат. В качестве альтернативы можно использовать другие свойства – display: inline-block, display: table-cell или float, но все они имеют некоторые ограничения и зависят от того как, на странице располагается контент. width:max-content влияет только на ширину элемента и размещает,помещенные в него элементы, в одну строку.
Использование max-content для контроля заголовка
Хороший способ охарактеризовать min-content и max-content – это то, что в min-content текст будет заполняться пока не «упрется» в какой-то объект (н-р, изображение), в то время как max-content никогда этого не сделает:
В результате текст под картинкой будет приоритетным, заполняя всегда одну строку, т.е. текст является неделимым. При этом надо быть осторожным, т.к. блокируется отзывчивость элементов.
Использование max-content в отзывчивом дизайне
Применив немного сообразительности, и мы сможем использовать max-content в отзывчивом дизайне:
В этом примере мы делаем элемент <figure> равным 33% от ширины контейнера, но не больше длины текста.
Поддержка и особенности
max-content является частью CSS и это свойство было внедрено еще в Firefox4, но не стало популярным. Одной из причин является то, что это свойство требует прописывания префиксов:
Также еще одним весомым фактором является поддержка Internet Explorer. Это свойство не было включено даже в браузер Internet Explorer 11. Также не поддерживает это свойство Android, поэтому для браузеров IE и Android необходимо отдельно использовать другие способы (display: inline-block, display: table-cell или float), чтобы достичь подобного эффекта.
Перевод статьи
Понимание min-content, max-content и fit-content в CSS
Понимание свойств размера CSS необходимо разработчикам, которым нужна гибкость для надлежащего представления содержимого веб-страницы.
В CSS мы определяем размер элемента, используя длину ( px , em ), процентное соотношение и значения ключевого слова. Хотя типы длины и процентного значения часто используются для макетов веб-страниц, они не всегда идеально подходят.
В некоторых случаях мы используем типы значений ключевых слов, в том числе fit-content , min-content и max-content .
В этом руководстве мы рассмотрим значения этих ключевых слов, их различия и то, как их можно применить к реальному проекту.
Прежде чем мы продолжим, убедитесь, что у вас есть базовые знания CSS.
Внутренний и внешний размер
Рассмотрим элемент div , содержащий содержимое с фиксированной шириной и высотой из 200px :
<дел>
nemo suscipitarchitectodeserunt vero, eveniet soluta deleniti alias dolor
illum presentium ipsa минус
Здесь мы дали div границу, чтобы увидеть степень размера.
Когда мы изменяем естественный размер элемента, применяя к нему определенное значение, как показано на изображении выше, мы называем этот размер внешним.
С другой стороны, когда размер содержимого определяет размер элемента, мы называем это внутренним или естественным размером.
Ограничивая размер блока определенным размером, мы сталкиваемся с переполнением контента, обратной стороной внешнего размера.
Тем не менее, мы можем исправить нежелательное поведение, чтобы улучшить макет, определив внутренний размер элемента из содержимого с помощью значений ключевых слов.
Значение ключевого слова
min-content
Согласно спецификациям W3C, min-content — это наименьший размер блока, который может принять блок без переполнения его содержимого.
Для горизонтального содержимого min-content использует длину самого широкого бита содержимого в поле элемента и автоматически устанавливает это значение длины в качестве ширины поля.
Более 200 000 разработчиков используют LogRocket для улучшения цифрового взаимодействия
Подробнее →
Контент в этом случае включает текст и активы, такие как изображения и видео.
Если мы вернемся к приведенному выше примеру с блоком, мы можем применить min-content к элементу блока следующим образом:
.s_2 {
/* ... */
ширина: мин-контент;
/* ... */
}
И у нас должна получиться вот такая раскладка:
Здесь с min-content самое длинное слово в содержимом определяет размер блока; это внутренняя минимальная ширина коробки.
Практические примеры значения ключевого слова
min-content
Чтобы реализовать ключевое слово min-content в реальном проекте, давайте рассмотрим следующие варианты использования.
Добавление подписей к изображениям
В случае, когда мы хотим пометить изображение подписью, которая соответствует ширине изображения, мы можем использовать
min-content для беспрепятственного достижения желаемого результата.
Давайте посмотрим на следующий код:
<рисунок>
<изображение
src="https://upload.wikimedia.org/wikipedia/commons/1/1b/Square_200x200.png"
alt="образец"
/>
Lorem ipsum dolor sit amet consectetur adipisicing elit
рисунок>
Это дает элементу фигура границу, чтобы увидеть размер размера.
Поскольку фигура является блочным элементом, ее ширина естественным образом занимает элемент-контейнер.
При назначении ширины из min-content элементу figure его размер определяется самым широким битом содержимого. В этом случае самый широкий бит — это изображение:
цифра {
/* ... */
ширина: мин-контент;
}
Это отображает следующий вывод с изображением, определяющим ширину:
Размерная сетка и элементы flexbox
min-content также является допустимым значением для свойств сетки и гибкого размера.
В CSS свойство flex-basis системы flexbox устанавливает размер блока содержимого. Это делает ключевое слово min-content идеальным значением для автоматического получения внутреннего минимального размера блока.
В данном случае мы используем flex-basis: min-content .
Аналогичным образом, в системе сетки мы можем назначить ключевое слово min-content свойствам grid-template-rows или grid-template-columns , чтобы получить внутренний минимальный размер блока.
Рассмотрим следующий код:
<дел>
<заголовок>
заголовок>
<дел>
<дел>
Обратите внимание, что мы удалили содержимое элемента для краткости.
Давайте преобразуем структуру в сетку и применим ключевое слово min-content :
При этом мы получаем внутреннее минимальное значение высоты содержимого, не вызывая переполнения.
Если мы не применим min-content , мы получим другое поведение. Чтобы визуализировать это поведение, мы можем временно удалить grid-template-rows и примените фиксированную высоту к заголовку :
При этом мы больше не получаем естественный размер контента. В этом случае блоки элементов могут быть слишком большими для их содержимого, что приведет к переполнению блоков содержимым.
Значение ключевого слова
max-content
Согласно спецификациям W3C, max-content представляет идеальный размер блока по заданной оси при неограниченном доступном пространстве.
Другими словами, max-content представляет собой размер, который должен содержать блок, чтобы вместить все его содержимое без обертывания или выхода за пределы блока.
При этом давайте применим max-content к размеру элемента:
<дел>
Lorem ipsum dolor, sit amet consectetur adipisicing elit.
Lorem ipsum dolor, sit amet consectetur adipisicing elit.
При рендеринге мы получаем следующий вывод:
Здесь первый элемент box принимает значение ширины по умолчанию auto , таким образом вмещая столько места, сколько позволяет контейнер. Но при применении значения max-content к тому же блоку мы получаем точный размер содержимого блока.
Значение ключевого слова max-content идеально подходит в ситуациях, когда нам нужна максимальная ширина содержимого для определения размера окна.
Практический пример ключевого слова
max-content value
Рассмотрим структуру макета сетки, в которой мы применяем max-content к столбцам сетки:
Это отображает столбец с max-content значение, принимающее размер содержимого, а столбец с единицей fr занимает оставшееся доступное пространство.
Нежелательный эффект
max-content
max-content , как мы узнали, довольно хорошо работает для бесконечного доступного пространства, где элемент box может содержать все свое содержимое без переноса и переполнения родительского контейнера.
Однако в случае, когда родительский или родовой элемент не может вместить размер блока, блок имеет тенденцию к переполнению:
<дел>
Lorem ipsum dolor, sit amet consectetur adipisicing elit.
При использовании этого кода внутренняя максимальная ширина блока превышает ширину контейнера, что приводит к переполнению.
В этой ситуации мы должны настроить содержимое коробки так, чтобы оно соответствовало доступному пространству контейнера. Вот где подходит ключевое слово .
Значение ключевого слова
fit-content
В зависимости от размера элемента контейнера при применении fit-content к элементу блока внутри контейнера блок использует либо размер max-content , размер min-content , либо доступный контейнер как его идеальный размер.
При неограниченном доступном пространстве max-content определяет идеальный размер коробки. Однако, когда окно просмотра уже, доступное пространство становится размером с блок, чтобы предотвратить переполнение, пока блок не использует мин-контент .
Если мы вернемся к нашему последнему примеру, применив fit-content к элементу box, мы получим следующее:
Обратите внимание, что мы должны использовать префикс поставщика -moz- , чтобы использовать это значение ключевого слова в Mozilla Firefox.
Как видно из приведенного ниже GIF-файла, поле использует доступное пространство, но никогда не расширяется за пределы max-content , а когда область просмотра уже, поле никогда не сжимается за пределы мин-контент .
Функция
fit-content()
Спецификации W3C также отмечают функцию fit-content() , позволяющую разработчикам определять максимально допустимую ширину для размера элемента. Эта функция CSS часто измеряет столбцы и строки сетки, используя grid-template-columns и grid-template-rows соответственно.
Использование fit-content() принимает процентов или длину единиц в качестве аргумента:
fit-content(процент | длина)
Подобно ключевому слову fit-content , при назначении значения этой функции для определения размера в сетке используется указанный аргумент в качестве максимально допустимого размера блока, при этом гарантируется, что блок никогда не выходит за пределы max-content .
Давайте рассмотрим структуру макета сетки и применим fit-content() к столбцу сетки:
<дел>
Lorem ipsum dolor
<дел>
Lorem ipsum dolor, сидеть consectetur adipisicing elit.!
Аргумент, переданный функции fit-content() , различает две функции.
В первом столбце макета сетки мы передали 200px в качестве аргумента, следовательно, столбец имеет максимально допустимую ширину 200px , а второй столбец имеет максимально допустимую ширину 250px . Третий столбец занимает оставшееся место в контейнере, поскольку ему присвоено значение auto .
Блоки, размеры которых определяются с помощью fit-content() , никогда не расширяются за пределы указанной ширины, а также никогда не выходят за пределы max-content . Но когда область просмотра уже, поле может уменьшиться, чтобы соответствовать содержимому.
Заключение
Благодаря встроенным значениям ключевых слов у нас есть возможность представить содержимое страницы наиболее подходящим образом. В этом уроке мы рассмотрели, как использовать min-content , max-content и fit-content значения ключевых слов с практическими примерами, чтобы вы могли начать использовать их в своих проектах.
Если вам нравится это руководство, обязательно поделитесь им в Интернете. И, если у вас есть вопросы или комментарии, пожалуйста, поделитесь своими мыслями в разделе комментариев.
Ваш интерфейс загружает ЦП ваших пользователей?
Поскольку веб-интерфейсы становятся все более сложными, ресурсоемкие функции требуют от браузера все большего и большего. Если вы заинтересованы в мониторинге и отслеживании использования ЦП на стороне клиента, использования памяти и т. д. для всех ваших пользователей в рабочей среде, попробуйте LogRocket.https://logrocket.com/signup/
LogRocket похож на цифровой видеорегистратор для веб-приложений и мобильных приложений, который записывает все, что происходит в вашем веб-приложении, мобильном приложении или на веб-сайте. Вместо того, чтобы гадать, почему возникают проблемы, вы можете агрегировать и составлять отчеты по ключевым показателям производительности внешнего интерфейса, воспроизводить сеансы пользователей вместе с состоянием приложения, регистрировать сетевые запросы и автоматически отображать все ошибки.
css — Установите минимальную ширину в ширину содержимого
спросил
Изменено
4 года, 10 месяцев назад
Просмотрено
14 тысяч раз
У меня есть div с фоном, который содержит таблицу. Я хочу, чтобы div имел ширину 100%, за исключением случаев, когда он уже, чем длина таблицы. Я могу сделать что-то вроде этого:
Это отлично подходит для таблицы шириной 900 пикселей, но если она уже, у меня будут нежелательные полосы прокрутки, а если она шире, у меня будет недоступный контент. Очевидно, что это можно тривиально решить с помощью JavaScript, но я хочу знать, существует ли решение только для CSS, чтобы мое приложение не было таким тяжелым для JS.
Посмотреть, что происходит, можно здесь. Я хочу, чтобы зеленый фон переполнял область просмотра, когда это делает текст в таблице.
css
отзывчивый
11
Если я правильно понимаю вашу проблему, это должно помочь:
.my-div {
/*ширина:100%;*/
высота: 400 пикселей;
цвет фона:#bada55;
отображение: встроенный блок; // это ключ
}
Ваш пример изменен здесь: http://jsfiddle. net/nvLnodLh/
my dataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapppppppppppppppp
таблица>
дел>
Если вы не хотите, чтобы ваш контейнер div рос больше, чем область просмотра, просто установите фон на столе.
my dataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapppppppppppppppp
my dataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapppppppppppppppp
my dataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapppppppppppppppp
таблица>
дел>
Существует черновик для CSS внутреннего и внешнего модуля определения размера уровня 3
это добавляет ширину : fit-content , что делает именно то, что вы хотите.