דילוג לתוכן

יחס גובה-רוחב

מגביל תמונות, קטעי וידאו משובצים ומפות ליחס קבוע בעת שינוי גודלן — כלי הפריסה ששומר על כרטיסים בסגנון "ניאו-ברוטליסטי" בתוך הרשת.

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.json
npx shadcn@latest add https://neobrutalism.com/r/base/aspect-ratio.json
yarn dlx shadcn@latest add https://neobrutalism.com/r/base/aspect-ratio.json
bunx --bun shadcn@latest add https://neobrutalism.com/r/base/aspect-ratio.json

התקינו את התלויות הבאות:

pnpm add @base-ui/react
npm install @base-ui/react
yarn add @base-ui/react
bun add @base-ui/react

העתיקו והדביקו את הקוד הבא לתוך הפרויקט שלכם.

components/ui/aspect-ratio.tsx
"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 מציג תוכן בהתאם ליחס הממדים הרצוי.

PropTypeDefaultRequired
rationumber-כן
classNamestring-לא

למידע נוסף, עיינו בתיעוד של Base UI.