Как сделать ширину блока по содержимому css
Перейти к содержимому

Как сделать ширину блока по содержимому css

  • автор:

Как задать ширину блока в css

Вы можете задать ширину блока в CSS с помощью свойства width . Например, чтобы задать ширину блока в 500 пикселей, вы можете использовать следующий возможности CSS:

.block  width: 500px; > 

Он устанавливает ширину блока с классом block равной 500 пикселям. Так же можно установить ширину блока в процентах. Например, чтобы установить ширину блока в 50% от ширины родительского элемента, вы можете написать такой текст в вашем CSS файле:

.block  width: 50%; > 

Можно определять размер блока автоматически, на основе его содержимого. В таких случаях вы можете использовать свойство max-width , чтобы установить максимальную ширину блока.

.block  max-width: 500px; > 

Если содержимое блока меньше 500 пикселей, то его ширина будет автоматически определена на основе содержимого. Если содержимое блока больше 500 пикселей, то его ширина будет ограничена до 500 пикселей.

Ширина div по контенту

@Invis1ble2, Если вам дан исчерпывающий ответ, отметьте его как верный (нажмите на галку рядом с выбранным ответом).

29 окт 2014 в 14:10

5 ответов 5

Сортировка: Сброс на вариант по умолчанию

Как уже было сказано либо inline-block либо inline, если div-ву нужны блочные свойства,то display: inline-block; , но в этом случае необходимо задавать еще vertical-align: top; что-бы блок не съезжал вниз при добавлении контента. А вообще сами можете потренироваться, почти в каждом браузере есть отладчик для разработчиков, в FireFox пишите атрибут и по очереди прокликиваете все значения, этот вариант просто незаменим для новичков, можно наглядно всё увидеть, как элементы ведут себя.

Отслеживать
1,087 3 3 золотых знака 15 15 серебряных знаков 41 41 бронзовый знак
ответ дан 25 июл 2011 в 19:48
1,279 16 16 серебряных знаков 42 42 бронзовых знака
спасибо за советы, буду пробовать дело в том, что я действительно новичек в верстке
25 июл 2011 в 20:00

Эту задачу можно решить несколькими способами:

1 — С помощью display: inline-block; :

#l0_b1
 
тут контент с неизвестной шириной

2 — С помощью display: block; :

#l0_b1
 
тут контент с неизвестной шириной

Используя float , не забывайте про clear: both

3 — С помощью display: inline-flex; :

#l0_b1
 
тут контент с неизвестной шириной

4 — С помощью display: table; :

#l0_b1
 
тут контент с неизвестной шириной

И блоки, и флексы, и таблицы могут оборачивать блок по его ширине. В зависимости от вашей общей задачи, вы можете выбрать самый подходящий вам вариант.

Размеры блока

Размеры блока — это комплексная величина и складывается из значений разных свойств. Ниже рассмотрим особенности формирования ширины и высоты блока.

Ширина блока

Ширина блока представляет собой сумму значений следующих свойств:

  • width — ширина содержимого;
  • padding-left и padding-right — поле слева и справа от содержимого;
  • border-left и border-right — толщина границы слева и справа;
  • margin-left и margin-right — отступ слева и справа.

На рис. 1 схематично изображены свойства, влияющие на ширину блока. При этом какие-то свойства могут отсутствовать и на размер влияние не оказывают.

Ширина блока

Рис. 1. Ширина блока

Обратите внимание, что свойство width задаёт ширину содержимого, а не всего блока целиком. Если значение width не задано, то оно по умолчанию устанавливается как auto . В этом случае ширина блока будет занимать всю доступную ширину при сохранении значений padding , border и margin . Под доступной шириной в данном случае подразумевается ширина содержимого родительского блока, а если родителя нет, то ширина окна браузера.

В примере 1 показано создание блока, занимающего всю доступную ширину. При изменении ширины окна браузера ширина блока будет соответствующим образом подстраиваться.

Пример 1. Ширина блока

Результат данного примера показан на рис. 2.

Блок, занимающий всю ширину

Рис. 2. Блок, занимающий всю ширину

Если свойство width задано, то его значение добавляется к общей ширине блока. В качестве примера рассмотрим следующий стиль.

Ширина блока в данном случае будет равна 442 пикселя; эта величина получается складыванием значения ширины содержимого плюс поле слева, граница слева и отступ слева, плюс поле справа, граница справа и отступ справа. Суммируем все числа.

Ширина = 400 + 10 + 10 + 4 + 4 + 7 + 7 = 442

Ширину содержимого можно задавать в процентах, но в этом случае общая ширина блока может превысить ширину веб-страницы, что приведёт к появлению горизонтальной полосы прокрутки.

