Подтвердить что ты не робот

Ширина установки: автоматически приводит к ширине: 100%

Я немного устал прямо сейчас (из кофе), поэтому я не могу понять это.

Когда я устанавливаю p.style.width = auto (синий), почему его width на 100%? Ни один из элементов не имеет ширины, равной 100%, поэтому я сомневаюсь, что она унаследовала свойство.

Как установить ширину <p> в соответствии с ее шириной содержимого и дополнением?

Пример страницы ссылка

4b9b3361

Ответ 1

Поскольку width:auto по умолчанию используется 100% (т.е. минус границы и paddings, см. здесь), если вы не находитесь в среде с плавающей/позиционной. Фактически, без

float:left

или

position: absolute

вам не повезло, установив ширину элемента как минимум в CSS. См., Например, здесь о том, как вы могли добиться этого в Firefox (только).

Изменить: Вы также можете использовать

display: table;
width: auto;

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

Изменить 2:. Вы можете, как было предложено DisgruntledGoat, также попробовать display:inline-block. Эта страница дает таргетинг на кросс-браузерную реализацию IE6 +, FF2 +, Safari 3+ и Opera.

Ответ 2

Все это объясняется в спецификации

http://www.w3.org/TR/CSS2/visudet.html#blockwidth

o.o

По существу, автоматическое средство учитывает все другие заданные прокладки, границы и поля, заполняет оставшееся пространство (при условии, что только ширина установлена ​​на автоматическую). Так эффективно 100% минус границы, отступы и поля.

Чтобы исправить, просто установите его в соответствие с другими элементами или вставьте все их в содержащий элемент с установленной шириной.

Ответ 3

Другие правы, width: auto устанавливает ширину для заполнения всего доступного пространства.

Одним из решений было бы использовать display: inline-block, который должен делать то, что вы хотите. Для совместимости с IE6 лучше всего применить это к встроенному элементу типа <span>. И добавьте display: -moz-inline-box для Firefox 2 и ранее.