2015-03-04 4 views
1

У меня есть трудное масштабирование моего изображения с помощью css и html. CSS-код выглядит следующим образом:Масштабирование фонового изображения с помощью css и html

@media (max-width: 979px) { 
.header-wrapper { 
height: 388px; 
background: url("../images/taikuri.jpg") no-repeat; 
-webkit-background-size: cover; 
-moz-background-size: cover; 
-o-background-size: cover; 
background-size: cover; 

}

Тогда HTML выглядит следующим образом:

<header id="header" class="header"> 
<div class="header-wrapper"> <img src="./imag/taikuri.jpg" 
alt="taikureita" width="2050" height="812"/> 

Я хотел бы, чтобы масштабировать изображение каким-то образом получить более быструю скорость загрузки. Испытание страницы GTmetrix дает мне этот совет: Следующие изображения изменяются в формате HTML или CSS. Обслуживание масштабированных изображений может сэкономить 49.1KiB (уменьшение на 69%).

Страница находится на kim wist, и я не смог найти правильный способ сделать это, поэтому я должен попросить о помощи.

+1

Использование CSS не уменьшает размер файла. Он сжимает отображаемое изображение в браузере после того, как файл уже загружен. Для «[адаптивных изображений] (http://adaptive-images.com/)» вам может потребоваться решение на стороне сервера. – showdev

+1

Я полагаю, что предложение состоит в том, чтобы не использовать HTML/CSS для его изменения, но на самом деле подавать предварительно измененное изображение. Как и в случае с 3 изображениями, один - 100x200, второй - 200x400, третий - 400x800. Вы должны обслуживать меньший, а не обслуживать третий, и использовать CSS для изменения размера как 100x200 в любом случае. –

+0

Я ДУМАЮ, Я понимаю, почему вопрос получил вниз. Возможно, перефразирование вопроса на что-то вроде: «Я не понимаю разницы между масштабированием размера изображения в контексте браузера с помощью CSS/HTML и масштабированием размера изображения в контексте его естественных размеров для достижения меньшего размера файла «... кроме того, как я только что сформулировал это, это говорит о том, что я уже знаю ответ. Итак ... Я испытываю соблазн сказать, что это правильный вопрос, поскольку он действительно спрашивает: «В чем разница между« Размер файла »и« Размер дисплея ». –

ответ

2

Что вы пытаетесь сделать, это уменьшить размер файла изображения, чтобы он загружался быстрее.

Ваше решение, опубликованное в вашем вопросе, пытается уменьшить ширину и высоту изображения, поэтому оно отображается на экране как меньшая ширина и высота. Тем не менее, все тот же образ со всеми его массивными размерами по-прежнему загружается. Браузер просто уменьшает его внешний вид.

И, глядя на свой код, вы устанавливаете фоновое изображение на то же, что и изображение, которое вы написали в свой html. Это не имеет значения, так как изображение будет кэшироваться, но просто вы знаете, что вы в основном встраиваете свой образ дважды.

Подумайте об этом так: я 200 фунтов. Если я возьму себе фотографию и скрою ее, я по-прежнему получаю 200 фунтов в реальной жизни. Это то, что вы пытаетесь сделать. НО ... если я потеряю вес, тогда я меньше в реальной жизни и не буду болеть так сильно, если я буду сидеть на вас. Вот что вы спрашиваете, как это сделать. Имеют смысл?

В этом случае откройте изображение в фотошопе, сделайте копию, измените ее размер до меньшей ширины (вы можете сделать это из изображения> Размер изображения) с включенным контролем соотношения сторон. Загрузите это изображение и используйте его вместо этого.

Другой, лучше вариант заключается в

  1. Удалить ваш <img> из вашего HTML, как это дублируется и огромный. Вы можете воссоздать этот эффект масштабирования в css.
  2. Настройте дополнительные медиа-запросы для использования разных изображений при разных ширинах носителей.

Я вижу, вы уже используете это большое изображение с максимальной шириной 979 пикселей. Если это так, настройте изображение шириной 979px и используйте его в этом запросе на медиа. Если вам нужно увеличить размер, создайте более крупное изображение с более высоким сжатием jpg и создайте более крупный медиа-запрос для его обработки, например, следующий код (обратите внимание, что я переименовал ваше изображение в качестве примеров настройки разных изображений):

@media (max-width: 979px) { 
    .header-wrapper { 
     height: 388px; 
     background: url("../images/taikuri_979w.jpg") no-repeat; 
     -webkit-background-size: cover; 
     -moz-background-size: cover; 
     -o-background-size: cover; 
     background-size: cover; 
    } 
} 

Вот второй медиа-запрос с большим изображением.Обратите внимание, я добавил обивка-топ в процентах с мин высоты так, чтобы верхняя область будет масштабироваться соответственно ширине браузера):

@media (min-width: 1000px) { 
    .header-wrapper { 
     height: auto; 
     min-height:388px; 
     background: url("../images/taikuri_really_big.jpg") no-repeat; 
     -webkit-background-size: cover; 
     -moz-background-size: cover; 
     -o-background-size: cover; 
     background-size: cover; 
     padding-top:35%; 
    } 
} 

Если у вас нет Photoshop, вы можете изменить размер вашего image, используя такую ​​услугу: http://www.picresize.com/ Я никогда не использовал это, но похоже, что он делает то, что вы хотите. Кроме того, если вы находитесь на Mac, приложение Preview имеет размер изображения. Не уверен, что может быть на Windows или Linux, хотя, извините!

+1

См. Ниже ответ на несколько других вариантов изменения размера сжатия изображений, потому что они, вероятно, хороши. Опять же, я их никогда не использовал –

2

Масштабирование изображения с помощью CSS не даст лучших скоростей загрузки. Причина этого заключается в том, что ваш браузер не загружает изображение с размером, указанным в CSS. Браузер загружает изображение в полном размере, а затем отображает изображение с любым размером, указанным в коде.

Вы должны взглянуть на tinypng.com или compressor.io для сжатия вашего изображения. Это поможет вам с загрузкой. Сжатие изображения уменьшает размер файла. Это займет меньше места на жестком диске, а также будет меньше для сервера для передачи пользователю.

+0

Хотя это абсолютно правильно, вероятно, это комментарий к исходному вопросу, поскольку суть ответа - это ссылка на два инструмента без объяснения претензии " Масштабирование изображения с помощью HTML или CSS не даст лучшей скорости загрузки вообще ». –

+0

@JoshBurgess Спасибо за головы, я довольно недавно помог людям в Stackoverflow. Добавил небольшое объяснение к моему ответу :) –

0

Вы можете использовать javascript для загрузки изображения после загрузки страницы и поместите что-то подобное до тега </body>.

<script> 
var width = document.getElementById('header').clientWidth; 
if(width>=1000) 
{ 
    document.getElementById("imageid").src="./images/BigImage.jpg"; 
} 
if(width>500 && width<1000) 
{ 
    document.getElementById("imageid").src="./images/MediumImage.jpg"; 
} 
if(width<=500) 
{ 
    document.getElementById("imageid").src="../images/SmallImage.jpg"; 
} 
</script> 

Конечно, это предполагает, что в браузере включен javascript.

Смежные вопросы