Проблема масштабирования с -webkit-transform с мобильным сафари на iPad - PullRequest
5 голосов
/ 17 сентября 2010

На странице HTML ниже я масштабирую блок с помощью -webkit-transform.Преобразование масштабирует блок от его первоначального размера до двойного размера.

Это работает, как ожидается, с Safari и Chrome на OSX.

Но на IPad (как на симуляторе, так и на устройстве).), масштабирование начинается с одной точки вместо исходного размера изображения.

Как видно из примера, я установил метатег viewport, но он ничего не делает.

Кто-нибудь может подтвердить это как ошибку, и есть ли обходной путь?

<html>
<head>
  <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  <meta name="viewport" content="width=device-width, user-scalable=no initial-scale=1.0, minimum-scale=1.0" />

<style type="text/css">

#block {
    position:absolute;
    top: 0;
    left: 0;
    width: 200px;
    height: 400px;
    -webkit-transition: -webkit-transform 3s ease-out;
    background-color: blue;
  }

.zoom {
  -webkit-transform: scale(2);
}
</style>
</head>

<body>
  <div id="block" onclick="className='zoom';">The Block</div>
</body>
</html>

Ответы [ 2 ]

13 голосов
/ 20 сентября 2010

Мне удалось решить проблему самостоятельно.

Решение простое: просто убедитесь, что элемент масштабируется до исходного размера, чтобы начать с:

-webkit-transform: scale(1);

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

-webkit-transform: scale(2) !important;

Альтернативный способ решить эту проблему - выбрать элемент не по #id, а по классу (.block) или по элементу (div).Все, что имеет более низкий приоритет, чем идентификатор.

Решение следует:

<style type="text/css">

#block {
    position:absolute;
    top: 0;
    left: 0;
    width: 200px;
    height: 400px;
    -webkit-transition: -webkit-transform 3s ease-out;
    background-color: blue;
    -webkit-transform: scale(1);
  }

.zoom {
  -webkit-transform: scale(2) !important;
}
</style>
</head>

<body>
  <div id="block" onclick="className='zoom';">The Block</div>
</body>
</html>
0 голосов
/ 10 марта 2017

Я столкнулся с этим вопросом очень поздно. Решение было без использования important и путем изменения способа выбора элемента. Это связано с тем, что селектор идентификаторов более близок и мощнее селектора классов.

#block.zoom {
  -webkit-transform: scale(2);
}
...