Ух, это заняло у меня немного. Вы должны действительно уменьшить количество CSS, которое вы бросаете на эти элементы. Вы перезаписываете много каскадных значений и т. Д. Однако есть два основных значения, с которыми IE7 сталкивается с проблемой.
Первый - min-width
на #main-nav > ul > li ul a
. По какой-то причине IE7, имеющий это значение на a
, заставляет его игнорировать, что это display: block
. Вероятно, это связано с неправильным восприятием родителя как inline-block
(см. # 2).
Второй - это display: inline-block
, наследуемый li
s в .sub-menu
от li.menu-item
выше ul.submenu
. Когда я удаляю эти элементы, IE7 начинает действовать соответствующим образом.
Во всех случаях это не имеет никакого отношения к тому, что вы называете "IE Whitespace Bug". Элементы inline-block
обрабатываются не иначе, чем элементы inline
, когда вычисляются коллапсы пробелов. Это согласно спецификации . В IE нет ошибки, любой браузер, который не разбивает пробелы на 1 единичный пробел между inline
и inline-block
элементами (без использования bikesheding: discard
), нарушает спецификацию.