2010-06-24 2 views
4

У меня странная ошибка.
В моем файле .css У меня есть следующее правило:IE css bug: добавляет «padding-left» в конец «background-image»?

.conf-view a 
{ 
    padding-left: 10px; 
    background-image: url("images/bullet-green.gif"); 
    background-position: center left; 
    background-repeat: no-repeat; 
} 

Проблема заключается в том, что IE каким-то образом интерпретирует это так:

.conf-view A /* NOTE - this is copied from the IE-Developer tools css tab. */ 
    background-image : url(images/bullet-green.gif); PADDING-LEFT: 10px 
    background-repeat : no-repeat 
    background-position : left center 

См отступы-влево там?
Теперь браузер просто игнорирует правило заполнения, что приводит к сбою компоновки.

Это известная ошибка? может ли кто-нибудь найти способ обойти это?

Большое спасибо
Kfir

+0

Нужна ссылка .... – reisio

+0

Я собираю упрощенную тестовую страницу – kfiroo

+0

ie 8 в настоящее время. , но я также видел его на предварительном просмотре платформы ie9. – kfiroo

ответ

2

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

Любопытно, что предложение faileN было не за горами того, что я сделал, чтобы исправить это. Если вы поместите «display: inline-block»; то это, похоже, работает в IE7 и FF. Конечно, вы захотите проверить, что у него нет побочных эффектов в другом месте, прежде чем использовать его.

+0

, спасибо, я попробую, если я не смогу получить первое решение для работы – kfiroo

+0

спасибо, ваш ответ решил мою ошибку. – kfiroo

0

Может быть, это потому, что a -элементное обычно это инлайн-элемент. Для этих элементов не часто встречаются фоновые изображения и прокладки/поля, хотя это разрешено. Поместите display: block; в свой стиль. Может быть, это поможет вам в этой ситуации.

EDIT

В ожидании вашего образца код :)

+0

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

+0

Марсель: 1. Я знаю разницу между элементом и тегом - извините за то, что не совершенен. 2.Да, они могут, но, как вы видите, это вызывает проблемы среди разных браузеров, чего иногда можно избежать с моим предложением, поскольку я часто использовал его. kfiroo: Хорошо, я думал, что вы хотите, чтобы он вел себя как блок-элемент, потому что вы клали на него фон и отступы. –

+0

inline-block был бы более разумным вариантом, я думаю, так или иначе ... – Chris

3

Это, кажется, ошибка в IE Developer Tools, где код отображения только заглатывает следующее определение без фона (в алфавитном порядке, по-видимому), если у вас есть фоновое изображение, указанное отдельно. Ваш текст не перекрывает ваше фоновое изображение на этой странице ни одной из ссылок, поэтому мне кажется, что CSS интерпретируется правильно независимо; можете ли вы объяснить, почему вы думаете, что это не так?

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

background:transparent url("images/bullet-green.gif") scroll no-repeat left center;

+0

спасибо за ваш повтор. в этой демонстрации действительно кажется, что css интерпретируется правильно, но на моем рабочем сайте текст и bg-img перекрываются. Я постараюсь объединить правила bg в один один – kfiroo

+0

приятно! это сработало. плохо попробуйте это в живой версии сейчас. большое спасибо – kfiroo

+0

Прохладный материал. Если у вас возникла проблема, когда вы вернетесь на свой производственный сайт, я думаю, что в вашей таблице стилей должно быть противоречивое правило. –