Высота блока

Высота блока формируется по тем же правилам, что и ширина. А именно, высота складывается из значений следующих свойств:

  • height — высота содержимого;
  • padding-top и padding-bottom — поле сверху и снизу от содержимого;
  • border-top и border-bottom — толщина границы сверху и снизу;
  • margin-top и margin-bottom — отступ сверху и снизу.

Если свойство height не указано, то оно считается как auto , в этом случае высота содержимого вычисляется автоматически. На рис. 3 показаны свойства, влияющие на высоту блока.

Высота блока

Рис. 3. Высота блока

Несмотря на схожесть принципов построения ширины и высоты, у них есть некоторые различия.

1. Если содержимое превышает размер блока при заданном height , то содержимое отображается поверх блока (рис. 4).

Превышение размеров блока

Рис. 4. Превышение размеров блока

Чтобы избежать подобного поведения, свойство height лучше не задавать, тогда высота блока будет вычисляться автоматически. Впрочем, бывают случаи, когда высота должна быть чётко указана, тогда рекомендуется добавить свойство overflow — значение auto устанавливает полосы прокрутки при необходимости (пример 2), а значение hidden скрывает всё, что не помещается в заданные размеры.

Пример 2. Использование overflow

Результат данного примера показан на рис. 5. Высота блока задана явно и если содержимое не помещается в блок по высоте, то появляется вертикальная полоса прокрутки.

Полосы прокрутки в блоке

Рис. 5. Полосы прокрутки в блоке

2. Установка значения высоты в процентах обычно не приводит к каким-либо заметным результатам, поскольку высота родителя браузером не вычисляется. Чтобы проценты начали работать, высота родителя должна быть задана явно. В примере 3 показано, как задать высоту блока в процентах.

Пример 3. Высота блока

Результат данного примера показан на рис. 6. Здесь для родителем выступает элемент , поэтому для него устанавливаем значение height равным 100%. В то же время на действуют те же правила, что и на , поэтому для родителя , которым является , также требуется поставить значение height равным 100%. Только в этом случае высота блока в процентах будет зависеть от высоты веб-страницы.

Высота блока в процентах

Рис. 6. Высота блока в процентах

Алгоритм блочной модели

Ширина блока формируется из значений width , padding , border и margin . Считать итоговую ширину не всегда удобно, особенно когда в качестве значений встречается комбинация пикселей и процентов. Для изменения алгоритма подсчёта ширины и высоты блока применяется свойство box-sizing со значением border-box . После добавления этого свойства к блоку значение width включает в себя padding и border (но не margin ). Таким образом, свойство width будет задавать ширину всего блока, а не содержимого как раньше. В примере 4 показано изменение вида поля для поиска, чтобы оно занимало всю доступную ширину веб-страницы.

Пример 4. Использование box-sizing

Результат данного примера показан на рис. 7.

Ширина поля для поиска в процентах

Рис. 7. Ширина поля для поиска в процентах

Как сделать, чтобы ширина div зависела от содержимого?

Пробовал float: left, но в данном случае это работает только в IE и Opera.

Как есть

Как хотелось бы — работает в IE и Opera с float: left

При размещении изображений если оно не помещается, то переносится на следующую строку, при этом в том месте, где изображение не поместилось образовывается пустота, блок остаётся растянутым на всю ширину.

  • Вопрос задан более трёх лет назад
  • 120796 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 9

Как ужé говорилось выше, хороший перенос блочных элементов на новую строку может быть достигнут применением строчного блока. Рекомендую для этой цели использовать нижеследующий код строчного блока, вполне испытанный многомесячным применением его в одном из основных русской энциклопедии:

/* > * http://habrahabr.ru/blogs/css/96152/ * ↑ http://www.smashingmagazine.com/2010/06/10/50-new-useful-css-techniques-tools-and-tutorials/ * ↑ http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/ * ↑ первоисточник */ .lineBlock < border: 0; margin: 0.3em 0.15em; padding: 0; display: -moz-inline-stack; /* ← Firefox 2 backwards compatibility */ display: inline-block; vertical-align: top; /* ↓ IE6 & IE7 «hasLayout» voodoo */ zoom: 1; *display: inline; /* ↑ IE6 & IE7 starhack ← http://www.ejeliot.com/blog/63 */ >

Как видите, этот код составлен по принципам, обеспечивающим обратную совместимость с Firefox 2 и IE 6 и 7.

Если рамка внешнего блока не будет совершенно прилегать ко границам внутренних строчных блоков, тогда непременно попробуйте и внешний блок также оформить в качестве строчного блока, то есть и ему назначить класс «lineBlock», описанный вышеприведённым

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *