Remotion LabRemotion Lab
返回模板庫

盾牌徽章逐層建立 Logo

SVG 盾牌外框以金色描邊動畫逐步勾勒,接著深藍填色,品牌縮寫以 spring 彈出,金色彩帶從中央展開並顯示公司全名,最後副標語淡入完成徽章建立序列。適合企業、安全或法律相關品牌。

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

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

  // frame 0-50:盾牌外框描邊 strokeDashoffset 1200→0
  const shieldStrokeOffset = interpolate(frame, [0, 50], [1200, 0], {
    extrapolateLeft: "clamp",
    extrapolateRight: "clamp",
  });

  // frame 40-70:盾牌填色 fillOpacity 0→0.9
  const shieldFillOpacity = interpolate(frame, [40, 70], [0, 0.9], {
    extrapolateLeft: "clamp",
    extrapolateRight: "clamp",
  });

  // frame 60-90:「AC」縮寫 scale 0→1(spring)
  const acScale = spring({
    frame: frame - 60,
    fps,
    config: { damping: 14, stiffness: 120, mass: 1 },
    durationInFrames: 30,
  });

  // frame 80-105:彩帶 clip-path 從中間展開,inset 從 50%→0%
  const bannerInset = interpolate(frame, [80, 105], [50, 0], {
    extrapolateLeft: "clamp",
    extrapolateRight: "clamp",
  });

  // frame 95-120:「ACME CORP」文字淡入
  const corpTextOpacity = interpolate(frame, [95, 120], [0, 1], {
    extrapolateLeft: "clamp",
    extrapolateRight: "clamp",
  });

  // frame 110-130:副標語淡入
  const taglineOpacity = interpolate(frame, [110, 130], [0, 1], {
    extrapolateLeft: "clamp",
    extrapolateRight: "clamp",
  });

  return (
    <AbsoluteFill
      style={{
        background: "#0f0f0f",
        justifyContent: "center",
        alignItems: "center",
      }}
    >
      {/* SVG 盾牌 */}
      <svg
        width="1920"
        height="1080"
        viewBox="0 0 1920 1080"
        style={{ position: "absolute", top: 0, left: 0 }}
      >
        {/* 盾牌形狀:頂部寬 240px,高 280px,底部收尖 */}
        <path
          d="M 960 260 L 1080 310 L 1080 470 Q 1080 560 960 590 Q 840 560 840 470 L 840 310 Z"
          stroke="#f59e0b"
          strokeWidth="3"
          fill="#1e3a5f"
          fillOpacity={shieldFillOpacity}
          strokeDasharray="1200"
          strokeDashoffset={shieldStrokeOffset}
          strokeLinejoin="round"
        />
      </svg>

      {/* 「AC」品牌縮寫,盾牌中央 */}
      <div
        style={{
          position: "absolute",
          top: 380,
          left: 0,
          right: 0,
          display: "flex",
          justifyContent: "center",
          alignItems: "center",
          transform: `scale(${acScale})`,
        }}
      >
        <span
          style={{
            fontSize: 80,
            fontWeight: 900,
            color: "#ffffff",
            fontFamily: "sans-serif",
            letterSpacing: "-0.03em",
            lineHeight: 1,
          }}
        >
          AC
        </span>
      </div>

      {/* 彩帶/橫幅(梯形效果用 clip-path) */}
      <div
        style={{
          position: "absolute",
          top: 600,
          left: "50%",
          transform: "translateX(-50%)",
          width: 280,
          height: 44,
          background: "#f59e0b",
          clipPath: `inset(0 ${bannerInset}%)`,
          display: "flex",
          justifyContent: "center",
          alignItems: "center",
          overflow: "hidden",
        }}
      >
        <span
          style={{
            fontSize: 20,
            fontWeight: 800,
            color: "#1a1a1a",
            fontFamily: "sans-serif",
            letterSpacing: "0.12em",
            whiteSpace: "nowrap",
            opacity: corpTextOpacity,
          }}
        >
          ACME CORP
        </span>
      </div>

      {/* 副標語 */}
      <div
        style={{
          position: "absolute",
          top: 660,
          left: 0,
          right: 0,
          display: "flex",
          justifyContent: "center",
          opacity: taglineOpacity,
        }}
      >
        <span
          style={{
            fontSize: 18,
            fontWeight: 400,
            color: "#9ca3af",
            fontFamily: "sans-serif",
            letterSpacing: "0.08em",
          }}
        >
          Est. 2024
        </span>
      </div>
    </AbsoluteFill>
  );
};

登入後查看完整程式碼