Подтвердить что ты не робот

Почему в Safari преобразование трансляции работает неправильно?

Я часто использую этот код для центрирования a div:

.centered {
  position: fixed;
  top: 50%;
  left: 50%;
  /* bring your own prefixes */
  transform: translate(-50%, -50%);
}

Он отлично работает на Firefox, Internet Explorer и Chrome, однако не в Safari.

Какое обходное решение для центрирования изображения в веб-браузере Safari?

4b9b3361

Ответ 1

Вам нужен еще один стиль с префиксом поставщика.

.centered {
  position: fixed;
  top: 50%;
  left: 50%;
  /* bring your own prefixes */
  -webkit-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
}

Пожалуйста, обратитесь к ниже, чтобы узнать, какой браузер поддерживает то, что и какой префикс должен быть добавлен. http://caniuse.com/#feat=transforms2d

Ответ 2

Вот что работает для меня на всех проверенных браузерах и мобильных устройствах (Chrome, IE, Firefox, Safari, iPad, iphone 5 и 6, Android).

Ключ для сафари (включая устройства ios) заключается в том, чтобы добавить другие правила css для преобразования, а не только:

transform: translateY(-50%);

Вам нужно добавить к ней эту группу правил:

-ms-transform: translateY(-50%);
-webkit-transform: translateY(-50%);
-moz-transform: translateY(-50%);
-o-transform: translateY(-50%);

Вот мой рабочий код:

img.ui-li-thumb {
    position: absolute;
    left: 1px;
    top: 50%;

    -ms-transform: translateY(-50%);
    -webkit-transform: translateY(-50%);
    -moz-transform: translateY(-50%);
    -o-transform: translateY(-50%);
    transform: translateY(-50%);
}

Ответ 3

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

-webkit-transform: translate3d(-50%,-50%,0);

Иногда работает лучше с мобильным браузером.