返回动效库
转场入门

模糊到清晰

元素从模糊状态逐渐变清晰并淡入,营造柔和的过渡入场效果。

加载时500ms

交互预览

动效定义与代码

{
  "slug": "blur-in",
  "name": "模糊到清晰",
  "nameEn": "Blur In",
  "description": "元素从模糊状态逐渐变清晰并淡入,营造柔和的过渡入场效果。",
  "descriptionEn": "Element transitions from blurred to sharp while fading in, creating a soft focus entrance effect.",
  "category": "transition",
  "tags": [
    "blur",
    "focus",
    "entrance",
    "transition"
  ],
  "trigger": "on-mount",
  "difficulty": "beginner",
  "duration": "500ms",
  "easing": "cubic-bezier(0.16, 1, 0.3, 1)",
  "cssProperties": [
    "opacity",
    "filter"
  ],
  "isGPUAccelerated": true,
  "previewBg": "light",
  "keywords": [
    "blur",
    "focus",
    "sharp",
    "entrance",
    "transition",
    "soft"
  ],
  "useCases": [
    "Image reveal",
    "Page transition effect",
    "Modal content entrance",
    "Background image loading"
  ],
  "relatedAnimations": [
    "fade-in-up",
    "scale-in"
  ],
  "recommendedStyles": [
    "glassmorphism",
    "soft-ui",
    "apple-style"
  ],
  "codeSnippets": [
    {
      "label": "CSS Keyframes",
      "language": "css",
      "code": "@keyframes blur-in {\n  from {\n    opacity: 0;\n    filter: blur(10px);\n  }\n  to {\n    opacity: 1;\n    filter: blur(0px);\n  }\n}\n\n.blur-in {\n  --sk-duration: 500ms;\n  --sk-delay: 0ms;\n  --sk-ease: cubic-bezier(0.16, 1, 0.3, 1);\n  will-change: filter, opacity;\n  animation: blur-in var(--sk-duration) var(--sk-ease) var(--sk-delay) both;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .blur-in {\n    animation: none;\n    opacity: 1;\n    transform: none;\n  }\n}"
    },
    {
      "label": "Tailwind CSS",
      "language": "css",
      "code": "@keyframes blur-in {\n  from {\n    opacity: 0;\n    filter: blur(10px);\n  }\n  to {\n    opacity: 1;\n    filter: blur(0px);\n  }\n}\n\n@utility animate-blur-in {\n  --sk-duration: 500ms;\n  --sk-delay: 0ms;\n  --sk-ease: cubic-bezier(0.16, 1, 0.3, 1);\n  will-change: filter, opacity;\n  animation: blur-in var(--sk-duration) var(--sk-ease) var(--sk-delay) both;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .blur-in {\n    animation: none;\n    opacity: 1;\n    transform: none;\n  }\n}"
    },
    {
      "label": "Framer Motion",
      "language": "tsx",
      "code": "import { motion } from \"framer-motion\";\n\n// Tip: respect user's motion preferences\n// import { useReducedMotion } from \"framer-motion\";\n// const reduced = useReducedMotion();\n// Use reduced ? { opacity: 0 } : { opacity: 0, filter: \"blur(10px)\" } for initial\n\n<motion.div\n  initial={{ opacity: 0, filter: \"blur(10px)\" }}\n  animate={{ opacity: 1, filter: \"blur(0px)\" }}\n  transition={{ duration: 0.5, ease: [0.16, 1, 0.3, 1] }}\n>\n  Content\n</motion.div>"
    }
  ]
}