Ошибка jQuery - $ (el) .css ('float') при абсолютном или фиксированном - разные браузеры возвращают разные результаты

если элемент floated и имеет позицию absolute или fixed ), а скрипт $ (el) .css ('float' ) : Chrome вернет "left" , но все остальные крупные (обновленные) браузеры возвращают "none" .

Почему это? Как я могу обойти это?

example: http://jsfiddle.net/ChPCD/7/ < run in different browsers

EDIT: спасибо Взрывные таблетки с техническим ответом. Изменен мой скрипт, чтобы кратко переключить позиционирование на статичность, чтобы захватить ранее значение float. По-прежнему считайте, что результаты должны быть одинаковыми кросс-браузерами = P

0
добавлено отредактировано
Просмотры: 1
de
Мне кажется, что вы не должны использовать absolute или fixed , поскольку они недопустимы.
добавлено автор Explosion Pills, источник
Кажется, что нет в спецификации: w3.org/TR/ CSS21/visuren.html # propdef-поплавок
добавлено автор Explosion Pills, источник
@ExplosionPills - это правильно; «Это свойство указывает, должен ли поле плавать влево, вправо или нет. Он может быть установлен для любого элемента , но применим только к элементам, которые генерируют прямоугольники, которые не расположены абсолютно. "
добавлено автор Chris Heald, источник
@ExplosionPills, почему код absolute или fixed недействителен?
добавлено автор Vinnie Cent, источник

3 ответы

Похоже, что absolute или фиксированное позиционирование переопределяет поведение float , разные браузеры возвращают разные значения переопределенного свойства: отбрасывая его прямо или сохраняя его.

Возможно, вы можете использовать другой метод для поиска этих элементов: возможно, селектор jQuery, основанный на том же правиле, который применял float , в первую очередь, например:

CSS div.float-left{float:left;}

jQuery $('div.float-left').each(foo);

0
добавлено

Добро пожаловать в прекрасный мир поддержки кросс-браузера.

Ваши два варианта:

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

2) Найдите другой способ. Например, вместо того, чтобы проверять значение float, вы можете искать определенный класс или другой атрибут.

0
добавлено

Если вы используете position: absolute; , нет float. Может быть, вам это полезно

parseInt( $(el).css( 'left' ), 10)

или

$(el).position().left
0
добавлено