2015-08-05 4 views
3

Я хочу изменить позицию элемента HTML из статического в фиксированное на 50% и оставить 50% окна браузера, но код просто приводит к изменению цвета фона!Как изменить позицию элемента CSS с анимацией

div { 
    width: 100px; 
    height: 100px; 
    background-color: red; 
    position: static; 
    top: auto; 
    left: auto; 
    animation-name: example; 
    animation-duration: 4s; 
} 

@keyframes example { 
    from { 
     background-color: red; 
     position: static; 
     top: auto; 
     left: auto; 
    } 
    to { 
     background-color: yellow; 
     position: fixed; 
     top: 50%; 
     left: 50%; 
    } 
} 

ответ

1

я нашел ответ через помощь 'Vangel TZO':

div { 
    width: 100px; 
    height: 100px; 
    background-color: red; 
    animation-name: example; 
    animation-duration: 4s; 
} 

@keyframes example { 
    from { 
     background-color: red; 
    } 
    to { 
     background-color: yellow; 
     transform: translate(50vw, 50vh); 
    } 
} 
1

Короткий ответ: You can't animate position.

Вместо применения position: fixed через ключевые кадры попытаться добавить класс fixed или что-то с помощью JavaScript.

Пример: https://jsfiddle.net/6Ldqhoce/

Alternative можно переместить элемент с transform: translate, но это не будет исправлено.

+0

как множество {преобразование: перевод} в процентах для браузера Dimention? –

+1

Я действительно не пытался использовать его раньше с размером браузера, но я полагаю, что это может работать 'transform: translate (50vw, 50vh)' –

1

Вы не изменение position можете с помощью CSS-animationposition, потому что это НЕанимируемого свойства.

List of animatable properties.

Однако this скрипка может вам помочь.

0

Вы не можете изменить значение позиции css с помощью анимации css.

Вы можете сделать это с помощью JQuery

примера с парением, вы можете сделать по вашему выбору.

Jquery

С использованием "Css"

$(".div_name").hover(function(){ 
    $(this).css("position", "static"); 
    }, function(){ 
    $(this).css("position", "fixed"); 
}); 

С использованием "Animate"

$(".div_name").hover(function(){ 
     $(this).animate({"position":"static"}, 1000); 
     }, function(){ 
     $(this).animate({"position":"fixed"}, 1000); 
    }); 
+0

i khow как это сделать с помощью jQuery, но я хочу использовать CSS. –

+0

Тогда я могу только сказать: в настоящее время у нас нет возможности сделать это с помощью css. – wikijames

Смежные вопросы