Hareket
Her bileşenin kullandığı yumuşatma eğrileri, süreler ve azaltılmış hareket denetimi; ayrıca boyut dönüşümleri ve kayan vurgular için hook'lar.
pnpm dlx shadcn@latest add https://hextaui.com/r/motion.jsonYardımcıyı (utility) ve bağımlı olduğu her şeyi projenize ekler.
Aşağıdaki kodu kopyalayıp projenize yapıştırın.
lib/motion.ts İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Her HextaUI bileşeni aynı birkaç eğri ve süreyle hareket eder, böylece kütüphane tek bir bütün gibi hissedilir.
- Size yanıt veren şeyler için ease out. Giren, genişleyen veya tıklamayı izleyen öğeler hızlı başlar ve yavaşlayarak oturur; arayüz anlık hissedilir.
- Kısa ve kesilebilir. Hareketin çoğu 150 ila 300ms sürer. Geri çevrilebilen her şey yeniden başlamak yerine şu anki yerinden başlar.
- Azaltılmış hareket bir kapatma anahtarı değil, ikinci bir tasarımdır. Hareket anlık değişikliklere veya düz solmalara dönüşür ve durum okunabilir kalır.
Tema eğrileri Tailwind easing yardımcıları olarak tanımlar; lib/motion aynı değerleri Web Animations API için dışa aktarır.
| Sınıf | Açıklama |
|---|---|
ease-out-quint | JS'te easeOut. Hareket için varsayılan: popover'lar, vurgular, boyut değişiklikleri. |
ease-out-cubic | Hover ve odakta renk ve gölge değişimleri için daha yumuşak bir ease out. |
ease-in-out-quart | JS'te easeInOut. Kimsenin doğrudan tetiklemediği iki durgun durum arasındaki hareket için. |
ease-spring | JS'te easeSpring. Küçük bir aşımı olan, linear() olarak yazılmış bir yay; anahtarın düğmesi gibi yerine oturan şeyler için. |
ease-drawer | Bir kenardan kayarak gelen drawer ve sheet'ler için iOS sheet eğrisi. |
| duration. | Açıklama |
|---|---|
press: 100 | Aşağı inen basılı durum. |
release: 200 | Basıştan sonra geri yükselme. |
hover: 150 | Hover ve odak geri bildirimi. |
enter: 200 | Beliren öğeler. |
exit: 150 | Ayrılan öğeler. Çıkışlar girişlerden hızlıdır, böylece hiçbir şeyi bekletmezler. |
morph: 300 | Boyut ve konum değişiklikleri. |
prefersReducedMotion() medya sorgusunu çağrı anında okur. Sistem ayarı değiştiğinde hemen uygulanması için bir kez mount sırasında değil, bir animasyon başladığında kontrol edin. Sunucuda true döndürür.
- Öğenin içindeki herhangi bir DOM değişikliği (metin, alt öğeler veya simgeler) bir dönüşümü tetikler. Yeniden boyutlandırma gibi dışarıdan gelen boyut değişiklikleri tetiklemez; böylece öğe kapsayıcısını gecikmesiz izler.
- Dönüşüm sırasındaki bir değişiklik mevcut boyuttan devam eder. Çalışırken öğede
data-morphingbulunur; bunu taşmayı kırpmak veya diğer geçişleri duraklatmak için kullanabilirsiniz. - Öğeyi doğal boyutunda tutun: animasyonlu eksende sabit genişlik veya yükseklik vermeyin. Yeni içerik büyürken taşmasın diye
overflow-hiddenekleyin. - Bir geri çağırma ref'i döndürür.
useMergedRefile diğer ref'lerle birleştirin.
- Vurgu satır içi stillerle boyutlandırılır ve kaydırılır. Ona
absolute top-0verin vetransform,width,heightveopacityüzerinde bir geçiş tanımlayın. - Hook, adını verdiğiniz niteliği bir
MutationObserverile izler; böylece Base UI'ın kendidata-pressed,data-checkedveyaaria-currentdeğerleri dahil her yerden gelen durumu takip eder. - Bir şey eşleşirken
data-visibleayarlanır. Vurgunun zıplaması gerektiğindedata-instantayarlanır: ilk görünüşte, yeniden boyutlandırmada, kaydırmada ve azaltılmış harekette. Bunudata-instant:transition-opacityolarak biçimlendirin. - Çubuğun ölçeğini hesaba katarak ölçüm yapar, bu yüzden hâlâ yakınlaşan bir dialog içinde hizalı kalır.
| Prop | Tür | Varsayılan |
|---|---|---|
axisHangi boyutun animasyonlu olacağı. | "width" | "height" | – |
enabledAnimasyon yapılıp yapılmayacağı. | boolean | true |
durationMilisaniye. | number | 300 |
easingHerhangi bir CSS easing. | string | easeOut |
| Prop | Tür | Varsayılan |
|---|---|---|
barRefKonumlandırılmış kapsayıcı. | RefObject<HTMLElement | null> | – |
highlightRefHareket ettirilecek öğe. | RefObject<HTMLElement | null> | – |
selectorVurgulanacak alt öğeyle eşleşir. | string | – |
attributeDeğişiklikleri vurguyu hareket ettiren nitelik. | string | "data-popup-open" |
| Export | Açıklama |
|---|---|
easeOut | cubic-bezier(0.23, 1, 0.32, 1) |
easeInOut | cubic-bezier(0.77, 0, 0.175, 1) |
easeSpring | Bir linear() yayı. |
duration | press, release, hover, enter, exit ve morph. |
prefersReducedMotion() | Azaltılmış hareketin açık olup olmadığı. Sunucuda true. |
- AlertDurum ve geri bildirim için satır içi mesajlar; nötr bir yüzey, renkli bir simge ve yumuşakça daralan bir kapatma düğmesi içerir.
- AttachmentYüklemeler için dosya ve görsel kartları; ilerleme, durumlar, eylemler, tüm kartı kaplayan bir tetikleyici ve uzantısını koruyan adlar içerir.
- BadgeRenkli noktalı durum etiketleri, kayarak kapanan kaldırılabilir etiketler ve yeni değerine dönen sayaçlar.
- BreadcrumbGeçerli sayfaya giden bağlantı izi; güvenle satır atlar, sağdan sola düzenlerde yansıtılır ve daraltılmış bölümleri yerinde açar.
- CalendarTekli, aralık ve çoklu seçim için, kayan aylar, aralık önizlemeleri ve dokunmaya uygun boyutta günler içeren bir tarih ızgarası.
- CommandSatır içi ya da ⌘K paleti olarak eylemlerin aranabilir listesi; sayfalar, kısayollar ve vurgulanmış eşleşmeler içerir.