Remotion LabRemotion Lab
返回模板庫

徽章展開 Logo

圓形徽章從小彈出,金色外圈描邊環繞一圈,品牌縮寫在圓心彈現,全名以水平展開方式揭示,最後年份字距緩緩拉開。適合企業、機構或精品品牌的正式開場。

Logo動畫品牌徽章圓形企業
提示詞(可直接修改內容)
import React from "react";
import {
  AbsoluteFill,
  interpolate,
  spring,
  useCurrentFrame,
  useVideoConfig,
} from "remotion";

export const LogoBadgeUnfold: React.FC = () => {
  const frame = useCurrentFrame();
  const { fps } = useVideoConfig();

  // frame 0-30:整個徽章從 scale(0) spring 彈出
  const badgeScale = spring({
    frame,
    fps,
    config: { damping: 16, stiffness: 180 },
    durationInFrames: 30,
  });

  // frame 20-70:外圈環形描邊(strokeDashoffset 從全長→0)
  const circleCircumference = 2 * Math.PI * 130; // r=130
  const strokeDashoffset = interpolate(frame, [20, 70], [circleCircumference, 0], {
    extrapolateLeft: "clamp",
    extrapolateRight: "clamp",
  });

  // frame 50-80:徽章內「AC」大字 scale(0)→scale(1)
  const abbrevScale = spring({
    frame: frame - 50,
    fps,
    config: { damping: 20, stiffness: 220 },
    durationInFrames: 30,
  });

  // frame 80-110:品牌全名水平展開(clip-path)
  const clipRight = interpolate(frame, [80, 110], [100, 0], {
    extrapolateLeft: "clamp",
    extrapolateRight: "clamp",
  });

  // frame 100-120:年份淡入 + 字距拉開
  const yearOpacity = interpolate(frame, [100, 120], [0, 1], {
    extrapolateLeft: "clamp",
    extrapolateRight: "clamp",
  });
  const yearLetterSpacing = interpolate(frame, [100, 120], [0, 12], {
    extrapolateLeft: "clamp",
    extrapolateRight: "clamp",
  });

  return (
    <AbsoluteFill
      style={{
        background: "#0f0f0f",
        justifyContent: "center",
        alignItems: "center",
        flexDirection: "column",
        gap: 0,
      }}
    >
      {/* 徽章主體 */}
      <div
        style={{
          position: "relative",
          width: 280,
          height: 280,
          transform: `scale(${badgeScale})`,
          display: "flex",
          justifyContent: "center",
          alignItems: "center",
        }}
      >
        {/* 外圈 SVG */}
        <svg
          width="280"
          height="280"
          viewBox="0 0 280 280"
          style={{ position: "absolute", top: 0, left: 0 }}
        >
          {/* 徽章底圓 */}
          <circle cx="140" cy="140" r="130" fill="#1e3a5f" />
          {/* 裝飾性內圈(靜態) */}
          <circle
            cx="140"
            cy="140"
            r="118"
            fill="none"
            stroke="#f59e0b"
            strokeWidth="1"
            opacity="0.4"
          />
          {/* 動態外圈描邊 */}
          <circle
            cx="140"
            cy="140"
            r="130"
            fill="none"
            stroke="#f59e0b"
            strokeWidth="3"
            strokeDasharray={circleCircumference}
            strokeDashoffset={strokeDashoffset}
            strokeLinecap="round"
            transform="rotate(-90 140 140)"
          />
        </svg>

        {/* 品牌縮寫「AC」 */}
        <div
          style={{
            position: "relative",
            zIndex: 1,
            transform: `scale(${abbrevScale})`,
            fontSize: 100,
            fontWeight: 900,
            color: "#ffffff",
            fontFamily: "sans-serif",
            letterSpacing: "-0.04em",
            lineHeight: 1,
            userSelect: "none",
          }}
        >
          AC
        </div>
      </div>

      {/* 品牌全名 */}
      <div
        style={{
          marginTop: 32,
          overflow: "hidden",
        }}
      >
        <div
          style={{
            fontSize: 32,
            fontWeight: 700,
            color: "#f59e0b",
            fontFamily: "sans-serif",
            letterSpacing: "0.2em",
            whiteSpace: "nowrap",
            clipPath: `inset(0 ${clipRight}% 0 0)`,
          }}
        >
          ACME CORP
        </div>
      </div>

      {/* 年份 */}
      <div
        style={{
          marginTop: 12,
          opacity: yearOpacity,
          fontSize: 16,
          fontWeight: 400,
          color: "#6b7280",
          fontFamily: "sans-serif",
          letterSpacing: `${yearLetterSpacing}px`,
          whiteSpace: "nowrap",
        }}
      >
        EST. 2024
      </div>
    </AbsoluteFill>
  );
};

登入後查看完整程式碼