MotionZoom
صورة تتكبّر من مكانها إلى ملء الشاشة؛ اسحبها بعيدًا لإغلاقها.
الويبReact Nativeالطبقات العلوية
جرّبه
جارٍ تجهيز المثال…
أقصر استخدام
<MotionZoom
src={photo.thumb}
zoomSrc={photo.full}
width={240}
height={160}
style={{ objectFit: 'cover', borderRadius: 12 }}
/>;ما يتولّاه عنك
- النقر أو Enter أو المسافة يكبّر الصورة من مكانها لتملأ الشاشة ضمن
margin. - تبدأ النسخة المكبّرة تمامًا كما تبدو الصورة المصغّرة، بقصّ
object-fitونصف قطر الزوايا. - تظهر
zoomSrcبالتدريج بمجرد تحميلها. - النقر أو Escape أو السحب بعيدًا يغلقها؛ والرمية السريعة تغلقها أيضًا، أما السحب القصير فيعود بنابض.
استخدمه لـ
- شبكة صور.
- معرض منتجات.
- صور داخل تدوينة.
Props
| Prop | النوع | الافتراضي | الوصف |
|---|---|---|---|
src | string | الصورة المعروضة في مكانها. | |
zoomSrc | string | صورة أكبر تُعرض بمجرد تحميلها؛ احتفظ بنسبة الأبعاد نفسها. | |
margin | number | 24 | المسافة المتروكة حول الصورة المكبّرة بالبكسل. |
disabled | boolean | false | يعطّل التكبير. |
onZoomChange | (zoomed) => void | يعمل مع true عند التكبير وfalse عند الإغلاق. | |
backdropStyle | CSSProperties | النمط المضمّن للخلفية. | |
transition | Transition | spring | منحنى توقيت { duration, easing } أو نابض { tempo: 'spring', spring }. تحتفظ النوابض بزخمها عند المقاطعة. |
تذهب props الأخرى إلى العنصر المعروض، فتعمل className وstyle ومعالجات الأحداث كالمعتاد.
الويب وReact Native
لا توجد الطبقة العلوية إلا أثناء التكبير (dialog في الطبقة العليا على الويب)، فيمكن أن تكون الصورة في أي مكان، حتى داخل فقرة. وتذهب props الأخرى إلى img.
في React Native مرّر source وzoomSource؛ والطبقة العلوية Modal شفاف.