Почему бы вам использовать ширину HTML / CSS 99,9% вместо 100%? - PullRequest
34 голосов
/ 01 октября 2010

Я видел, как многие разработчики писали ширину встроенного стиля HTML или CSS 99,9% в тех местах, где я использовал бы 100%. Есть ли веская причина для использования 99,9%? Есть ли какая-нибудь эффективная разница со 100%?

РЕДАКТИРОВАТЬ, чтобы ретвитнуть очень хороший вопрос MSalters: Considering that 99.9% is one pixel off above 500 pixels, why not 99.99%? Я думаю, он прав, что если вы собираетесь использовать dirty hack, вы должны использовать 99,99%, кто-то не согласен?

Дополнительные ссылки:

Ответы [ 2 ]

38 голосов
/ 01 октября 2010

hasLayout свойство

Это грязный хак, используемый для установки свойства hasLayout элемента IE в true. Свойство hasLayout «определяет, как элементы рисуют и связывают свое содержимое, взаимодействуют с другими элементами и связываются с ними, а также реагируют и передают события приложения / пользователя». Предоставление элемента layout - это простой способ исправить многие ошибки, связанные с макетом, которые появляются в Internet Explorer.

Что с 99,9%?

Установка ширины на 99,9% - один из способов ее запуска. Причина, по которой вы будете использовать 99,9%, заключается в том, что макет задается элементу, если для его width установлено значение, отличное от auto. Установка в процентах исключает необходимость использования фиксированной ширины.

После некоторого тестирования в jsFiddle я пришел к выводу, что действительно нет необходимости использовать ширину 99,9%, использование ширины 100% столь же эффективно. http://jsfiddle.net/3qfjW/2/ (только для IE). Кажется, что установка width на 99,9%, возможно, была распространенным заблуждением , которое застряло .. Распространите слово people.

Другие методы

Вы также можете вызвать hasLayout, используя zoom: 1; Хотя этот метод является предпочтительным для многих, так как он не мешает другим элементам, связанным со стилем, он также является недопустимым кодом CSS, который не является опцией использовать для некоторых разработчиков.


Дальнейшее чтение

Чтобы узнать больше методов для запуска hasLayout, проверьте: http://www.satzansatz.de/cssd/onhavinglayout.html

Дополнительную информацию о свойстве hasLayout можно найти в статье MSDN по hasLayout http://msdn.microsoft.com/en-us/library/bb250481(VS.85).aspx (на самом деле это отличное чтение, много подробной информации)

3 голосов
/ 02 октября 2010

Это правда width всего, кроме auto и zoom триггера hasLayout, а zoom является более гибким свойством / значением, поскольку оно не влияет на ширину, но я не думаю, что это причина почему вы видели, что разработчики используют 99,9%.

В некоторых случаях с плавающей точкой необходимо, чтобы суммарная ширина с плавающей точкой не составляла до 100% (если указано в процентах), потому что IE6 неправильно рассчитывает, что она превышает 100%, и обычно последний с плавающей точкой падает.

Решение состоит в том, чтобы либо указать правое поле -1px только для IE, либо сделать сумму 99,99%.

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

...