2013-03-02 1 views
3

Я пытаюсь использовать фоновое изображение как спрайт, на элементах с переменными размерами. Поэтому я использую процентные значения для background-size и background-position.Является ли Opera неправильным положением и/или размером фона с процентными значениями?

У меня возникла проблема с этим в Opera (последняя версия, 12.14). Я подозреваю, что это комбинация background-position и background-size с процентными значениями, которые вызывают неправильное поведение. Я тщетно искал любую релевантную информацию или признанную проблему.

Чтобы продемонстрировать проблему, с которой я столкнулся, я создал изображение размером 560 на 560 пикселей, в основном оранжевое, за исключением синего квадрата в нижнем правом углу, размером 112 на 112 пикселей, на одну пятую размер изображения.

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

.square 
{ 
    background-size: 500% 500%; 
    background-position: -400% -400%; 
} 

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

Я создал a jsfiddle test that demonstrates the issue, который вы можете просмотреть в Opera, чтобы увидеть нежелательное поведение, которое я описал.

Подробная информация о Opera, взятые из верхней части opera:about:

Version information 

Version: 12.14 
Build: 1738 
Platform: Win32 
System: Windows 7 

Browser identification 

Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14 

я был в состоянии собрать некоторую информацию, которая может обеспечить некоторые подсказки:

  • Чем больше изображение и дальнейшие он смещен (т. е. чем больше значения для фонового положения), тем дальше Opera становится ошибочным.

  • Опера отображается правильно, если элемент имеет размер синего квадрата (112 на 112 пикселей в этом случае - вы можете видеть это в jsfiddle).

  • Опера отображается правильно, если (скобки) размеры изображения кратные 100 (то есть 500 на 500 пикселей, а не 560 на 560 пикселей).

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

  • Это справедливое предположение или, возможно, даже известная проблема? Является ли Opera нарушением соответствующих спецификаций?

  • Есть ли исправление или обходное решение, кроме как повторно отобразить изображение до размеров, кратных 100?

ответ

1

Я сообщил об этом поведении в качестве «ошибки» несколько месяцев назад, и я просто перепробовал это в последней версии оперы (17.0), и он работает по желанию, поэтому я буду считать, что ответы на мои вопросы таковы:

  • Да, это справедливое предположение. Да, это нарушало некоторые спецификации.
  • Да, вы можете обновить до последней версии Opera, которая ведет себя по своему желанию.

Для справки, сведения о Opera я использовал, чтобы проверить, приняты, опять же, из верхней части opera://about:

Opera 17.0 

Made to discover 

Version information 

Version: 17.0.1241.45 - Checking for updates... 
Update stream: Stable 
System: Windows 7 64-bit (WoW64) 
Browser identification 

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36 OPR/17.0.1241.45