javascript - Firefox CSS animations not working? -


check out path-like menu http://jsfiddle.net/u7cjj/1/ , click on orange button see menu fan out. effect accomplished toggling class using jquery , css animations.

the demo works in webkit-based browsers not on firefox. class toggled on click no menu items show. firefox not support type of css animations? there way make work using polyfill or javascript/jquery fallback?

css below:

/* global reset ------------------------------------------------------------------------------*/ /* http://meyerweb.com/eric/tools/css/reset/    v2.0 | 20110126    license: none (public domain) */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {   margin: 0;   padding: 0;   border: 0;   font-size: 100%;   font: inherit;   vertical-align: baseline; }  /* html5 display-role reset older browsers */ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {   display: block; }  body {   line-height: 1; }  ol, ul {   list-style: none; }  blockquote, q {   quotes: none; }  blockquote:before, blockquote:after, q:before, q:after {   content: '';   content: none; }  table {   border-collapse: collapse;   border-spacing: 0; }  .force3d, .animation-flyout, section.container div.button.expanded.cam, section.container div.button.expanded.friend, section.container div.button.expanded.location, section.container div.button.expanded.music, section.container div.button.expanded.comment, section.container div.button.expanded.status, .animation-flyin, section.container div.button.collapsed.cam, section.container div.button.collapsed.friend, section.container div.button.collapsed.location, section.container div.button.collapsed.music, section.container div.button.collapsed.comment, section.container div.button.collapsed.status {   -webkit-backface-visibility: hidden;   -webkit-perspective: 1000;   -webkit-transform-style: preserve-3d; }  .animation-flyout, section.container div.button.expanded.cam, section.container div.button.expanded.friend, section.container div.button.expanded.location, section.container div.button.expanded.music, section.container div.button.expanded.comment, section.container div.button.expanded.status {   -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.3);   -moz-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.3);   animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.3);   -webkit-animation-fill-mode: both;   -moz-animation-fill-mode: both;   animation-fill-mode: both; }  .animation-flyin, section.container div.button.collapsed.cam, section.container div.button.collapsed.friend, section.container div.button.collapsed.location, section.container div.button.collapsed.music, section.container div.button.collapsed.comment, section.container div.button.collapsed.status {   -webkit-animation-timing-function: cubic-bezier(0.6, -0.3, 0.735, 0.045);   -moz-animation-timing-function: cubic-bezier(0.6, -0.3, 0.735, 0.045);   animation-timing-function: cubic-bezier(0.6, -0.3, 0.735, 0.045);   -webkit-animation-fill-mode: both;   -moz-animation-fill-mode: both;   animation-fill-mode: both; }  @-webkit-keyframes flyout-cam {   0% {     -webkit-transform: translate3d(0, 0, 0) rotate(0deg);     -moz-transform: translate3d(0, 0, 0) rotate(0deg);     -ms-transform: translate3d(0, 0, 0) rotate(0deg);     -o-transform: translate3d(0, 0, 0) rotate(0deg);     transform: translate3d(0, 0, 0) rotate(0deg); }    100% {     -webkit-transform: translate3d(0px, -136px, 0) rotate(360deg);     -moz-transform: translate3d(0px, -136px, 0) rotate(360deg);     -ms-transform: translate3d(0px, -136px, 0) rotate(360deg);     -o-transform: translate3d(0px, -136px, 0) rotate(360deg);     transform: translate3d(0px, -136px, 0) rotate(360deg); } }  @-webkit-keyframes flyout-friend {   0% {     -webkit-transform: translate3d(0, 0, 0) rotate(0deg);     -moz-transform: translate3d(0, 0, 0) rotate(0deg);     -ms-transform: translate3d(0, 0, 0) rotate(0deg);     -o-transform: translate3d(0, 0, 0) rotate(0deg);     transform: translate3d(0, 0, 0) rotate(0deg); }    100% {     -webkit-transform: translate3d(42px, -129px, 0) rotate(360deg);     -moz-transform: translate3d(42px, -129px, 0) rotate(360deg);     -ms-transform: translate3d(42px, -129px, 0) rotate(360deg);     -o-transform: translate3d(42px, -129px, 0) rotate(360deg);     transform: translate3d(42px, -129px, 0) rotate(360deg); } }  @-webkit-keyframes flyout-location {   0% {     -webkit-transform: translate3d(0, 0, 0) rotate(0deg);     -moz-transform: translate3d(0, 0, 0) rotate(0deg);     -ms-transform: translate3d(0, 0, 0) rotate(0deg);     -o-transform: translate3d(0, 0, 0) rotate(0deg);     transform: translate3d(0, 0, 0) rotate(0deg); }    100% {     -webkit-transform: translate3d(80px, -110px, 0) rotate(360deg);     -moz-transform: translate3d(80px, -110px, 0) rotate(360deg);     -ms-transform: translate3d(80px, -110px, 0) rotate(360deg);     -o-transform: translate3d(80px, -110px, 0) rotate(360deg);     transform: translate3d(80px, -110px, 0) rotate(360deg); } }  @-webkit-keyframes flyout-music {   0% {     -webkit-transform: translate3d(0, 0, 0) rotate(0deg);     -moz-transform: translate3d(0, 0, 0) rotate(0deg);     -ms-transform: translate3d(0, 0, 0) rotate(0deg);     -o-transform: translate3d(0, 0, 0) rotate(0deg);     transform: translate3d(0, 0, 0) rotate(0deg); }    100% {     -webkit-transform: translate3d(110px, -80px, 0) rotate(360deg);     -moz-transform: translate3d(110px, -80px, 0) rotate(360deg);     -ms-transform: translate3d(110px, -80px, 0) rotate(360deg);     -o-transform: translate3d(110px, -80px, 0) rotate(360deg);     transform: translate3d(110px, -80px, 0) rotate(360deg); } }  @-webkit-keyframes flyout-comment {   0% {     -webkit-transform: translate3d(0, 0, 0) rotate(0deg);     -moz-transform: translate3d(0, 0, 0) rotate(0deg);     -ms-transform: translate3d(0, 0, 0) rotate(0deg);     -o-transform: translate3d(0, 0, 0) rotate(0deg);     transform: translate3d(0, 0, 0) rotate(0deg); }    100% {     -webkit-transform: translate3d(129px, -42px, 0) rotate(360deg);     -moz-transform: translate3d(129px, -42px, 0) rotate(360deg);     -ms-transform: translate3d(129px, -42px, 0) rotate(360deg);     -o-transform: translate3d(129px, -42px, 0) rotate(360deg);     transform: translate3d(129px, -42px, 0) rotate(360deg); } }  @-webkit-keyframes flyout-status {   0% {     -webkit-transform: translate3d(0, 0, 0) rotate(0deg);     -moz-transform: translate3d(0, 0, 0) rotate(0deg);     -ms-transform: translate3d(0, 0, 0) rotate(0deg);     -o-transform: translate3d(0, 0, 0) rotate(0deg);     transform: translate3d(0, 0, 0) rotate(0deg); }    100% {     -webkit-transform: translate3d(136px, 0px, 0) rotate(360deg);     -moz-transform: translate3d(136px, 0px, 0) rotate(360deg);     -ms-transform: translate3d(136px, 0px, 0) rotate(360deg);     -o-transform: translate3d(136px, 0px, 0) rotate(360deg);     transform: translate3d(136px, 0px, 0) rotate(360deg); } }  @-webkit-keyframes flyin-cam {   0% {     -webkit-transform: translate3d(0px, -136px, 0) rotate(0deg);     -moz-transform: translate3d(0px, -136px, 0) rotate(0deg);     -ms-transform: translate3d(0px, -136px, 0) rotate(0deg);     -o-transform: translate3d(0px, -136px, 0) rotate(0deg);     transform: translate3d(0px, -136px, 0) rotate(0deg); }    40% {     -webkit-transform: translate3d(0px, -136px, 0) rotate(360deg);     -moz-transform: translate3d(0px, -136px, 0) rotate(360deg);     -ms-transform: translate3d(0px, -136px, 0) rotate(360deg);     -o-transform: translate3d(0px, -136px, 0) rotate(360deg);     transform: translate3d(0px, -136px, 0) rotate(360deg); }    100% {     -webkit-transform: translate3d(0, 0, 0) rotate(360deg);     -moz-transform: translate3d(0, 0, 0) rotate(360deg);     -ms-transform: translate3d(0, 0, 0) rotate(360deg);     -o-transform: translate3d(0, 0, 0) rotate(360deg);     transform: translate3d(0, 0, 0) rotate(360deg); } }  @-webkit-keyframes flyin-friend {   0% {     -webkit-transform: translate3d(42px, -129px, 0) rotate(0deg);     -moz-transform: translate3d(42px, -129px, 0) rotate(0deg);     -ms-transform: translate3d(42px, -129px, 0) rotate(0deg);     -o-transform: translate3d(42px, -129px, 0) rotate(0deg);     transform: translate3d(42px, -129px, 0) rotate(0deg); }    40% {     -webkit-transform: translate3d(42px, -129px, 0) rotate(360deg);     -moz-transform: translate3d(42px, -129px, 0) rotate(360deg);     -ms-transform: translate3d(42px, -129px, 0) rotate(360deg);     -o-transform: translate3d(42px, -129px, 0) rotate(360deg);     transform: translate3d(42px, -129px, 0) rotate(360deg); }    100% {     -webkit-transform: translate3d(0, 0, 0) rotate(360deg);     -moz-transform: translate3d(0, 0, 0) rotate(360deg);     -ms-transform: translate3d(0, 0, 0) rotate(360deg);     -o-transform: translate3d(0, 0, 0) rotate(360deg);     transform: translate3d(0, 0, 0) rotate(360deg); } }  @-webkit-keyframes flyin-location {   0% {     -webkit-transform: translate3d(80px, -110px, 0) rotate(0deg);     -moz-transform: translate3d(80px, -110px, 0) rotate(0deg);     -ms-transform: translate3d(80px, -110px, 0) rotate(0deg);     -o-transform: translate3d(80px, -110px, 0) rotate(0deg);     transform: translate3d(80px, -110px, 0) rotate(0deg); }    40% {     -webkit-transform: translate3d(80px, -110px, 0) rotate(360deg);     -moz-transform: translate3d(80px, -110px, 0) rotate(360deg);     -ms-transform: translate3d(80px, -110px, 0) rotate(360deg);     -o-transform: translate3d(80px, -110px, 0) rotate(360deg);     transform: translate3d(80px, -110px, 0) rotate(360deg); }    100% {     -webkit-transform: translate3d(0, 0, 0) rotate(360deg);     -moz-transform: translate3d(0, 0, 0) rotate(360deg);     -ms-transform: translate3d(0, 0, 0) rotate(360deg);     -o-transform: translate3d(0, 0, 0) rotate(360deg);     transform: translate3d(0, 0, 0) rotate(360deg); } }  @-webkit-keyframes flyin-music {   0% {     -webkit-transform: translate3d(110px, -80px, 0) rotate(0deg);     -moz-transform: translate3d(110px, -80px, 0) rotate(0deg);     -ms-transform: translate3d(110px, -80px, 0) rotate(0deg);     -o-transform: translate3d(110px, -80px, 0) rotate(0deg);     transform: translate3d(110px, -80px, 0) rotate(0deg); }    40% {     -webkit-transform: translate3d(110px, -80px, 0) rotate(360deg);     -moz-transform: translate3d(110px, -80px, 0) rotate(360deg);     -ms-transform: translate3d(110px, -80px, 0) rotate(360deg);     -o-transform: translate3d(110px, -80px, 0) rotate(360deg);     transform: translate3d(110px, -80px, 0) rotate(360deg); }    100% {     -webkit-transform: translate3d(0, 0, 0) rotate(360deg);     -moz-transform: translate3d(0, 0, 0) rotate(360deg);     -ms-transform: translate3d(0, 0, 0) rotate(360deg);     -o-transform: translate3d(0, 0, 0) rotate(360deg);     transform: translate3d(0, 0, 0) rotate(360deg); } }  @-webkit-keyframes flyin-comment {   0% {     -webkit-transform: translate3d(129px, -42px, 0) rotate(0deg);     -moz-transform: translate3d(129px, -42px, 0) rotate(0deg);     -ms-transform: translate3d(129px, -42px, 0) rotate(0deg);     -o-transform: translate3d(129px, -42px, 0) rotate(0deg);     transform: translate3d(129px, -42px, 0) rotate(0deg); }    40% {     -webkit-transform: translate3d(129px, -42px, 0) rotate(360deg);     -moz-transform: translate3d(129px, -42px, 0) rotate(360deg);     -ms-transform: translate3d(129px, -42px, 0) rotate(360deg);     -o-transform: translate3d(129px, -42px, 0) rotate(360deg);     transform: translate3d(129px, -42px, 0) rotate(360deg); }    100% {     -webkit-transform: translate3d(0, 0, 0) rotate(360deg);     -moz-transform: translate3d(0, 0, 0) rotate(360deg);     -ms-transform: translate3d(0, 0, 0) rotate(360deg);     -o-transform: translate3d(0, 0, 0) rotate(360deg);     transform: translate3d(0, 0, 0) rotate(360deg); } }  @-webkit-keyframes flyin-status {   0% {     -webkit-transform: translate3d(136px, 0px, 0) rotate(0deg);     -moz-transform: translate3d(136px, 0px, 0) rotate(0deg);     -ms-transform: translate3d(136px, 0px, 0) rotate(0deg);     -o-transform: translate3d(136px, 0px, 0) rotate(0deg);     transform: translate3d(136px, 0px, 0) rotate(0deg); }    40% {     -webkit-transform: translate3d(136px, 0px, 0) rotate(360deg);     -moz-transform: translate3d(136px, 0px, 0) rotate(360deg);     -ms-transform: translate3d(136px, 0px, 0) rotate(360deg);     -o-transform: translate3d(136px, 0px, 0) rotate(360deg);     transform: translate3d(136px, 0px, 0) rotate(360deg); }    100% {     -webkit-transform: translate3d(0, 0, 0) rotate(360deg);     -moz-transform: translate3d(0, 0, 0) rotate(360deg);     -ms-transform: translate3d(0, 0, 0) rotate(360deg);     -o-transform: translate3d(0, 0, 0) rotate(360deg);     transform: translate3d(0, 0, 0) rotate(360deg); } }  .clearfix {   zoom: 1; }   .clearfix:before, .clearfix:after {     content: "";     display: table; }   .clearfix:after {     clear: both; }  body, html {   background: white; }  body {   font-family: "helvetica neue", helvetica, arial, sans-serif; }  div.inner-wrapper {   padding: 20px; }  h1, h2, h3, h4, h5, h6 {   font-family: "helvetica neue", helvetica, arial, sans-serif;   font-weight: 100; }  a, a:link, a:active, a:visited {   color: #fc511d;   text-decoration: none; }  a:hover {   color: #c93103; }  ::selection {   background: #fc511d; }  ::-moz-selection {   background: #fc511d; }  section.container {   width: 400px;   margin: 200px auto;   position: relative; }   section.container div.open-button {     background-color: #fc511d;     -webkit-border-radius: 120px;     -moz-border-radius: 120px;     -ms-border-radius: 120px;     -o-border-radius: 120px;     border-radius: 120px;     height: 40px;     width: 40px;     text-align: center;     position: relative; }   section.container div.button {     background-color: #454545;     -webkit-border-radius: 40px;     -moz-border-radius: 40px;     -ms-border-radius: 40px;     -o-border-radius: 40px;     border-radius: 40px;     color: white;     float: left;     font-size: 11px;     height: 32px;     left: 4px;     line-height: 3em;     position: absolute;     text-align: center;     top: 4px;     width: 32px;     -webkit-transition-property: all;     -moz-transition-property: all;     -ms-transition-property: all;     -o-transition-property: all;     transition-property: all;     -webkit-transition-duration: 0.15s;     -moz-transition-duration: 0.15s;     -ms-transition-duration: 0.15s;     -o-transition-duration: 0.15s;     transition-duration: 0.15s;     -webkit-transition-timing-function: ease-out;     -moz-transition-timing-function: ease-out;     -ms-transition-timing-function: ease-out;     -o-transition-timing-function: ease-out;     transition-timing-function: ease-out;     -webkit-transition-delay: 0;     -moz-transition-delay: 0;     -ms-transition-delay: 0;     -o-transition-delay: 0;     transition-delay: 0; }     section.container div.button.expanded:hover {       zoom: 1.2; }     section.container div.button.expanded.cam {       -webkit-animation-name: flyout-cam;       -moz-animation-name: flyout-cam;       animation-name: flyout-cam;       -webkit-animation-duration: 0.5s;       -moz-animation-duration: 0.5s;       animation-duration: 0.5s;       -webkit-animation-delay: 0s;       -moz-animation-delay: 0s;       animation-delay: 0s; }     section.container div.button.expanded.friend {       -webkit-animation-name: flyout-friend;       -moz-animation-name: flyout-friend;       animation-name: flyout-friend;       -webkit-animation-duration: 0.5s;       -moz-animation-duration: 0.5s;       animation-duration: 0.5s;       -webkit-animation-delay: 0.05s;       -moz-animation-delay: 0.05s;       animation-delay: 0.05s; }     section.container div.button.expanded.location {       -webkit-animation-name: flyout-location;       -moz-animation-name: flyout-location;       animation-name: flyout-location;       -webkit-animation-duration: 0.5s;       -moz-animation-duration: 0.5s;       animation-duration: 0.5s;       -webkit-animation-delay: 0.1s;       -moz-animation-delay: 0.1s;       animation-delay: 0.1s; }     section.container div.button.expanded.music {       -webkit-animation-name: flyout-music;       -moz-animation-name: flyout-music;       animation-name: flyout-music;       -webkit-animation-duration: 0.5s;       -moz-animation-duration: 0.5s;       animation-duration: 0.5s;       -webkit-animation-delay: 0.15s;       -moz-animation-delay: 0.15s;       animation-delay: 0.15s; }     section.container div.button.expanded.comment {       -webkit-animation-name: flyout-comment;       -moz-animation-name: flyout-comment;       animation-name: flyout-comment;       -webkit-animation-duration: 0.5s;       -moz-animation-duration: 0.5s;       animation-duration: 0.5s;       -webkit-animation-delay: 0.2s;       -moz-animation-delay: 0.2s;       animation-delay: 0.2s; }     section.container div.button.expanded.status {       -webkit-animation-name: flyout-status;       -moz-animation-name: flyout-status;       animation-name: flyout-status;       -webkit-animation-duration: 0.5s;       -moz-animation-duration: 0.5s;       animation-duration: 0.5s;       -webkit-animation-delay: 0.25s;       -moz-animation-delay: 0.25s;       animation-delay: 0.25s; }     section.container div.button.collapsed.cam {       -webkit-animation-name: flyin-cam;       -moz-animation-name: flyin-cam;       animation-name: flyin-cam;       -webkit-animation-duration: 0.5s;       -moz-animation-duration: 0.5s;       animation-duration: 0.5s;       -webkit-animation-delay: 0.25s;       -moz-animation-delay: 0.25s;       animation-delay: 0.25s; }     section.container div.button.collapsed.friend {       -webkit-animation-name: flyin-friend;       -moz-animation-name: flyin-friend;       animation-name: flyin-friend;       -webkit-animation-duration: 0.5s;       -moz-animation-duration: 0.5s;       animation-duration: 0.5s;       -webkit-animation-delay: 0.2s;       -moz-animation-delay: 0.2s;       animation-delay: 0.2s; }     section.container div.button.collapsed.location {       -webkit-animation-name: flyin-location;       -moz-animation-name: flyin-location;       animation-name: flyin-location;       -webkit-animation-duration: 0.5s;       -moz-animation-duration: 0.5s;       animation-duration: 0.5s;       -webkit-animation-delay: 0.15s;       -moz-animation-delay: 0.15s;       animation-delay: 0.15s; }     section.container div.button.collapsed.music {       -webkit-animation-name: flyin-music;       -moz-animation-name: flyin-music;       animation-name: flyin-music;       -webkit-animation-duration: 0.5s;       -moz-animation-duration: 0.5s;       animation-duration: 0.5s;       -webkit-animation-delay: 0.1s;       -moz-animation-delay: 0.1s;       animation-delay: 0.1s; }     section.container div.button.collapsed.comment {       -webkit-animation-name: flyin-comment;       -moz-animation-name: flyin-comment;       animation-name: flyin-comment;       -webkit-animation-duration: 0.5s;       -moz-animation-duration: 0.5s;       animation-duration: 0.5s;       -webkit-animation-delay: 0.05s;       -moz-animation-delay: 0.05s;       animation-delay: 0.05s; }     section.container div.button.collapsed.status {       -webkit-animation-name: flyin-status;       -moz-animation-name: flyin-status;       animation-name: flyin-status;       -webkit-animation-duration: 0.5s;       -moz-animation-duration: 0.5s;       animation-duration: 0.5s;       -webkit-animation-delay: 0s;       -moz-animation-delay: 0s;       animation-delay: 0s; }  div.open-button p {font-size:12px; padding-top:8px;} 

you have specified key-frames -webkit-. should duplicate without prefix mozilla.

i did 1 you:
http://jsfiddle.net/abdiassoftware/u7cjj/2/

  @keyframes flyout-cam {   0% {     -webkit-transform: translate3d(0, 0, 0) rotate(0deg);     -moz-transform: translate3d(0, 0, 0) rotate(0deg);     -ms-transform: translate3d(0, 0, 0) rotate(0deg);     -o-transform: translate3d(0, 0, 0) rotate(0deg);     transform: translate3d(0, 0, 0) rotate(0deg); } 

as can see works in firefox.


Comments