יחס גובה-רוחב
מגביל תמונות, קטעי וידאו משובצים ומפות ליחס קבוע בעת שינוי גודלן — כלי הפריסה ששומר על כרטיסים בסגנון "ניאו-ברוטליסטי" בתוך הרשת.
import Image from "next/image"
import { AspectRatio } from "@/components/ui/aspect-ratio"Aspect ratio נועל את הילדים ביחס קבוע של רוחב לגובה — 16:9, ריבוע, פורטרט — כך שמדיה משתנה עם המיכל במקום לגרום לזרימה מחדש של העמוד. הווריאנט הזה הוא עטיפה בלי תלויות מעל מאפיין ה-CSS aspect-ratio (ל-Base UI אין פרימיטיב של aspect-ratio) ובמכוון בלי עיצוב: המסגרות והצללים הנאו-ברוטליסטיים מגיעים מה-card שתכניסו אותו אליו.
השתמשו בו כש:
- רשתות תמונות ותמונות ממוזערות — מאחדים ממדי מקור מעורבים לכרטיסים אחידים.
- הטמעות וידאו ומפות — שומרים מקום 16:9 כדי שה-iframe לא יזיז את הפריסה בזמן טעינה.
- מדיית hero רספונסיבית — מגדילים יצירה עם רוחב העמודה בלי לקבע גבהים.
התקנה#
pnpm dlx shadcn@latest add https://neobrutalism.com/r/base/aspect-ratio.jsonnpx shadcn@latest add https://neobrutalism.com/r/base/aspect-ratio.jsonyarn dlx shadcn@latest add https://neobrutalism.com/r/base/aspect-ratio.jsonbunx --bun shadcn@latest add https://neobrutalism.com/r/base/aspect-ratio.json
התקינו את התלויות הבאות:
pnpm add @base-ui/reactnpm install @base-ui/reactyarn add @base-ui/reactbun add @base-ui/react
העתיקו והדביקו את הקוד הבא לתוך הפרויקט שלכם.
"use client"
import { AspectRatio as AspectRatioPrimitive } from "radix-ui"
function AspectRatio({
...props
}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {
return <AspectRatioPrimitive.Root data-slot="aspect-ratio" {...props} />
}
export { AspectRatio }
עדכנו את נתיבי הייבוא כך שיתאימו למבנה הפרויקט שלכם.
שימוש#
import { AspectRatio } from "@/components/ui/aspect-ratio"<AspectRatio ratio={16 / 9}>
<Image src="..." alt="Image" className="rounded-md object-cover" />
</AspectRatio>דוגמאות#
ריבועי#
רכיב יחס ממדים ריבועי המשתמש במאפיין ratio={1 / 1}. שימושי להצגת תמונות בפורמט ריבועי.
import Image from "next/image"
import { AspectRatio } from "@/components/ui/aspect-ratio"לאורך#
רכיב יחס ממדים לאורך המשתמש במאפיין ratio={9 / 16}. שימושי להצגת תמונות בפורמט לאורך.
import Image from "next/image"
import { AspectRatio } from "@/components/ui/aspect-ratio"RTL#
כדי להפעיל RTL ב-Neobrutalism, עיינו במדריך ההגדרה של RTL.
"use client"
import * as React from "react"נגישות#
AspectRatio מרנדר div רגיל — מצגתי בלבד, בלי role או מאפייני ARIA. הנגישות חיה עם התוכן בפנים: תנו לתמונות alt משמעותי (או alt="" כשהן דקורטיביות) ול-iframes מוטמעים title. מכיוון שהדפוס הרגיל חותך עם object-cover, הימנעו מתמונות שבהן הקצוות החתוכים נושאים מידע.
תיעוד ה-API#
AspectRatio#
רכיב AspectRatio מציג תוכן בהתאם ליחס הממדים הרצוי.
| Prop | Type | Default | Required |
|---|---|---|---|
ratio | number | - | כן |
className | string | - | לא |
למידע נוסף, עיינו בתיעוד של Base UI.
