Масштабное фоновое изображение

Я хотел бы масштабировать вверх и вниз фоновое изображение на моей странице. Я пробовал несколько вещей, но ничего, похоже, не работает так, как я хочу.:( URL моей страницы http://quaaoutlodge.com/drupal-7.14/ и для каждой ссылки есть другое фоновое изображение. Я знаю размер и качество изображений нужно будет оптимизировать, но я сначала хочу выяснить его техническую часть. Если кто-то угодит coudl помочь в получении этого?

Большое спасибо! Рон

Ответ 1

То же фоновое изображение на каждой странице

Если вы хотите, чтобы фоновое изображение изменяло размер и заполняло все пространство окна, независимо от размера, затем используйте этот CSS,

html { 
    background: url(images/bg.jpg) no-repeat center center fixed; 
    background-size: cover;
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
}

Различные фоновые изображения на каждой странице

Если вам нужно другое фоновое изображение для каждой страницы,

HTML

<div id="bg">
    <img src="<?=$imgsrc;?>" alt="">
</div>

CSS

#bg {
    position:fixed; 
    top:-50%; 
    left:-50%; 
    width:200%; 
    height:200%;
}

#bg img {
    position:absolute; 
    top:0; 
    left:0; 
    right:0; 
    bottom:0; 
    margin:auto; 
    min-width:50%;
    min-height:50%;
}

Источник: CSS-Tricks

Ответ 2

Способ достижения этого можно найти на MDN:

.foo {
  background-image: url(bg-image.png);

  -webkit-background-size: 100% 100%;           /* Safari 3.0 */
     -moz-background-size: 100% 100%;           /* Gecko 1.9.2 (Firefox 3.6) */
       -o-background-size: 100% 100%;           /* Opera 9.5 */
          background-size: 100% 100%;           /* Gecko 2.0 (Firefox 4.0) and other CSS3-compliant browsers */

  -moz-border-image: url(bg-image.png) 0;    /* Gecko 1.9.1 (Firefox 3.5) */
}

Ошибка IE:

-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='path_relative_to_the_HTML_file', sizingMethod='scale')";

из https://developer.mozilla.org/en-US/docs/Web/CSS/background-size

Ответ 3

Приятно видеть, что html background-image используется хорошо. Поскольку некоторые разработчики зависят от css для заднего края, чтобы поддерживать обратную совместимость, многие причуды существуют для других css3 совместимых браузеров. Как background:cover в более старых версиях Safari (< 4.05), который не работает. В этом случае мы можем использовать более старый css3 резерв поставщика, как показано

html { 
    background: url(images/bg.jpg) no-repeat center center fixed; 
    background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    -webkit-backgound-size:100% 100%; /* early css3 implementation */
    -webkit-background-size:cover;
}

И если случайно вы хотите получить разные фоновые изображения для разных страниц в чистом css, отпустите

html#bg1 {backrgound-image:url(images/bg1.jpg);}
html#bg2 {background-image:url(images/bg2.jpg);}

Но если вы не можете дать тэгу <html> id или class, вам может потребоваться некоторое javascript. Затем вы можете использовать другое фоновое изображение для каждой страницы в элементе <html>, и это именно то, что необходимо. Это, похоже, отлично работает с тегом html. Некоторые браузеры игнорируют css для background-image при использовании на html. Тег body менее темпераментен. Это может быть лучшим решением, чем метод на основе php. Например:

<script>
    document.getElementsByTagName('html')[0].style.backgroundImage='url(images/bg3.jpg)';
</script>

html css для фонового размера будет продолжать применяться и корректно будет отображаться в разных версиях браузера. Обратите внимание, однако, что более старый Safari выдает ошибку на javascript, которая использует пустой URL-адрес, например, чтобы очистить фоновое изображение, например.

<script> /*Causes Error Safari 4*/
    document.getElementsByTagName('html')[0].style.backgroundImage='url()';
</script>

Ошибка обычно останавливает выполнение javascript без указания причины. Вместо этого нам нужно использовать style.backgroundImage='none';

Ответ 4

Используйте медиа-запрос в CSS, чтобы указать фоновое изображение для разных размеров экрана:

@media all and (max-width: 699px) and (min-width: 520px) {
background-image:url('rightsizebackground.jpg');
}