2015-07-15 2 views
0

Я разработчик, поэтому CSS не моя сильная сторона и анимации определенно не так.Css анимация не работает как она должна

Однако я пытаюсь создать простую анимацию - которая в настоящее время работает в какой-то степени - только не так, как мне это нужно, чтобы:

&:before 
    { 
     background-color:rgba(255,255,255,0.3); 
     height:100%; 
     transform:scale(0); 
     width:100%; 
    } 

    &:hover, &:focus, &:active 
    { 
     &::before 
     { 
      .animation(ripple .4s ease-out); 

      .keyframes(ripple; 
      { 
       100% 
       { 
        .transform(scale(1)); 
       } 
      }); 
     } 
    } 

Идея заключается в том, что при наведении курсора мыши, фокус, или активных состояний фоновая шкала выходит из центра - это и есть.

Однако, когда анимация завершена - и размер фона полностью, он возвращается в исходное состояние (исчезает), пока все еще находится в режиме наведения.

Какие изменения необходимо сделать для обеспечения того, чтобы фон оставался видимым во время фокусировки?

+0

Попробуйте добавить режим анимации-заливки: вперед, чтобы анимация сохранила состояние на последнем ключевом кадре. Более того, для этого случая вам лучше использовать 'переход' вместо' анимации'. – Harry

+0

@ Харри - отлично это работает в вопросе, который я задал, но как только фокус удаляется, фон просто исчезает. Можно ли отменить его так же, как и поэтапно - другими словами, масштабирование от 1 до 0? –

+0

Да, я ожидал, что именно здесь «переход» помогает вместо анимации. Transition обеспечивает двухстороннюю операцию по умолчанию, тогда как «анимация» не работает. Взгляните на [этот ответ] (http://stackoverflow.com/questions/26103506/css3-animation-on-link-hover-not-working-properly/26103639#26103639) и [этот] (http:// /stackoverflow.com/questions/30450535/css-animation-working-adding-class-but-not-removing-the-class/30451747#30451747). – Harry

ответ

0

вы можете использовать forwards и inbricate в transition с animation заморозить его на некоторое время:

a, 
 
a:before, 
 
a:after { 
 
    display: inline-block; 
 
} 
 
a:before, 
 
a:after { 
 
    content: "\\o/"; 
 
    transform: scale(0); 
 
    transition: 99999s; 
 
    /* delay as much as possible return to normal */ 
 
} 
 
a:hover:before, 
 
a:hover:after { 
 
    transition: 0s;/* reset transition timing */ 
 
    animation: grow 1s forwards; 
 
    color: green; 
 
} 
 
@keyframes grow { 
 
    100% { 
 
    transform: scale(1); 
 
    } 
 
} 
 
html { 
 
    display: flex; 
 
    height: 100%; 
 
    width: 100%; 
 
    font-size: 5em; 
 
} 
 
body { 
 
    margin: auto; 
 
}
<a href="#">link</a>

codepen to play with.

+0

Не уверен, что это связано с моей версией браузера (я нахожусь на старом Chrome v38), но при наведении курсора все это сразу исчезает. – Harry

+0

@Harry, вы можете попробовать попробовать с префиксом поставщика, иначе возможно, что анимация переопределяет свойства перехода. Сохраняется ли анимация на 100% при парях или она исчезает после завершения? –

+0

Пробовал с префиксом бесплатно уже. Анимация остается на 100% при падении, но в тот момент, когда я нахожусь, она исчезает. – Harry

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