Использование CSS translateY()

#css #translation

#css #перевод

Вопрос:

Я перемещаю некоторый элемент из (высота браузера высота элемента) пикселей в верхнюю часть браузера на -50 пикселей браузера, используя ключевые кадры CSS, и это работает, но проблема в том, что он отстает, и я хорошо знаю, что использование translateY решит эту проблему.

Теперь предположим, что у меня есть CSS следующим образом.

 .bubble
{
    -webkit-transition: -webkit-transform 1s ease-in-out;
}

.bubble.move
{
    -webkit-transform: translateY(-50px);
}
  

Поскольку элемент находится ниже экрана браузера (высота браузера высота элемента) в пикселях, и я хочу, чтобы он перемещался в верхней части экрана на -50 пикселей, это не работает. Он просто перемещает элемент из его текущей позиции в -50px той текущей позиции, которая не предназначена. Как я могу попросить переходы переходить на -50px браузера, а не на его элемент?

Ответ №1:

Перевод — это не то, что вы ищете. Вы хотите расположить элемент абсолютно и поместить переход в свойство top. Что-то вроде:

 .bubble {
  position:absolute;
  top:100%;
  transition:top 1s ease-in-out;
}
.bubble.move {
  top:50px;
}
  

Единственная плохая часть этого подхода заключается в том, что тело должно быть относительным родительским элементом .bubble . Я пропустил префиксы поставщиков, потому что я их ненавижу.

Ответ №2:

Вы пробовали позиционировать элемент абсолютно, а не относительно?

Комментарии:

1. Да, никогда не пробовал с относительной позицией, и она просто абсолютна с самого начала

Ответ №3:

Используйте javascript для его вычисления и установки css также с помощью javascript

Комментарии:

1. Это вариант, но у меня сложилось впечатление, что только CSS может это сделать

2. Я задавал тот же вопрос некоторое время назад, и вы можете перемещать элемент только на x пикселей. вы не можете указать ему перейти к определенным координатам. (что действительно жаль). Так что пока, пока не будет выпущен css4, вам придется использовать javascript :).

3. и еще одна вещь, есть ли разница между translateY() и translate3d()? Если используется последнее, как мы можем попросить его игнорировать значения X и Z для работы Y?

4. просто установите для них значение 0. но на самом деле разницы нет. translateY — это всего лишь подраздел translate3D.