Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Ширина плавающего и абсолютно позиционируемого блока
Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010
Помог: 1 раз(а)
Прочитал в документации, что плавающим и абсолютно позиционируемым блокам обязательно нужно задавать ширину, то есть width:auto нельзя, нужно либо в процентах, либо в пикселя. Всегда верстал не указывая ширины и блок имел ширину равную контенту. Но вот отрывок из документации:
"10.3.5 Незамещаемые перемещаемые элементы
Если свойство 'left', 'right', 'width', 'margin-left' или 'margin-right' принимает значение 'auto', то его вычисляемое значение равно '0'. ".
Ещё где-то был отрывок, что ширину обязательно нужно указывать. В общем вопрос в следующем: это ошибка в документации или это мой косяк, что я не указываю ширину у плавающих и абсолютнопозиционируемым блокам?
IllusionMH
Отправлено: 02 Марта, 2012 - 15:36:00
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
If 'margin-left', or 'margin-right' are computed as 'auto', their used value is '0'.
If 'width' is computed as 'auto', the used value is the "shrink-to-fit" width.
Calculation of the shrink-to-fit width is similar to calculating the width of a table cell using the automatic table layout algorithm. Roughly: calculate the preferred width by formatting the content without breaking lines other than where explicit line breaks occur, and also calculate the preferred minimum width, e.g., by trying all possible line breaks. CSS 2.1 does not define the exact algorithm. Thirdly, find the available width: in this case, this is the width of the containing block minus minus the used values of 'margin-left', 'border-left-width', 'padding-left', 'padding-right', 'border-right-width', 'margin-right', and the widths of any relevant scroll bars.
Then the shrink-to-fit width is: min(max(preferred minimum width, available width), preferred width).
На заборе тоже пишут, а за ним дрова лежат
Нужно читать официальные документы
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
Pavelbeginner пишет:
Если свойство 'left', 'right', 'width', 'margin-left' или 'margin-right' принимает значение 'auto', то его вычисляемое значение равно '0'. ".
Данное утверждение верно только для пустых блоков.
----- Чем больше узнаю, тем больше я не знаю.
Pavelbeginner
Отправлено: 03 Марта, 2012 - 12:36:05
Частый посетитель
Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010
Помог: 1 раз(а)
У меня перевод русской документации по css2. Возможно, что-то отсутствует. Еще хотел бы одну вещь уточнить. В переводе написано, что, например, если есть вот такая верстка:
То вычисленное значение top внутреннего блока должно быть равно 0 т.к. значение высоты для внешнего блока не задано. То есть в переводе сказано, что, если значение высоты внешнего блока равно auto, то значение top(если оно задано в процентах) для внутреннего блока должно установиться в 0.
На практике, конечно, в 0 не устанавливается, а устанавливается проценту от высоты внутреннего блока. Скажите, пожалуйста, это баг документации или же у меня не полная документация? И скажите, как на самом деле в такой ситуации, которую я описал, должно вычисляться значение top(если оно в процентах) для внутреннего блока, если значение высоты для внешнего блока установлено в auto? Спасибо.
IllusionMH
Отправлено: 03 Марта, 2012 - 15:11:16
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Note: This paragraph is informative. This document is currently not maintained. The CSS Working Group is developing CSS Level 2 Revision 1, which corrects many errors and omissions in this document as well as making a few other changes as documented in the changes section. The CSS Working Group encourages authors and implementors to reference CSS 2.1 (or its successor) instead of this document and when features common to CSS2 and CSS 2.1 are defined differently to follow the definitions in CSS 2.1.
Старая которую уже не используют
Цитата:
<percentage>
The offset is a percentage of the containing block's width (for 'left' or 'right') or height (for 'top' and 'bottom'). For 'top' and 'bottom', if the height of the containing block is not specified explicitly (i.e., it depends on content height), the percentage value is interpreted like 'auto'.
Актуальная и используемая спецификация
Цитата:
<percentage>
The offset is a percentage of the containing block's width (for 'left' or 'right') or height (for 'top' and 'bottom'). Negative values are allowed.
Так что опять таки, напомню про заборы и чтение официальных документов
Pavelbeginner
Отправлено: 04 Марта, 2012 - 10:32:02
Частый посетитель
Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010
Помог: 1 раз(а)
Я в английском не силен, поэтому и спрашиваю здесь. Получается, если у родительского блока высота задана как auto, то top внутреннего блока, если он задан в процентах, будет вычисляться в зависимости от высоты контента внешнего блока, верно? В документации так сказано?
IllusionMH
Отправлено: 04 Марта, 2012 - 13:04:37
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
В документации сказано
Отступ вчисляется как процент от ширины(left right) или высоты (top bottom) содержащего(внешнего) блока. Допустимы отрицательные значения.
т.е. всегда вычисляется от ширины/высоты блока. А в данном случае высота блока расчитывается из высот содержимого.
Pavelbeginner
Отправлено: 04 Марта, 2012 - 13:35:58
Частый посетитель
Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.