2015-12-13 2 views
7

Я пытался использовать object-fit на нескольких изображениях, размещенных внутри article элементов, но это, похоже, не затрагивает их вообще.Объект-образ не влияет на изображения

Желаемое значение для свойства object-fit будет cover, но на данный момент ни одно из других значений не работает.

Когда я меняю его значение, они не сжимаются, не растут, не ... ничего.

Если вы видите CodePen, между двумя строками есть пробелы, и изображения не занимают одинаковое пространство/высоту (как и ожидалось с object-fit: cover).

Here's a CodePen

body{ 
 
\t margin: 0 auto; padding: 0; 
 
} 
 
main{ 
 
\t min-height: 70vh; 
 
\t padding: 0; 
 
} 
 
main > section.posts{ 
 
\t box-sizing: border-box; 
 
\t margin: 0; padding: 0; 
 
\t display: flex; 
 
\t flex-flow: row wrap; 
 
} 
 
main > section.posts > article{ 
 
    outline: 1px solid red; 
 
\t width: 22vw; 
 
\t min-height: 100vh; 
 
\t margin: 0; padding: 0; 
 
\t flex-grow: 1; 
 
\t overflow: hidden; 
 
\t box-sizing: border-box; 
 
} 
 
main > section.posts > article > img{ /* Our suspect */ 
 
    object-fit: cover; 
 
}
<!-- 
 
Basic structure of this file is 
 

 
<main> 
 
    <section.posts> 
 
     <article> (six of them) 
 
      <image> 
 
--> 
 

 
<main> 
 
    <section class="posts"> 
 
    <article> 
 
     <img src="http://41.media.tumblr.com/tumblr_m6s6d65lE11qdnz8wo1_400.jpg"> 
 
    </article> 
 

 
    <article> 
 
     <img src="http://41.media.tumblr.com/71c1fe7c899cd048fb961d3c1953411b/tumblr_nj24pvINyW1qzq8p3o1_400.jpg"> 
 
    </article> 
 

 
    <article> 
 
     <img src="http://36.media.tumblr.com/3358cb6ac8eaa0e61dffd53bc1bab93d/tumblr_n92l475hol1qlmppmo1_400.png"> 
 
    </article> 
 

 
    <article> 
 
     <img src="http://36.media.tumblr.com/9ad997ca0385a23a8d82ec919da2392c/tumblr_nwcewbFVAL1s71gzco1_400.jpg"> 
 
    </article> 
 

 
    <article> 
 
     <img src="http://41.media.tumblr.com/tumblr_mbl45xDSwj1qfn79co1_400.jpg"> 
 
    </article> 
 

 
    <article> 
 
     <img src="http://41.media.tumblr.com/1c3718e71a2aa5acaaaf4af654991c91/tumblr_nx6psaH67d1tvh80lo1_400.jpg"> 
 
    </article> 
 
    </section> 
 
</main>

+1

привет, вы можете сказать мне, что ваш вопрос/проблема? –

+0

Привет, во-первых, спасибо за ваше время :) Моя проблема в том, что объект-подгонка, кажется, вообще ничего не делает на изображениях. Когда я меняю его значение, они не сжимаются, не растут, не ... ничего .... Если вы видите CodePen, между двумя строками есть пробелы, а изображения не взять все одинаковое пространство/высоту (как и следовало ожидать с помощью 'object-fit: cover'). – P3t3r6

+1

Я никогда не пользовался объектами, и я не думаю, что это работает на моем текущем браузере Chrome Chrome, но из того, что я прочитал, похоже, это относится к самому изображению, а не к контейнеру изображения. Поэтому, если вы укажете ширину и высоту изображения, вы можете получить то, что хотите. Так что в вашем случае, возможно, создание гибкой работы с изображением вместо статьи – teynon

ответ

2

Объект посадки относится к замененной содержанию. Что это означает, когда изображение загружается на страницу, фактическое изображение заменяется. Это содержимое внутри тега изображения применяется в зависимости от свойства fit. Это не зависит от контейнера I.

Замена объекта статьи вашими метками img должна приводить к растягиванию изображений с помощью гибкой коробки и надлежащим заполнением.

http://jsfiddle.net/o2fx87ws/

