Я хочу, чтобы мое фоновое изображение растягивалось и масштабировалось в зависимости от размера области просмотра браузера.
Я видел несколько вопросов о переполнении стека, которые выполняют эту работу, например, Stretch и масштабирование CSS-фона . Это хорошо работает, но я хочу разместить изображение с помощью background
, а не с img
тегом.
В этом img
размещается тег, а затем с помощью CSS мы отдаем дань img
тегу.
width:100%; height:100%;
Это работает, но этот вопрос немного устарел и утверждает, что в CSS 3 изменение размера фонового изображения будет работать довольно хорошо. Я попробовал этот пример первым , но у меня не получилось.
Есть ли хороший способ сделать это с background-image
объявлением?
css
background
Фабио Антунес
источник
источник
Ответы:
CSS3 имеет приятный маленький атрибут с именем
background-size:cover
.Это масштабирует изображение так, что фоновая область полностью покрывается фоновым изображением, сохраняя соотношение сторон. Вся территория будет покрыта. Однако часть изображения может быть не видна, если ширина / высота измененного изображения слишком велика.
источник
background-size: 100vw 100vh;
не менее, делает трюк приятно.background-size: cover; -ms-background-size: cover; -o-background-size: cover; -moz-background-size: cover; -webkit-background-size: cover;
background-size: 100% auto;
stackoverflow.com/questions/41025630/…Вы можете использовать свойство CSS3, чтобы сделать это довольно хорошо. Это изменяет размер, чтобы не искажать изображение (хотя это действительно масштабирует маленькие изображения). Просто обратите внимание, это еще не реализовано во всех браузерах.
источник
background-image
и включите свойство выше. Как уже упоминалось, поддержка браузера еще не очень хорошая, и существуют версии для этого браузера, т.е.-webkit-background-size
и т. д. См. модуль W3C CSS3: background-size и css3.info: background-sizeauto
чтобы сохранить соотношение сторон.Используя код, который я упомянул ...
HTML
CSS
Это дает желаемый эффект: прокручивается только контент, а не фон.
Фоновое изображение изменяется в окне просмотра браузера для любого размера экрана. Когда содержимое не соответствует области просмотра браузера, и пользователю необходимо прокрутить страницу, фоновое изображение остается фиксированным в области просмотра, пока содержимое прокручивается.
С CSS 3 кажется, что это будет намного проще.
источник
background : url("example.png");
), а затем использовать атрибут cssbackground-size:100%;
под ним, чтобы, надеюсь, масштабировать изображение до ширины экрана. Это не будет работать, не так ли? Если вы хотите поместить фоновое изображение для тела, то к тегу body следует добавить атрибут изображения<body background="example.png">
. Затем используйте CSSbackground-size:100%;
для масштабирования.CSS:
источник
html, body {...}
вместоbody {...}
.растягивает фон, чтобы заполнить весь элемент на обеих осях.
источник
Следующая часть CSS должна растягивать изображение во всех браузерах.
Я делаю это динамически для каждой страницы. Поэтому я использую PHP для генерации собственного HTML-тега для каждой страницы. Все изображения находятся в папке «image» и заканчиваются на «Bg.jpg».
Если у вас есть только одно фоновое изображение для всех страниц, то вы можете удалить
$pic
переменную, удалить экранирующие косые черты, скорректировать пути и поместить этот код в свой файл CSS.Это было протестировано с Internet Explorer 9, Chrome 21 и Firefox 14.
источник
-webkit-background-size
,-moz-background-size
и так далее. См. Developer.mozilla.org/en-US/docs/CSS/… Или вы хотите включить его в будущее как стенографическое свойство, например,background: url(img/bg-home.jpg) no-repeat center center / cover fixed;
Фактически вы можете добиться того же эффекта, что и фоновое изображение, с помощью тега img. Вам просто нужно установить его z-index ниже, чем все остальное, установить position: absolute и использовать прозрачный фон для каждого поля на переднем плане.
источник
Используйте этот CSS:
источник
Это объясняется хитростями CSS: идеальное фоновое изображение полной страницы
Демонстрация: https://css-tricks.com/examples/FullPageBackgroundImage/progressive.php
Код:
источник
Вы можете добавить этот класс в свой файл CSS.
Работает в:
background-size
, но не ключевые слова)источник
Чтобы масштабировать изображения соответствующим образом в зависимости от размера контейнера, используйте следующее:
источник
Я использую это, и это работает со всеми браузерами:
источник
Спасибо!
Но тогда она не работает для Google Chrome и Safari браузеры (растяжение работали, но высота картин было всего 2 мм!) , Пока кто - то сказал мне , что не хватает:
Так что измените это для вашей
height:100%;
строки, дает:Непосредственно перед этим новым добавленным кодом у меня есть это в моих темах Drupal Tendu
style.css
:Затем я должен сделать новый блок в Drupal с изображением, добавив
class=stretch
:Простое копирование картинки с редактором в этот блок Drupal не работает; нужно изменить редактор на неформатированный текст.
источник
Я согласен с изображением в абсолютном div с 100% шириной и высотой. Убедитесь, что вы установили 100% ширину и высоту для тела в CSS и установите поля и отступы на ноль. Другая проблема, с которой вы столкнетесь при использовании этого метода, заключается в том, что при выделении текста область выделения может иногда охватывать фоновое изображение, что приводит к нежелательному эффекту превращения полной страницы в выбранное состояние. Вы можете обойти это, используя
user-select:none
правило CSS, например, так:Опять же, Internet Explorer здесь плохой парень, потому что он не распознает опцию выбора пользователя - даже предварительный просмотр Internet Explorer 10 не поддерживает его, поэтому у вас есть возможность использовать JavaScript для предотвращения выбора фонового изображения (например, http : //www.felgall.com/jstip35.htm ) или используя метод растягивания фона CSS 3 .
Кроме того, для SEO я бы поместил фоновое изображение внизу страницы, но если фоновое изображение загружается слишком долго (то есть изначально с белым фоном), вы можете перейти к верхней части страницы.
источник
Я хотел центрировать и масштабировать фоновое изображение, не растягивая его на всю страницу, и я хотел сохранить соотношение сторон. Это сработало для меня, благодаря вариантам, предложенным в других ответах:
ВНУТРЕННЕЕ ИЗОБРАЖЕНИЕ: ------------------------
CSS ----------------------------------
источник
Я использовал комбинацию CSS-свойств background-X, чтобы добиться идеального масштабирования фонового изображения.
Это делает фон всегда покрывающим все окно браузера и остается центрированным при масштабировании.
источник
Используйте плагин Backstretch . Можно даже сделать несколько слайдов изображений. Это также работает в контейнерах. Таким образом, например, можно было бы покрыть только часть фона фоновым изображением.
Поскольку даже я смог заставить его работать, это доказывает, что это простой в использовании плагин :).
источник
Если вы хотите, чтобы содержимое было центрировано горизонтально, используйте комбинацию, подобную этой:
Это будет выглядеть красиво.
источник
Используйте этот CSS:
background-size: 100% 100%
источник
Вы можете использовать
border-image : yourimage
свойство, чтобы масштабировать изображение до границы. Даже если вы дадите фоновое изображение, поверх него будет нарисовано изображение границы.Это
border-image
свойство очень полезно, если ваша таблица стилей реализована где-то, что не поддерживает CSS 3. Если вы используете Google Chrome или Firefox, то я рекомендую самоbackground-size:cover
свойство.источник
Вы хотите добиться этого, используя только одно изображение? Потому что на самом деле вы можете сделать что-то похожее на растягивание фона, используя два изображения. PNG изображения, например.
Я делал это раньше, и это не так сложно. Кроме того, я думаю, что растяжение просто повредит качеству фона. И если вы добавите огромное изображение, это замедлит работу медленных компьютеров и браузеров.
источник
Следующее сработало для меня.
который работал, чтобы покрыть весь фон в разных измерениях
источник