Rumah >hujung hadapan web >tutorial js >Petua Alat Video Animasi menggunakan skrip taip dan gerakan pembingkai

Petua Alat Video Animasi menggunakan skrip taip dan gerakan pembingkai

Barbara Streisand
Barbara Streisandasal
2025-01-07 06:40:40526semak imbas

Animated Video Tooltip using typescript and framer-motion

Petua Alat Video ialah komponen animasi yang diaktifkan apabila pengguna menuding pada avatar.

Komponen ini memaparkan video pendek orang itu memperkenalkan diri mereka atau menyediakan konteks tambahan, menambahkan sentuhan peribadi dan interaktif.

Ia amat berguna untuk mencipta pengalaman pengguna yang tidak dapat dilupakan, menawarkan cerapan pantas tentang ahli pasukan, penceramah atau pemberi pengaruh tanpa memerlukan klik tambahan.

Demo

Kod Sumber


video-tooltip.tsx


import { useState, useCallback, useMemo } daripada "react";
import { motion, useTransform, AnimatePresence, useMotionValue, useSpring } daripada "framer-motion";
import { cn } daripada "@/lib/utils";

antara muka TooltipItem {
  id: nombor;
  nama: rentetan;
  sebutan: rentetan;
  imej: rentetan;
  video: rentetan;
  teks: rentetan;
}

antara muka VideoTooltipProps {
  item: TooltipItem[];
  Nama kelas?: string;
}

export const VideoTooltip = ({ item, className = "" }: VideoTooltipProps) => {
  const [hoveredIndex, setHoveredIndex] = useState<nombor | null>(null);
  const [showText, setShowText] = useState(false);
  const springConfig = useMemo(
    () => ({
      kekakuan: 100,
      redaman: 5,
    }),
    []
  );

  // Persediaan gerakan
  const x = useMotionValue(0);
  const translateX = useSpring(useTransform(x, [-100, 100], [-50, 50]), springConfig);
  // Optimumkan pengendali acara dengan useCallback
  const handleMouseMove = useCallback(
    (acara: React.MouseEvent<HTMLElement>) => {
      const halfWidth = event.currentTarget.offsetWidth / 2;
      x.set(event.nativeEvent.offsetX - halfWidth);
    },
    [x]
  );

  kembali (
    <div className={cn("flex items-center gap-2", className)}>
      {items.map((item) => (
        <div className="-mr-4 relative group" key={item.name} onMouseEnter={() => setHoveredIndex(item.id)} onMouseLeave={() => setHoveredIndex(null)}>
          <AnimatePresence mode="popLayout">
            {hoveredIndex === item.id && (
              <motion.div
                permulaan={{ kelegapan: 0, y: 20, skala: 0.6 }}
                bernyawa={{
                  kelegapan: 1,
                  y: 0,
                  skala: 1,
                  peralihan: {
                    kekakuan: 260,
                    redaman: 10,
                    tempoh: 0.3,
                  },
                  lebar: showText ? "300px" : "96px",
                  ketinggian: showText ? "auto" : "96px",
                }}
                keluar={{ kelegapan: 0, y: 20, skala: 0.6 }}
               >




          

            
        <script>
  // Detect dark theme
  var iframe = document.getElementById('tweet-1876277735032848773-256');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1876277735032848773&theme=dark"
  }

</script>

Atas ialah kandungan terperinci Petua Alat Video Animasi menggunakan skrip taip dan gerakan pembingkai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn