نسبت تصویر
تصاویر، ویدئوهای جاسازیشده و نقشهها را هنگام تغییر اندازه به نسبت ثابتی محدود میکند — ابزار چیدمان که کارتهای نئوبروتالیست را روی شبکه نگه میدارد.
import Image from "next/image"
import { AspectRatio } from "@/components/ui/aspect-ratio"Aspect ratio فرزندانش را به نسبت ثابت عرضبهارتفاع قفل میکند — 16:9، مربع، portrait — تا رسانه با کانتینر مقیاس شود نه اینکه صفحه را reflow کند. این variant یک wrapper بدونوابستگی روی ویژگی CSSِ aspect-ratio است (Base UI primitive برای aspect-ratio ندارد) و عمداً بدون استایل است: حاشیهها و سایههای نئوبروتالیستی از کارتی میآیند که آن را داخلش میگذارید.
برای این موارد از آن استفاده کنید:
- شبکههای تصویر و thumbnail — ابعاد مختلط منابع را به کارتهای یکنواخت تبدیل کنید.
- جاسازی ویدئو و نقشه — یک اسلات 16:9 رزرو کنید تا iframe هنگام بارگذاری layout را جابهجا نکند.
- رسانهٔ 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 را متناسب با ساختار پروژهٔ خود بهروزرسانی کنید.
استفاده#
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 ساده رندر میکند — کاملاً presentational، بدون role یا ویژگی ARIA. دسترسیپذیری با محتوای داخل آن است: به تصاویر alt معنادار بدهید (یا وقتی تزئینیاند alt="") و به iframeهای جاسازیشده title. چون الگوی معمول با object-cover برش میدهد، از تصاویری که اطلاعات مهمشان در لبههای بریدهشده است پرهیز کنید.
مرجع API#
AspectRatio#
کامپوننت AspectRatio محتوا را در نسبت دلخواه نمایش میدهد.
| Prop | Type | Default | Required |
|---|---|---|---|
ratio | number | - | بله |
className | string | - | خیر |
برای اطلاعات بیشتر، مستندات Base UI را ببینید.
