Aspect ratio
Medya yüklenmeden önce şeklini koruyan, yüklenirken parıldayan, medyayı yumuşakça görünür kılan ve hata durumunda yedeğe düşen bir kutu.
pnpm dlx shadcn@latest add https://hextaui.com/r/aspect-ratio.jsonBileşeni, HextaUI tema token'larını ve bileşenin bağımlı olduğu tüm HextaUI bileşenlerini ekler.
Henüz eklemediyseniz tema token'larını global CSS'inize ekleyin.
Bağımlılıkları yükleyin.
pnpm add @base-ui/react @tabler/icons-react class-variance-authority cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/aspect-ratio.tsx components/ui/skeleton.tsx İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Oranlar
ratio bir sayı, bir "w/h" dizesi veya bir "w:h" dizesi alır.
Yavaş yükleme
Kutu, görsel gelene kadar şeklini korur ve parlar; sonra görsel solarak belirir, böylece altındaki hiçbir şey kaymaz. Yeniden izlemek için Reload'a basın.
Bozuk görsel
Görsel başarısız olduğunda tarayıcının bozuk görsel simgesi gizlenir ve onun yerine bir fallback simgesi gösterilir. Değiştirmek için fallback geçin, hiçbir şey göstermemek için fallback={null} kullanın.
Bindirme
Mutlak konumlu alt öğeler medyanın üstünde durur. Kutu hiçbir şeyi kırpmaz, bu yüzden bindirme bağlantılarındaki odak halkaları görünür kalır.
Placeholder olmadan
placeholder={false} yükleme shimmer'ını, solarak belirmeyi ve fallback'i kapatır; düz shadcn davranışı elde edilir.
Duyarlı
Oranı bir breakpoint'te bir aspect sınıfıyla geçersiz kılın. Bu örnek küçük ekranlarda kare, md ve üzerinde md:aspect-video olur.
Ortalanmış bir flex sütunu içinde
Kutu varsayılan olarak tam genişliktedir; bu yüzden üst öğe alt öğelerini ortaladığında sıfıra çökmez, sütunu doldurur.
Metin içeriği
Medya olmayan alt öğeler yalnızca kutuyu alır, başka bir şey almaz. Konumlandırmayı kendiniz yapın.
Figure olarak
Oranı değiştirmemeleri için alt yazıları kutunun dışında tutun.
Geçersiz oran
0, negatif sayılar ve ayrıştırılamayan dizeler kareye geri döner ve geliştirme sırasında bir uyarı kaydeder.
Sağdan sola
start-3 gibi mantıksal özelliklerle konumlandırılan bindirmeler okuma yönünü izler.
- Medyası yüklenirken kutu
aria-busyolur. - Fallback dekoratiftir ve yardımcı teknolojilerden gizlenir. Görsel yüklenemediğinde görselin
altmetni erişilebilir kalır; bu yüzden her zaman bir tane yazın. - Azaltılmış hareket açıkken medya solmadan görünür.
Oluşturduğu öğenin tüm niteliklerini kabul eder. Doğrudan içine yerleştirilen medya (bir <img>, <picture> veya <video>), object-cover ile kutuyu doldurur ve yarıçapını devralır.
| Prop | Tür | Varsayılan |
|---|---|---|
ratio | number | `${number}/${number}` | `${number}:${number}` | 1 |
placeholderMedya yüklenirken bir shimmer, başarısız olduğunda bir fallback gösterir. | boolean | true |
fallbackMedya başarısız olduğunda gösterilir. null hiçbir şey göstermez. | ReactNode | <IconPhotoOff /> |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="aspect-ratio" | CSS'te kutuyu hedefleyin. |
data-state | loading, loaded veya error. Yalnızca placeholder açıkken ve kutu medya içerirken ayarlanır. |
aria-busy | Medya yüklenirken bulunur. |
--ratio | Sayı olarak ayrıştırılmış oran. |
data-slot="aspect-ratio-placeholder" | Yükleme sırasında veya hatadan sonra gösterilen shimmer. |
data-slot="aspect-ratio-fallback" | Fallback'i saran sarmalayıcı. |
parseAspectRatio(ratio) kabul edilen her oranı bir sayıya dönüştürür, olmazsa 1'e geri döner. Diğer öğeleri aynı biçimde boyutlandırmak için kullanın. AspectRatioValue ve AspectRatioProps tipleri de dışa aktarılır.
- SkeletonGöstermeden önce 150ms bekleyen, sardıkları içeriğin tam boyutunu alan ve hiçbir şeyi kaydırmadan içeriği yumuşakça görünür kılan yer tutucular.
- AccordionHer biri bir panel gösteren yığılmış başlıklar; yarıda tersine çevrilebilen yükseklik hareketi ve kapalıyken de aranabilir kalan paneller.
- CarouselDokunmatik ekranda ivmeli, fare sürüklemeli, ok tuşlu, noktalı, küçük resimli yerel scroll-snap slaytları ve gerektiğinde duran bir otomatik oynatma.
- CollapsibleYüksekliği hareketle gösterilip gizlenen, yarıda tersine çevrilebilen ve yerleşimi zıplatmayan bir panel.
- ResizableBirbirinden ayırabileceğiniz paneller; hover'da uyanan sakin bir ayırıcı, sıfırlama ya da daraltmada kayarak değişen boyutlar ve kalıcı düzenler sunar.
- Scroll areaMinimal bir kaydırma çubuğuyla yerel kaydırma, yalnızca görülecek daha fazla şey olan yerde solan kenarlar ve son öğeyi ikiye bölen isteğe bağlı bir göz atma payı.