Есть ли способ заставить фон CSS растягивать или масштабировать, чтобы заполнить его контейнер?
653
Для современных браузеров вы можете сделать это, используя background-size
:
body {
background-image: url(bg.jpg);
background-size: cover;
}
cover
означает растяжение изображения по вертикали или по горизонтали, чтобы оно никогда не повторялось.
Это будет работать для Safari 3 (или более поздней версии ), Chrome, Opera 10+, Firefox 3.6+ и Internet Explorer 9 (или более поздней версии).
Чтобы он работал с более низкими версиями Internet Explorer, попробуйте следующие CSS:
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.myBackground.jpg', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='myBackground.jpg', sizingMethod='scale')";
Используйте свойство CSS 3
background-size
:Это доступно для современных браузеров, начиная с 2012 года.
источник
background-size: 100% 100%;
желаемый эффект, на который рассчитывал, если это кому-то еще поможет.cover
иcontain
на MDNМасштабирование изображения с помощью CSS не совсем возможно, но аналогичного эффекта можно добиться следующим образом.
Используйте эту разметку:
со следующим CSS:
и ты должен быть готов!
Для того, чтобы масштабировать изображение до полного обтекания и сохранить соотношение сторон, вы можете сделать это вместо этого:
Это работает довольно хорошо! Однако если обрезается одно измерение, оно будет обрезано только на одной стороне изображения, а не будет равномерно обрезано с обеих сторон (и отцентрировано). Я протестировал его в Firefox, Webkit и Internet Explorer 8.
источник
margin: 0 auto
на.stretch
. Только установивwidth
илиheight
, соотношение сторон остается неизменным. Попробуйте использоватьmax-width
иmax-height
ограничить коэффициент масштабирования ...Используйте атрибут background-size в CSS3:
РЕДАКТИРОВАТЬ: Modernizr поддерживает обнаружение поддержки размера фона . Вы можете использовать обходной путь JavaScript, написанный для работы, однако вам это нужно и загружать его динамически, когда нет поддержки. Это обеспечит поддержку кода, не прибегая к навязчивым хакерским работникам CSS для определенных браузеров.
Лично я использую скрипт для работы с ним, используя jQuery, это адаптация imgsizer . Поскольку в большинстве конструкций, которые я сейчас использую, ширина% используется для разметки флюидов на устройствах, есть небольшая адаптация к одному из циклов (с учетом размеров, которые не всегда равны 100%):
РЕДАКТИРОВАТЬ: Вы также можете быть заинтересованы в jQuery CSS3 Finaliz [s] e .
источник
Попробуйте статью background-size . Если вы используете все перечисленное ниже, оно будет работать в большинстве браузеров, кроме Internet Explorer.
источник
preserveAspectRatio="none"
в SVG. Подробнее об этом здесь . Демо здесь .Не сейчас. Он будет доступен в CSS 3 , но потребуется время, пока он не будет реализован в большинстве браузеров.
источник
Работает в:
Кроме того, вы можете попробовать это для решения т.е.
Благодарим эту статью Криса Койера http://css-tricks.com/perfect-full-page-background-image/
источник
background-size: cover
только с префиксами браузера и решением IEОдним словом: нет. Единственный способ растянуть изображение с помощью<img>
тега. Вы должны быть творческими.Раньше это было правдой в 2008 году, когда был написан ответ. Сегодня современные браузеры поддерживают,
background-size
что решает эту проблему. Помните, что IE8 не поддерживает это.источник
Определить «растянуть и масштабировать» ...
Если у вас есть растровый формат, как правило, не здорово (графически) растягивать его и вытягивать. Вы можете использовать повторяющиеся узоры, чтобы создать иллюзию того же эффекта. Например, если у вас есть градиент, который становится светлее в нижней части страницы, тогда вы будете использовать графику шириной в один пиксель и такой же высоты, что и ваш контейнер (или, желательно, больше, чтобы учесть масштабирование), а затем разместите его по всей ширине. стр. Точно так же, если градиент пробегает по странице, он будет на один пиксель в высоту и шире вашего контейнера и будет повторяться по странице.
Обычно, чтобы создать иллюзию растяжения, чтобы заполнить контейнер, когда контейнер увеличивается или уменьшается, вы делаете изображение больше, чем контейнер. Любое перекрытие не будет отображаться за пределами контейнера.
Если вы хотите получить эффект, основанный на чем-то похожем на коробку с изогнутыми краями, то вы бы прикрепили левую сторону коробки к левой стороне контейнера с достаточным перекрытием, чтобы (в пределах разумного) не зависимо от того, насколько большой контейнер, он никогда не будет заканчивается фон, а затем вы накладываете изображение с правой стороны рамки с изогнутыми краями и размещаете его справа от контейнера. Таким образом, по мере того, как контейнер сжимается или растет, эффект изогнутой коробки, по-видимому, уменьшается или увеличивается вместе с ним - на самом деле это не так, но он создает иллюзию того, что происходит.
Что касается действительно уменьшения и увеличения изображения в контейнере, вам потребуется использовать некоторые приемы наложения слоев, чтобы изображение работало в качестве фона, и некоторый JavaScript, чтобы изменить его размер в контейнере. Там нет текущего способа сделать это с помощью CSS ...
Боюсь, если вы используете векторную графику, вы выходите за рамки моего опыта.
источник
Это то, что я сделал из этого. В классе растяжки я просто изменил высоту на
auto
. Таким образом, фоновое изображение всегда будет иметь одинаковый размер с шириной экрана, а высота всегда будет иметь правильный размер.источник
Добавьте
background-attachment
строку:источник
Я хотел бы отметить, что это эквивалентно выполнению:
источник
Другим отличным решением для этого является Backstretch Srobbin, который можно применить к телу или любому элементу на странице - http://srobbin.com/jquery-plugins/backstretch/
источник
Попробуй это
http://jsfiddle.net/5LZ55/4/
источник
Дополнительным советом для читера SolidSmile является масштабирование (пропорциональное изменение размера) путем установки ширины и использования авто для высоты.
Пример:
источник
Используйте
border-image : yourimage
свойство, чтобы установить ваше изображение и масштабировать его до всей границы вашего экрана или окна.источник