屏幕录制2019-12-13下午5.08.09.mov (1.83MB) 源文件:百度云下拉.framerx.zip

    代码:

    1. import * as React from "react"
    2. import { Override, Data } from "framer"
    3. const data = Data({
    4. isOpened: false,
    5. })
    6. export function Menu(props): Override {
    7. const variants = {
    8. open: {
    9. height: 277,
    10. transition: {
    11. delayChildren: 0.04,
    12. staggerChildren: 0.05,
    13. staggerDirection: -1,
    14. },
    15. },
    16. closed: {
    17. height: 88,
    18. },
    19. }
    20. //@ts-ignore
    21. return {
    22. initial: "closed",
    23. variants: variants,
    24. animate: data.isOpened ? "open" : "closed",
    25. transition: {
    26. duration: 0.1,
    27. },
    28. }
    29. }
    30. export function Item(props): Override {
    31. const variants = {
    32. open: {
    33. opacity: 1,
    34. y: 0,
    35. transition: {
    36. type: "spring",
    37. stiffness: 290,
    38. damping: 10,
    39. mass: 0.3,
    40. },
    41. },
    42. closed: {
    43. opacity: 0,
    44. y: -40,
    45. transition: {
    46. duration: 0.08,
    47. },
    48. },
    49. }
    50. return {
    51. variants: variants,
    52. }
    53. }
    54. //分类按钮
    55. export function Button(): Override {
    56. return {
    57. onTap() {
    58. data.isOpened = !data.isOpened
    59. },
    60. }
    61. }
    62. //bg
    63. export function Bg(): Override {
    64. return {
    65. opacity: 0,
    66. animate: data.isOpened ? { opacity: 1 } : { opacity: 0 },
    67. transition: {
    68. duration: 0.1,
    69. },
    70. onTap() {
    71. data.isOpened = !data.isOpened
    72. },
    73. }
    74. }
    75. //小三角
    76. export function Icon(): Override {
    77. return {
    78. rotate: 0,
    79. animate: data.isOpened ? { rotate: 60 } : { rotate: 0 },
    80. }
    81. }