نسبة العرض إلى الارتفاع
يضبط الصور ومقاطع الفيديو المدمجة والخرائط على نسبة ثابتة عند تغيير حجمها — أداة التخطيط التي تحافظ على بقاء البطاقات ذات الطراز «النيوبروتالي» ضمن الشبكة.
import Image from "next/image"
import { AspectRatio } from "@/components/ui/aspect-ratio"يقفل Aspect ratio أبناءه بنسبة عرض إلى ارتفاع ثابتة — 16:9، مربّع، عمودي — فتتوسّع الوسائط مع الحاوية بدل إعادة تدفق الصفحة. هذه النسخة غلاف بلا تبعيات فوق خاصية CSS aspect-ratio (لا يوفر Base UI عنصر aspect-ratio أساسيًا) وغير مزيَّنة عمدًا: حدود وظلال النيوبروتالية تأتي من البطاقة التي تضع فيها الغلاف.
استخدمه عندما:
- شبكات الصور والمصغّرات — توحيد أبعاد مصادر مختلطة في بطاقات متساوية.
- تضمين الفيديو والخرائط — احجز فتحة 16:9 حتى لا يحرّك الـ iframe التخطيط أثناء التحميل.
- وسائط البطل المتجاوبة — وسّع العمل الفني مع عرض العمود دون ارتفاعات ثابتة.
التثبيت#
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 عاديًا — عرضي بحت، بلا دور أو سمات ARIA. إمكانية الوصول تعيش مع المحتوى داخله: امنح الصور نص alt ذا معنى (أو alt="" إن كانت زخرفية) وامنح إطارات iframe المضمّنة title. وبما أن النمط المعتاد يقتص بـ object-cover، تجنّب صورًا تحمل معلومات على الحواف المقتصة.
مرجع API#
AspectRatio#
يعرض مكوّن AspectRatio المحتوى ضمن نسبة الأبعاد المطلوبة.
| Prop | Type | Default | Required |
|---|---|---|---|
ratio | number | - | نعم |
className | string | - | لا |
لمزيد من المعلومات، راجع وثائق Base UI.
