Свойство max-width | CSS справочник
CSS свойстваОпределение и применение
CSS свойство max-width устанавливает максимальную ширину элемента. Свойство применяется к блочным элементам.
Поддержка браузерами
CSS синтаксис:
max-width:"none | length | initial | inherit";
JavaScript синтаксис:
object.style.maxWidth = "100px"
Значения свойства
Значение | Описание |
---|---|
none | Максимальная ширина не предусмотрена. Это значение по умолчанию |
length | Определяет максимальную ширину (в единицах измерения CSS). |
% | Определяет максимальную ширину (в процентах). Ширина высчитывается в зависимости от ширины родительского элемента. |
initial | Устанавливает свойство в значение по умолчанию. |
inherit | Указывает, что значение наследуется от родительского элемента. |
Версия CSS
CSS2Наследуется
Нет.Анимируемое
Да.Пример использования
<!DOCTYPE html> <html> <head> <title>Минимальная и максимальная ширина элемента.</title> <style>Пример установки минимальной и максимальной ширины для элемента.CSS свойства.test { min-width : 100px; /* задаём минимальную ширину для блока */ background-color : khaki; /* устанавливаем цвет заднего фона для элемента */ } .test2 { min-width : 100px; /* задаём минимальную ширину для блока */ max-width : 200px; /* задаём максимальную ширину для блока */ background-color : orange; /* устанавливаем цвет заднего фона для элемента */ } </style> </head> <body> <div class = "test">Блок в котором установлена минимальная ширина 100px.</div><br> <div class = "test2">Блок в котором установлена минимальная ширина 100px и максимальная 200px..</div> </body> </html>
Медиавыражения в CSS — это не только max-width / Habr
Недавно мы опубликовали новый веб-сайт нашей компании Mabiloft с полностью переработанным чистым дизайном и множеством новых великолепных иллюстраций и анимаций.
После того, как наш дизайнер проделал потрясающую работу, продумав и нарисовав сайт, нам, разработчикам, было необходимо реализовать макет, сохранив его чистым и цельным для каждого устройства, от большого 2K экрана, на которых мы пишем код, до старого iPhone 4 с его 3.5-дюймовым дисплеем.
Несколько недель спустя веб-сайт был почти готов и я просматривал его, чтобы убедиться, что всё работает как нужно. Заметив, что макет главной страницы неправильно отображался на нашем iPad, я быстро изменил некоторые CSS-правила и исправил ошибку, но… это привело к проблемам отображения макета на всех всех ноутбуках с небольшим экраном
Разыскивая решение сложившейся проблемы, я обнаружил, что мог бы сделать оба макета идеальными, используя только CSS медиавыражения, не прибегая к использованию JavaScript.
Фактически, до этого я в основном использовал CSS медиавыражения, чтобы сделать макет отзывчивым, используя
Теперь я обнаружил, что CSS-медиавыражения – это не только max-width, а множество разных значений. И некоторые из них могут быть действительно полезны в повседневной жизни.
Итак, что же это за медиавыражения, о которых я говорю? Возможно, о некоторых вы уже слышали. Но я также выделил из них и несколько новых, применение которых может быть весьма полезным
Размер вьюпорт
Да, я говорю о width, height, min-width, min-height, max-width и max-height.
Нуждаются ли они в особом представлении? Я буду краток.
Эти медиа-функции используются для установки разных стилей для разных размеров экрана. Они очень полезны при разработке отзывчивой системы.
Поскольку функции width и height могут устанавливать стили только для точно заданного размера области видимости, более вероятно, что вы будете использовать префиксы max- и min-. Например, в следующем коде стили будут применяться, только если высота вьюпорт больше 320 пикселей.
/* Красный фон применится, только если высота вьюпорт больше 320 пикселей */
body {
background-color: #FFD23F; /* Желтый фон */
}
@media screen and (min-height: 320px) {
body {
background-color: #EE4266; /* Красный фон */
}
}
Но вы также можете смешивать эти функции для обработки диапазона размеров
/* Красный фон применится, если ширина области видимости от 320 до 600 пикселей */
body {
background-color: #FFD23F; /* Желтый фон */
}
@media screen and (min-width: 320px) and (max-width: 600px) {
body {
background-color: #EE4266; /* Красный фон */
}
}
Следующий пример демонстрирует, как можно использовать функцию max-width для изменения цвета фона в зависимости от ширины области видимости
body { background-color: #0EAD69; } @media screen and (max-width: 1600px) { body { background-color: #3BCEAC; } } @media screen and (max-width: 1280px) { body { background-color: #FFD23F; } } @media screen and (max-width: 960px) { body { background-color: #EE4266; } } @media screen and (max-width: 600px) { body { background-color: #540D6E; } }
Ориентация экрана
Orientation – это хорошая медиа-функция, которая позволяет вам производить изменения в зависимости от ориентации дисплея. Она может иметь два значения: portrait (портрет) и landscape (пейзаж/альбом).
Но что браузер считает портретом, а что пейзажем? Значение портрета будет инициировать изменения каждый раз, когда высота области видимости больше ширины. Аналогично, если ширина больше высоты, вьюпорт будет считаться «альбомным».
Например, этот код даёт следующий результат:
/* Красный фон применяется только, если ориентация экрана альбомная */
body {
background-color: #FFD23F; /* Желтый фон */
}
@media screen and (orientation: landscape) {
body {
background-color: #EE4266; /* Красный фон */
}
}
Соотношение сторон
Данная медиа-функция похожа на функцию ориентации, но является более точной. Вы можете установить правила для конкретного необходимого соотношения сторон. Например, можно установить разную разметку для телефонов с экранами 16/9 и 18/9.
Эта функция также может иметь префикс max- и min- для обработки диапазона экранов с разным соотношением сторон
Наведение и указатель
Итак, я попробую объяснить эти медиа-функции как можно проще, ведь они достаточно полезны.
Обе медиа-функции hover и pointer относятся к определению основного механизма ввода на сайте. Например, мышь. Или палец, если вы используете смартфон. Чтобы определить все механизмы ввода, можно использовать функции any-hover и any-pointer.
А теперь перейдем к тому, что же они делают?
Функция hover (и any-hover) позволяет браузеру узнать, может ли основной механизм ввода наводиться на элементы (например, как курсор мыши).
Вы можете использовать эту функцию для определения основного механизма ввода, который
- hover: hover, может наводиться на элементы
- hover: none, не может наводиться на элементы или механизма ввода с возможностью наведения нет вообще
Когда это стоит использовать? Например, когда вы хотите обрабатывать анимацию наведения на мобильных устройствах, где механизм ввода (палец) не может наводиться на элементы.
Функции pointer (и any-pointer) позволяют браузеру узнать, имеет ли основной механизм ввода указатель (например, мышь) и если имеет, то насколько он точный.
Вы можете использовать эту функцию для определения основного механизма ввода, который:
- pointer: coarse, включает в себя указательно ограниченной точности
- pointer: fine, включает в себя точное указатель
- pointer: none, не включает в себя указатель
Это полезно, например, для увеличения области нажатия на устройства с неточным указателем
Эй, это всё скучно. Где новые крутые функции, о которых упоминалось раньше?
Вот они!
Учтите, что следующие функции являются экспериментальными и в данный момент имеют очень ограниченную поддержку.
Инвертированные цвета
Функция инвертированных цветов очень полезна, если вам нужно применить некоторые стили, когда системные цвета имеют такую же настройку.
Зачем включать инвертирование системных цветов? Обычно это очень полезно, если хочется улучшить читаемость.
Также имейте в виду, что еще одной хорошей практикой является увеличение шрифта и уменьшение жирности, когда цвета инвертированы. Это именно то, что вы можете сделать с помощью медиавыражений.
У данной функции есть только два значения:
- inverted: применить стили, если цвета инвертированы
- none: применить стили по умолчанию
Вот пример! Когда цвета инвертируются, размер текста увеличивается
.text {
font-size: 24px;
}
@media screen and (inverted-colors: inverted) {
.text {
font-size: 36px;
}
}
Пожалуйста, обратите внимание, что в данный момент эта функция поддерживается только в Safari (на macOS и iOS). Всегда актуальный список поддерживаемых браузеров можно найти здесь
Предпочитаемая цветовая схема
Это одна из моих любимых функций, и я надеюсь, что постепенно она станет популярной.
Функция позволяет разработчикам устанавливать различные варианты оформления для элементов, если изменяется цветовая схема. И Windows и macOS позволяет пользователям менять системную цветовую схему со светлой на тёмную и обратно. iOS 13 также представила эту функцию, а для пользователей Android эта возможность станет доступной с приходом Android Q.
Поддержка браузерами также приличная. На данный момент последние версии Google Chrome, Mozilla Firefox и Safari поддерживают эту функцию. На мобильных устройствах её также поддерживают все основные браузеры, кроме Opera. Всегда актуальный список поддерживаемых браузеров можно найти здесь
Значения для этой функции достаточно понятны интуитивно:
- light: применить стили, если пользователь предпочитает светлую тему
- dark: применить стили, если пользователь предпочитает тёмную тему
- no-preference: применить стили по умолчанию
Посмотреть, насколько крута эта функция, можно в примере ниже!
.appbar {
background-color: #EE4266;
}
.fab {
background-color: #424242;
}
@media screen and (prefers-color-scheme: dark) {
body {
background-color: #424242;
}
.appbar {
background-color: #212121;
}
h3 {
color: #fff;
}
.fab {
background-color: #EE4266;
}
}
Установка системной тёмной темы делает страницу также тёмной
Сокращение количества анимации
Это также очень важно. Лично я люблю анимации и переходы, и я думаю, что правильная анимация может действительно улучшить удобство взаимодействия с сайтом. Но не всем нравятся анимации и, что более важно, у некоторых людей могут быть вестибулярные расстройства, из-за которых может возникать укачивание и головокружение. Я нашел полезную статью, которая очень хорошо объясняет подобные явления.
Эта функция может иметь два значения:
- reduce: применяет стили, если пользователь не хочет видеть анимации и переходы. Это значение обычно используется для их отключения
- no-preference: применяет обычные стили
Проверьте эту функцию в примере ниже:
.pulse {
animation: pulse 2s infinite;
}
@media screen and (prefers-reduced-motion: reduce) {
.pulse {
animation: none;
}
}
Анимация пульсации прекращается, когда пользователь выбирает снижения подвижности элементов
Браузерная совместимость для этой функции достаточно хорошая. В данный момент только Edge и IE не поддерживают её. Всегда актуальный список поддерживаемых браузеров можно найти здесь
Заключение
Для меня это был интересный эксперимент, я узнал о некоторых новых возможностях, которые я, вероятно, теперь буду использовать гораздо чаще.
Хотелось бы упомянуть еще о некоторые функциях, как например, light-level, которая может использоваться для проверки уровня окружающего освещения, но большинство недавно представленных функций медиавыражений всё еще не имеют поддержки ни одним из браузеров, так что… еще не пришло время.
Примеры кода
Вы можете ознакомиться с примерами кода здесь. Код находится в открытом доступе на Github.
Кто мы
Мы команда молодых разработчиков и дизайнеров, находящихся в Падуя, Италия. Мы разрабатываем мобильные приложения и веб-сайты и всегда готовы создавать что-то великое
Как задать максимальную ширину таблицы при помощи CSS
Вам нужно вывести таблицу конкретно заданной ширины? Ваша таблица очень большая и при отображении ее «разносит» до неприличных размеров? Да еще при этом свойство max-width не работает? Тогда вы попали по адресу. В этой статье мы рассмотрим способы решения данной проблемы.
Давайте рассмотрим проблему в корне.
Согласно html спецификациям, результат использования свойств max(min)-width(height) для таблиц не определён.
Теперь вспомним немного теории: у нас есть возможность задавать произвольные размеры для блочного элемента.
Следовательно, «внедрив» нашу таблицу в блочную обертку, мы сможем оперировать ее шириной и высотой (а точнее манипулировать посредством изменения параметров родительского блока). Очевидно, что лучшим кандидатом среди блочных структур на роль родителя будет div.
Рассмотрим сказанное на примере.
HTML:
<!DOCTYPE html> <html> <head> <title>Задаем максимальную ширину таблице</title> <meta charset="UTF-8"> <link rel="stylesheet" media="all" type="text/css" href="./style2.css" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div> <table border="1"> <tr> <td>Задаем</td><td>фиксированную</td><td>ширину</td><td>таблицы</td> </tr> </table> </div> </body> </html>
CSS:
table { width: 100%; /* Задаем ширину таблицы */ } div { max-width: 900px; /* Задаем ширину родительского блока */}
Как видим, теперь, методом «родительского контроля», можно ограничивать нашу «непослушную» таблицу.
Важно!!!
- Ширина таблицы указывается в процентах от размера родительского элемента.
- Если у вас очень большая таблица, для корректного расчета ширины ячеек можно добавить строчку.
Оценок: 12 (средняя 5 из 5)
- 2066 просмотров
Понравилась статья? Расскажите о ней друзьям:
Курсы по CSS (в открытом доступе)
Уровень сложности:
Средний
Еще интересное
max-width | CSS справочник
Поддержка браузерами
12.0+ | 7.0+ | 1.0+ | 1.0+ | 7.0+ | 2.0.2+ |
Описание
CSS свойство max-width устанавливает максимальную допустимую ширину области для содержимого элемента.
Примите во внимание, что полная ширина элемента вычисляется по формуле:
max-width+padding(левый и правый)+border(ширина рамки)
т.е. если вы зададите max-width: 500px, padding: 5px, border 1px, то максимальная ширина получится 512px.
Примечание: CSS свойство max-width работает только с блочными элементами.
Значение по умолчанию: | none |
---|---|
Применяется: | ко всем элементам, кроме незаменяемых строчных элементов, столбцов таблицы и групп столбцов |
Анимируется: | да |
Наследуется: | нет |
Версия: | CSS2 |
Синтаксис JavaScript: | object.style.maxWidth=»100px» |
Синтаксис
max-width: none|величина|%|inherit;
Значения свойства
Значение | Описание |
---|---|
none | Максимальная ширина отсутствует. |
величина | Задает максимальную ширину в единицах измерения CSS. |
% | Максимальная ширина указывается в процентах и высчитывается в зависимости от высоты родительского элемента. |
inherit | Указывает, что значение наследуется от родительского элемента. |
Пример
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Пример</title> <style> p { max-width: 100px; background-color: yellow; } </style> </head> <body> <p>Максимальная ширина данного абзаца - 100px</p> </body> </html>
Результат данного примера в окне браузера:
CSS3 | Размеры элементов. Box-sizing
Размеры элементов
Последнее обновление: 21.04.2016
Размеры элементов задаются с помощью свойств width (ширина) и height (высота).
Значение по умолчанию для этих свойств — auto
, то есть браузер сам определяет ширину и высоту элемента.
Можно также явно задать размеры с помощью единиц измерения (пикселей, em) или с помощью процентов:
width: 150px; width: 75%; height: 15em;
Пиксели определяют точные ширину и высоту. Единица измерения em зависит от высоты шрифта в элементе. Если размер шрифта элемента, к примеру, равен 16 пикселей, то 1 em для этого элемента будет равен 16 пикселям. То есть если у элемента установить ширину в 15em, то фактически она составит 15 * 16 = 230 пикселей. Если же у элемента не определен размер шрифта, то он будет взят из унаследованных параметров или значений по умолчанию.
Процентные значения для свойства width вычисляются на основании ширины элемента-контейнера. Если, к примеру,
ширина элемента body на веб-странице составляет 1000 пикселей, а вложенный в него элемент <div>
имеет ширину 75%,
то фактическая ширина этого блока <div>
составляет 1000 * 0.75 = 750 пикселей.
Если пользователь изменит размер окна браузера, то ширина элемента body и соответственно ширина вложенного в него блока div тоже изменится.
Процентные значения для свойства height работают аналогично свойству width, только теперь высота вычисляется по высоте элемента-контейнера.
Например:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Размеры в CSS3</title> <style> div.outer{ width: 75%; height: 200px; margin: 10px; border: 1px solid #ccc; background-color: #eee; } div.inner{ width: 80%; height: 80%; margin: auto; border: 1px solid red; background-color: blue; } </style> </head> <body> <div> <div></div> </div> </body> </html>
В то же время фактические размеры элемента могут в итоге отличаться от тех, которые установлены в свойствах width
и height
. Например:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Размеры в CSS3</title> <style> div.outer{ width: 200px; height: 100px; margin: 10px; padding: 10px; border: 5px solid #ccc; background-color: #eee; } </style> </head> <body> <div> Определение фактического размера в CSS 3 </div> </body> </html>
Как видно на скриншоте, в реальности значение свойства width
— 200px — определяет только ширину внутреннего содержимого элемента,
а под блок самого элемента будет выделяться пространство, ширина которого равна ширине внутреннего содержимого (свойство width) +
внутренние отступы (свойство padding) + ширина границы (свойство border-width) + внешние отступы (свойство margin). То есть элемент будет иметь ширину в
230 пикселей, а ширина блока элемента с учетом внешних отступов составит 250 пикселей.
Подобные расчеты следует учитывать при определении размеров элементов.
С помощью дополнительного набора свойств можно установить минимальные и максимальные размеры:
min-width: минимальная ширина
max-width: максимальная ширина
min-height: минимальная высота
max-height: максимальная высота
min-width: 200px; width:50%; max-width: 300px;
В данном случае ширина элемента равна 50% ширины элемента-контейнера, однако при этом не может быть меньше 200 пикселей и больше 300 пикселей.
Переопределение ширины блока
Свойство box-sizing позволяет переопределить установленные размеры элементов. Оно может принимать одно из следующих значений:
content-box
: значение свойства по умолчанию, при котором браузер для определения реальных ширины и высоты элементов добавляет к значениям свойствwidth
иheight
ширину границы и внутренние отступыpadding-box
: указывает веб-браузеру, что ширина и высота элемента должны включать внутренние отступы как часть своего значения. Например, пусть у нас есть следующий стиль:width: 200px; height: 100px; margin: 10px; padding: 10px; border: 5px solid #ccc; background-color: #eee; box-sizing: padding-box;
Здесь реальная ширина внутреннего содержимого блока будет равна 200px (width) — 10px (padding-left) — 10px (padding-right) = 180px.
Стоит отметить, что большинство современных браузеров не поддерживают данное свойство.
border-box
: указывает веб-браузеру, что ширина и высота элемента должны включать внутренние отступы и границы как часть своего значения. Например, пусть у нас есть следующий стиль:width: 200px; height: 100px; margin: 10px; padding: 10px; border: 5px solid #ccc; background-color: #eee; box-sizing: border-box;
Здесь реальная ширина внутреннего содержимого блока будет равна 200px (width) — 10px (padding-left) — 10px (padding-right) — 5px (border-left-width) — 5px (border-right-width) = 170px.
Например, определим два блока, которые отличаются только значением свойства box-sizing:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Размеры в CSS3</title> <style> div{ width: 200px; height: 100px; margin: 10px; padding: 10px; border: 5px solid #ccc; background-color: #eee; } div.outer1{ box-sizing: content-box; } div.outer2{ box-sizing: border-box; } </style> </head> <body> <div> Определение фактического размера в CSS 3 </div> <div> Определение фактического размера в CSS 3 </div> </body> </html>
В первом случае при определении размеров блока к свойствам width и height будут добавляться толщина границы, а также внутренние и внешние отступы, поэтому первый блок будет иметь большие размеры:
Свойство min-width | CSS справочник
CSS свойстваОпределение и применение
CSS свойство min-width устанавливает минимальную ширину элемента. Свойство применяется к блочным элементам.
Поддержка браузерами
CSS синтаксис:
min-width:"length | initial | inherit";
JavaScript синтаксис:
object.style.minWidth = "100px"
Значения свойства
Значение | Описание |
---|---|
length | Определяет минимальную ширину (в единицах измерения CSS). Значение по умолчанию 0. |
% | Определяет минимальную ширину (в процентах). Ширина высчитывается в зависимости от ширины родительского элемента. |
initial | Устанавливает свойство в значение по умолчанию. |
inherit | Указывает, что значение наследуется от родительского элемента. |
Версия CSS
CSS2Наследуется
Нет.Анимируемое
Да.Пример использования
<!DOCTYPE html> <html> <head> <title>Минимальная и максимальная ширина элемента.</title> <style> .test { min-width : 100px; /* задаём минимальную ширину для блока */ background-color : khaki; /* устанавливаем цвет заднего фона для элемента */ } .test2 { min-width : 100px; /* задаём минимальную ширину для блока */ max-width : 200px; /* задаём максимальную ширину для блока */ background-color : orange; /* устанавливаем цвет заднего фона для элемента */ } </style> </head> <body> <div class = "test">Блок в котором установлена минимальная ширина 100px.</div><br> <div class = "test2">Блок в котором установлена минимальная ширина 100px и максимальная 200px..</div> </body> </html>Пример установки минимальной и максимальной ширины для элемента.CSS свойства
width | Chrome Полная поддержка 1 | Edge Полная поддержка 12 | Firefox Полная поддержка 1 | IE Полная поддержка 4 | Opera Полная поддержка 3.5 | Safari Полная поддержка 1 | WebView Android Полная поддержка 1 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 4 | Opera Android Полная поддержка 10.1 | Safari iOS Полная поддержка 1 | Samsung Internet Android Полная поддержка 1.0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Animatable | Chrome Полная поддержка 26 | Edge Полная поддержка 12 | Firefox Полная поддержка 16 | IE Полная поддержка 11 | Opera Полная поддержка 15 | Safari Полная поддержка 6.1 | WebView Android Полная поддержка 4.4 | Chrome Android Полная поддержка 26 | Firefox Android Полная поддержка 16 | Opera Android Полная поддержка 14 | Safari iOS Полная поддержка 6.1 | Samsung Internet Android Полная поддержка 1.5 |
fill ЭкспериментальнаяНестандартная | Chrome Полная поддержка 46 | Edge Нет поддержки Нет | Firefox Нет поддержки Нет | IE Нет поддержки Нет | Opera Полная поддержка 33 | Safari Полная поддержка 12 | WebView Android Полная поддержка 46 | Chrome Android Полная поддержка 46 | Firefox Android Нет поддержки Нет | Opera Android ? | Safari iOS Полная поддержка 12 | Samsung Internet Android Полная поддержка 5.0 |
fit-content | Chrome Полная поддержка 46
| Edge Нет поддержки Нет | Firefox Полная поддержка 3
| IE Нет поддержки Нет | Opera Полная поддержка 33
| Safari Полная поддержка 11
| WebView Android Полная поддержка 46 | Chrome Android Полная поддержка 46 | Firefox Android Полная поддержка 4
| Opera Android ? | Safari iOS Полная поддержка 11
| Samsung Internet Android Полная поддержка 5.0Альтернативное имя
|
max-content | Chrome Полная поддержка 46
| Edge Нет поддержки Нет | Firefox Полная поддержка 66
| IE Нет поддержки Нет | Opera Полная поддержка 44 | Safari Полная поддержка 11
| WebView Android Полная поддержка 46 | Chrome Android Полная поддержка 46 | Firefox Android Полная поддержка 66
| Opera Android Полная поддержка 43 | Safari iOS Полная поддержка 11
| Samsung Internet Android Полная поддержка 5.0 |
min-content | Chrome Полная поддержка 46
| Edge Нет поддержки Нет | Firefox Полная поддержка 66
| IE Нет поддержки Нет | Opera Полная поддержка 44 | Safari Полная поддержка 11
| WebView Android Полная поддержка 46 | Chrome Android Полная поддержка 46 | Firefox Android Полная поддержка 66
| Opera Android Полная поддержка 43 | Safari iOS Полная поддержка 11
| Samsung Internet Android Полная поддержка 5.0 |
stretch Экспериментальная | Chrome Полная поддержка 22Альтернативное имя
| Edge Нет поддержки Нет | Firefox Полная поддержка 3Альтернативное имя
| IE Нет поддержки Нет | Opera Полная поддержка 15Альтернативное имя
| Safari Полная поддержка 6.1
| WebView Android Полная поддержка 4.4Альтернативное имя
| Chrome Android Полная поддержка 25Альтернативное имя
| Firefox Android Полная поддержка 4Альтернативное имя
| Opera Android ? | Safari iOS Полная поддержка 6.1
| Samsung Internet Android Полная поддержка 5.0Альтернативное имя
|