body{ 
 
    \t margin: 0 auto; padding: 0; 
 
    } 
 
    main{ 
 
    \t min-height: 70vh; 
 
    \t padding: 0; 
 
    } 
 
    main > section.posts{ 
 
    \t box-sizing: border-box; 
 
    \t margin: 0; padding: 0; 
 
    \t display: flex; 
 
    \t flex-flow: row wrap; 
 
    } 
 
    main > section.posts > img{ 
 
     outline: 1px solid red; 
 
    \t width: 22vw; 
 
    \t min-height: 100vh; 
 
    \t margin: 0; padding: 0; 
 
    \t flex-grow: 1; 
 
    \t overflow: hidden; 
 
    \t box-sizing: border-box; 
 
    } 
 
    main > section.posts > img{ /* Our suspect */ 
 
     object-fit: cover; 
 
    }
<main> 
 
     <section class="posts"> 
 
    
 
      <img src="http://41.media.tumblr.com/tumblr_m6s6d65lE11qdnz8wo1_400.jpg"> 
 

 
      <img src="http://41.media.tumblr.com/71c1fe7c899cd048fb961d3c1953411b/tumblr_nj24pvINyW1qzq8p3o1_400.jpg"> 
 
     
 

 
     
 
      <img src="http://36.media.tumblr.com/3358cb6ac8eaa0e61dffd53bc1bab93d/tumblr_n92l475hol1qlmppmo1_400.png"> 
 
     
 

 
     
 
      <img src="http://36.media.tumblr.com/9ad997ca0385a23a8d82ec919da2392c/tumblr_nwcewbFVAL1s71gzco1_400.jpg"> 
 
     
 

 
     
 
      <img src="http://41.media.tumblr.com/tumblr_mbl45xDSwj1qfn79co1_400.jpg"> 
 
     
 

 
     
 
      <img src="http://41.media.tumblr.com/1c3718e71a2aa5acaaaf4af654991c91/tumblr_nx6psaH67d1tvh80lo1_400.jpg"> 
 
     
 
     </section> 
 
    </main>

2

Вот что говорит в спецификации:

5.5. Sizing Objects: the object-fit property

Свойство object-fit определяет, как содержимое заме ed элемент должен быть установлен на коробке, установленной ее используемой высотой и шириной .

Я сфокусирован на ... установлен на коробке, установленной ее используемой высотой и шириной.

Поэтому я добавил height и width атрибутов для ваших img элементов, и это, кажется, работает в настоящее время.

Revised Codepen

Чтобы удалить крошечную линию пробельных под каждым изображением, добавьте vertical-align: bottom к img. Для объяснения смотрите здесь: Mystery white space underneath image tag

В качестве примечания, вы можете рассмотреть возможность поддержки браузера для:

  1. object-fit (без поддержки IE, ограниченной поддержка Safari)
  2. main (нет поддержки IE)
  3. flexbox (считают префиксы)
+0

Все еще не работает для меня:/ И это не слишком удобно обслуживать, потому что я не буду знать размеры изображений в будущем. Спасибо вам за это :) – P3t3r6

+1

Демонстрационная работа отлично подходит для этой цели. Кроме того, во всех примерах, которые я видел (MDN, Opera и т. Д.), Изображения имеют определенную высоту и ширину. Я понимаю, что это не сработает для вас, но это может быть обязательным для работы с объектами. –

0

Я изменил контейнер, изображение и родительский контейнер для box-sizing: content-box, поскольку IMG заменяется и переключил object-fit: cover на контейнере вместо IMG. Поскольку ожидается, что img будет обрезано, высота 100vh и ширина 100% и смещение на 22hw хорошо отразились на первой четверке, похоже, немного искажены как нижние два img, не так много. object-position до сих пор не работает для меня (не делает): - \

http://codepen.io/01/pen/zrvdaz?editors=110

body{ 
    margin: 0 auto; padding: 0; 
} 
main{ 
    min-height: 70vh; 
    padding: 0; 
} 
main > section.posts{ 
    box-sizing: content-box; 
    margin: 0; padding: 0; 
    display: flex; 
    flex-flow: row wrap; 
} 
main > section.posts > article{ 
    outline: 1px solid red; 
    width: 22vw; 
    min-height: 100vh; 
    margin: 0; padding: 0; 
    flex-grow: 1; 
    overflow: hidden; 
    box-sizing:content-box; 
    object-fit: cover; 

} 
main > section.posts > article > img{ 
display: block; 
    box-sizing:content-box; 
    max-height: 100vh; 
    width: calc(100% + 22vh); 
    object-position: 100% 100%; 
} 
Смежные вопросы