inject-styles.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. function insertCSS (text) {
  2. var cssEl = document.createElement('style')
  3. cssEl.textContent = text.trim()
  4. document.head.appendChild(cssEl)
  5. }
  6. const duration = process.env.TRANSITION_DURATION || 50
  7. const buffer = process.env.TRANSITION_BUFFER || 10
  8. let injected = false
  9. export default function injectStyles () {
  10. if (injected) return { duration, buffer }
  11. injected = true
  12. insertCSS(`
  13. .test {
  14. -webkit-transition: opacity ${duration}ms ease;
  15. transition: opacity ${duration}ms ease;
  16. }
  17. .group-move {
  18. -webkit-transition: -webkit-transform ${duration}ms ease;
  19. transition: transform ${duration}ms ease;
  20. }
  21. .v-appear, .v-enter, .v-leave-active,
  22. .test-appear, .test-enter, .test-leave-active,
  23. .hello, .bye.active,
  24. .changed-enter {
  25. opacity: 0;
  26. }
  27. .test-anim-enter-active {
  28. animation: test-enter ${duration}ms;
  29. -webkit-animation: test-enter ${duration}ms;
  30. }
  31. .test-anim-leave-active {
  32. animation: test-leave ${duration}ms;
  33. -webkit-animation: test-leave ${duration}ms;
  34. }
  35. .test-anim-long-enter-active {
  36. animation: test-enter ${duration * 2}ms;
  37. -webkit-animation: test-enter ${duration * 2}ms;
  38. }
  39. .test-anim-long-leave-active {
  40. animation: test-leave ${duration * 2}ms;
  41. -webkit-animation: test-leave ${duration * 2}ms;
  42. }
  43. @keyframes test-enter {
  44. from { opacity: 0 }
  45. to { opacity: 1 }
  46. }
  47. @-webkit-keyframes test-enter {
  48. from { opacity: 0 }
  49. to { opacity: 1 }
  50. }
  51. @keyframes test-leave {
  52. from { opacity: 1 }
  53. to { opacity: 0 }
  54. }
  55. @-webkit-keyframes test-leave {
  56. from { opacity: 1 }
  57. to { opacity: 0 }
  58. }
  59. `)
  60. return { duration, buffer }
  61. }