ホームページ > ウェブフロントエンド > jsチュートリアル > Typescript、Tailwind、Framer Motion を使用したアニメーション ホバー ロゴ

Typescript、Tailwind、Framer Motion を使用したアニメーション ホバー ロゴ

Mary-Kate Olsen
リリース: 2025-01-13 18:36:44
オリジナル
940 人が閲覧しました

Animated Hover Logo using Typescript, Tailwind and Framer Motion

静的なロゴをボタンに変換します。これにより、モーション値を使用してボタンの軸に沿ったカーソルの動きを追跡するビデオ ツールチップがアクティブになります。

よく見てみると、マイクロアニメーションが使用されていることがわかります。ロゴの上にマウスを置くと、ロゴは滑らかに縮小してフェードアウトし、その後、フェードイン効果で拡大するボタンに移行します。ボタンの上にマウスを置くと、ビデオ ツールチップが表示されます。

デモ

ソースコード


ロゴホバー.tsx

<script> // Detect dark theme var iframe = document.getElementById('tweet-1878748540677283930-90'); if (document.body.className.includes('dark-theme')) { iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1878748540677283930&theme=dark" } </script>
import { useState, useCallback } from "react";
import { motion, AnimatePresence, useMotionValue } from "framer-motion";
import { Play } from "lucide-react";

デフォルト関数 LogoHover() をエクスポート {
  const [isHovered, setIsHovered] = useState(false);
  const [showVideo, setShowVideo] = useState(false);
  const x = useMotionValue(0);

  const handleMouseMove = useCallback(
    (イベント: React.MouseEvent<HTMLElement>) => {
      consthalfWidth =event.currentTarget.offsetWidth / 2;
      x.set(event.nativeEvent.offsetX -halfWidth);
    }、
    [×]
  );

  戻る (
    <div className="relative w-[100px] h-[80px] カーソルポインタ" onMouseEnter={() => setIsHovered(true)} onMouseLeave={() => setIsHovered(false)}>
      <アニメーションプレゼンス>
        {! はホバーされています && (
          // 独自のロゴに変更します
          <motion.img src="/theo-logo.png" alt="Wegic Logo" className="absolute inset-0 w-full h-full object-contain" 初期値={{ 不透明度: 1, スケール: 1 } } exit={{ 不透明度: 0, スケール: 0.8 }} 遷移={{ 期間: 0.2 }} />
        )}
      </AnimatePresence>

      <アニメーションプレゼンス>
        {はホバーされています&& (
          <motion.div className="absolute inset-0 flex items-center justify-center w-full"Initial={{ opacity: 0 }} animate={{ opacity: 1 }} exit={{ opacity: 0, スケール: 0.8 }} 遷移={{ 期間: 0.2 }}>
            <ボタン
              className="flex w-full items-center justify-center gap-2 bg-white border border-black h-10 py-2rounded-md"
              onMouseMove={ハンドルマウスムーブ}
              onMouseEnter={() => setShowVideo(true)}
              onMouseLeave={() => setShowVideo(false)}
            >
              <再生サイズ={16} fill="white" ストローク幅={2} aria-hidden="true" />
              <p className="text-[10px] flex font-semibold">ビデオを見る</p>
            </ボタン>
          </motion.div>
        )}
      </AnimatePresence>
      {/* 動画ツールチップ */}
      <AnimatePresence モード="popLayout">
        {ビデオを表示&& (
          




          

            
        
ログイン後にコピー

以上がTypescript、Tailwind、Framer Motion を使用したアニメーション ホバー ロゴの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート