<picture> на IOS 12

132
06 августа 2019, 11:50

Использую разметку с picture-тэгом для главного слайда:

<picture>
  <source srcset="media/img/slide-1--mobile.jpg" media="(max-width: 767px)">
  <img src="media/img/slide-1.jpg" alt="">
</picture>

И такие стили:

.header__slider .inner-slide img {
  position: relative;
  z-index: 1;               
  transform: translateX(0px);
  transition: transform 1s;
  vertical-align: middle;
  width: 100%;
  height: 100%;
  object-fit: fill;        
}

Везде всё работает хорошо, кроме safari(IOS 12) на планшетах. Даже в старых IOS(9+) рендеринг происходит корректно. Но в 12-й версии часть изображения просто "обрезается". Выглядит это так:

Теперь о забавном: происходит это только в портретном режиме(в пейзажном стили изображения не меняются). Рамка у img-тэга решает проблему. Рамка с цветом 'transparent' – нет. Рамку я себе позволить не могу. Во всех других браузерах отрисовывается корректно(даже в edge). Префиксы ставить пробовал – не помогло. Игнорировать этот баг не могу. Может кто сталкивался. Уже всё перепробовал.

upd: насчёт 11 IOS погорячился, там через раз отрисовывается. Так же только в портретной ориентации проблема. А вот скриншот с IOS 10

Answer 1

Все нервы себе извёл. Оказалось дело было в картинке, а не в коде: при замене на другое ЛЮБОЕ изображение, всё прекрасно отображается. Старое изображение не рендерилось даже при обычном img-тэге.

upd: Теперь точно докопался до сути. Сначала менял "проблемную картинку" на другие изборажения – всё работало. Но как только поставил тяжёлое – опять часть картинки резалась. Вообщем, решение оказалось довольно банальным: отложил инициализацию слайдера на onload изображений и всё стало идеально.

READ ALSO
как загрузить value в input_е своим значением

как загрузить value в input_е своим значением

заблудился в 2-х соснах: почему value в input не грузится? Внутри функции value обновляется, а при выходе из функции в поле value пустоНе пойму в чем ошибка

109
Выравнивание элементов с разным line-height

Выравнивание элементов с разным line-height

Взялся сверстать макет для практикиОпыт в верстке небольшой

113
Можно ли лимитировать вызов Action во времени?

Можно ли лимитировать вызов Action во времени?

Можно ли сделать так, что бы Invoke не приводил к инвоку екшна если не прошло, скажем, 100ms?

135