CSS фоновое изображение рендеринг по-разному на iPhone - PullRequest
8 голосов
/ 07 октября 2010

У нас есть дизайн страницы, который отлично работает в каждом браузере ПК, который я пробовал, но выглядит странно при просмотре на iPhone или iPod Touch.

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

#content_container
{

background-image:url('content-background.jpg');
background-position:top center;
background-repeat:no-repeat;
width:1020px;
height:auto;
}

Изображение content-background.jpg очень высокое (3000 пикселей) и предназначено для «раскрытия» по мере увеличения DIV из-за содержимого.

Вам нужно будет взглянуть на страницу и полный CSS, чтобы понять, поэтому я удалил все остальное из дизайна и заново создал проблему с этим примером:

http://files.codeulike.com/static/cssexample/example.htm
(пример состоит из 1 HTML-файла, 1 CSS-файла и 3 изображений)

Вы увидите, что в IE8, Firefox, Chrome вы получите красивую зеленую коробку. Но в браузере iOS длинное тонкое фоновое изображение масштабируется, и все становится странным.

(я использую iPod Touch 2-го поколения, но полагаю, что такая же проблема будет и в других устройствах iPhone / iPod).

Любая помощь с благодарностью!

Ответы [ 5 ]

16 голосов
/ 08 октября 2010

Понял: у iPhone есть ограничение мегапикселей для Jpegs, после чего он сжимает Jpeg.

На defusion.org.uk есть очень хороший пост в блоге: http://www.defusion.org.uk/archives/2010/02/19/shrinking-large-background-image-bug-in-iphone-safari/

Предел, после которого Jpegs уменьшается, кажется, около 2 мегапикселей.Это задокументированный лимит ресурсов iOS и описан здесь:

Apple - Создание совместимого веб-контента - Знайте ограничения ресурса iOS

Максимальный размер декодированного изображения для JPEGсоставляет 32 мегапикселя с использованием субсэмплинга.

Изображения JPEG могут иметь размер до 32 мегапикселей благодаря субсэмплингу, который позволяет изображениям JPEG декодироваться до размера, который составляет одну шестнадцатую числа пикселей.Изображения JPEG размером более 2 мегапикселей субдискретизируются, то есть декодируются до уменьшенного размера.Сэмплирование JPEG позволяет пользователю просматривать изображения с самых последних цифровых камер.

.., что, как я понимаю, означает, что Jpegs менее 2 мегапикселей отображается нормально, Jpegs от 2 до 32 мегапикселей отображаются субдискретизациейсжимается), и Jpegs более 32 мегапикселей, по-видимому, вообще не могут быть отображены.

Изменение моего сайта для использования фонового изображения с разрешением менее 2 мегапикселей решило проблему.

0 голосов
/ 25 мая 2017

Если вы сохранили

background-attachment: fixed;

в файле CSS рабочего стола, затем запомните его, чтобы изменить его на

background-attachment: scroll;

в мобильном CSS-файле. Если этого не сделать, это покажет неожиданный эффект.

0 голосов
/ 07 февраля 2013

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

Первым шагом было сохранение фонового изображениякак .png, который полностью вылечил проблему ... за исключением того, что он был фоновым изображением 1200px x 12000px, файл .png был монстром.

Итак, я открыл файл .png в Photoshop и сохранил его, оптимизированный дляWeb и устройства в формате .jpg и загрузили этот файл, и он работал как шарм на iPhone и во всех 5 больших браузерах.

Надеюсь, это поможет!

0 голосов
/ 01 августа 2011

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

0 голосов
/ 16 ноября 2010

Не совсем верно, у меня есть фон 1640x1200 (sub 2Mpix), и фон здесь сжимается ...: S

...