html — CSS background-size: замена обложки для Mobile Safari
спросил
Изменено
4 года, 11 месяцев назад
Просмотрено
172к раз
Привет У меня есть несколько div на моей странице, которые имеют фоновые изображения, которые я хочу расширить, чтобы покрыть весь div, который, в свою очередь, может расшириться, чтобы заполнить ширину области просмотра.
Очевидно, background-size: обложка ведет себя неожиданно на устройствах iOS. Я видел несколько примеров того, как это исправить, но я не могу заставить их работать в моей ситуации. В идеале я бы предпочел не добавлять дополнительные теги в HTML, но если это единственный способ, то я это сделаю.
Вопрос в том, как сделать так, чтобы фоновое изображение полностью закрывало раздел div, принимая во внимание переменную ширину браузера и переменную высоту содержимого в div?
html
css
mobile-safari
Недавно у меня была похожая проблема, и я понял, что это не из-за
background-size:cover , но background-attachment:fixed .
Я решил проблему, используя медиа-запрос для iPhone и установив для свойства background-attachment значение scroll .
Для моего случая:
.cover {
размер фона: обложка;
background-attachment: исправлено;
фоновая позиция: по центру по центру;
@media (максимальная ширина: @iphone-экран) {
background-attachment: прокрутка;
}
}
Изменить: блок кода находится в МЕНЬШЕ и предполагает предопределенную переменную для
@iphone-экран . Спасибо за уведомление @stephband.
10
У меня была эта проблема во многих мобильных представлениях, которые я недавно создал.
Мое решение по-прежнему представляет собой чистый запасной вариант CSS. работа.
HTML
CSS
#bg {
положение: фиксированное;
сверху: 0;
слева: 0;
/* Сохранить соотношение сторон */
минимальная ширина: 100%;
минимальная высота: 100%;
}
4
Также размещено здесь: «размер фона: обложка» не закрывает экран мобильного телефона
Это работает на Android 4. 1.2 и iOS 6.1.3 (iPhone 4) и переключается на рабочий стол. Написано для адаптивных сайтов.
На всякий случай в HTML-голове что-то вроде этого:
HTML:
CSS:
HTML {
/* Что вы хотите */
}
.html-мобильный-фон {
положение: фиксированное;
z-индекс: -1;
сверху: 0;
слева: 0;
ширина: 100%;
высота: 125%; /* Чтобы компенсировать место в адресной строке мобильного браузера */
фон: url(/images/bg.jpg) без повторов;
размер фона: 100% 100%;
}
@media (минимальная ширина: 600 пикселей) {
HTML {
фон: url(/images/bg.jpg) фиксированный центр без повторов;
размер фона: обложка;
}
.html-мобильный-фон {
дисплей: нет;
}
}
В сети есть ответы, которые пытаются решить эту проблему, однако ни один из них не работал у меня правильно. Цель: поставить фоновое изображение на тело и иметь background-size:cover; работа мобильная, без медиазапросов, переполнения или хаки z-index:-1; позиция: абсолютная;
накладок.
Вот что я сделал, чтобы решить эту проблему. Он работает в Chrome на Android, даже когда ящик клавиатуры активен. Если кто-то захочет протестировать iPhone, это будет круто:
тело {
background: #FFFFFF url('../image/something.jpg') фиксированный верхний центр без повторов;
размер фона: обложка;
-webkit-background-size: обложка; /* это может понадобиться сафари */
}
Вот оно волшебство. Относитесь к html как к обертке с принудительным соотношением высоты относительно фактического окна просмотра. Вы знаете классический адаптивный тег
? Вот почему используется vh . Кроме того, на первый взгляд кажется, что тело должно получить эти правила, и это может выглядеть нормально… до изменения высоты, например, когда открывается клавиатура.
HTML {
высота: 100вх; /* установить ограничение области просмотра */
минимальная высота: 100%; /* установить высоту */
}