القائمة
/
0 ? -0.25 : 0.25;
const oldScale = zoomScale;
zoomScale = Math.max(1, Math.min(zoomMaxScale, zoomScale + delta));
if (oldScale === 1 && zoomScale > 1) {
const r = $el.getBoundingClientRect();
const cx = $event.clientX - (r.left + r.width/2);
const cy = $event.clientY - (r.top + r.height/2);
zoomPanX = -cx * (zoomScale-1)/zoomScale;
zoomPanY = -cy * (zoomScale-1)/zoomScale;
} else if (zoomScale > 1) {
zoomPanX = zoomPanX * (zoomScale / oldScale);
zoomPanY = zoomPanY * (zoomScale / oldScale);
}
if (zoomScale <= 1) { resetZoom(); } else { clampPan(); }
"
class="relative w-full h-full flex items-center justify-center p-4 [touch-action:none]"
:class="zoomScale > 1 ? (zoomPanning ? 'cursor-grabbing' : 'cursor-grab') : (modalTotal > 1 ? (modalDragging ? 'cursor-grabbing' : 'cursor-grab') : '')"
@mousedown="modalDragStart($event)"
@mousemove="modalDragMove($event)"
@mouseup="modalDragEnd($event)"
@mouseleave="modalDragEnd($event)"
@touchstart="modalDragStart($event)"
@touchmove="modalDragMove($event)"
@touchend="modalDragEnd($event)"
:style="modalDragOffset ? `transform: translateX(${modalDragOffset}px); transition: none;` : 'transition: transform 0.2s ease-out;'">
measureZoomCeiling($el))"
@click.stop
@dblclick.stop.prevent="if (lastInputWasTouch) return; zoomAnimating = true; if (zoomScale > 1) { resetZoom(); } else { const r = $el.getBoundingClientRect(); const cx = $event.clientX - (r.left + r.width/2); const cy = $event.clientY - (r.top + r.height/2); zoomScale = Math.min(2.5, zoomMaxScale); zoomPanX = -cx * (zoomScale-1)/zoomScale; zoomPanY = -cy * (zoomScale-1)/zoomScale; clampPan(); } setTimeout(() => { zoomAnimating = false; }, 300);"
draggable="false"
:style="modalActive === largeIdx
? 'position:relative;transform: scale(' + zoomScale + ') translate(' + (zoomPanX / zoomScale) + 'px, ' + (zoomPanY / zoomScale) + 'px); transform-origin: center center; will-change: transform; transition: ' + (zoomAnimating ? 'transform 0.3s ease-out' : (zoomScale > 1 ? 'none' : 'transform 0.2s ease-out')) + ';'
: ''" />
رف ديكور بتصميم زجزاج (S-shape)
اللون
رف ديكور عصري بتصميم زجزاج مميز، يوفر مساحات عرض وتخزين متعددة للكتب والديكورات، ويضيف أناقة فورية لأي مساحة. متوفر باللونين الأبيض والرمادي الداكن.

أعطي مساحتك لمسة عصرية وأنيقة مع رف الديكور بتصميم الزجزاج! تصميمه الهندسي المميز على شكل حرف S يوفر أقسامًا متعددة بأحجام مختلفة، مثالية لعرض الكتب والتحف والنباتات وقطع الديكور بشكل مرتب وجذاب.
مميزات المنتج:
- تصميم زجزاج عصري وفريد يكسر رتابة الأثاث التقليدي
- أقسام متعددة بأحجام مختلفة تناسب الكتب والديكورات والإكسسوارات
- متوفر بلونين أنيقين: أبيض ناصع ورمادي داكن، يناسبان مختلف أنماط الديكور
- تصميم مفتوح يبرز مقتنياتك ويضيف عمقًا للمكان
- قاعدة ثابتة ومتوازنة لاستخدام آمن
- مناسب لغرف المعيشة، غرف النوم، المكاتب، والمداخل
- يستغل المساحة العمودية دون أن يأخذ مساحة كبيرة من الأرض
قطعة أثاث عملية وجمالية، تحوّل أي زاوية إلى مساحة عرض راقية.
| التصنيف | تنظيم و تخزين |
|---|---|
| رمز المنتج | MD_0265 |
JD 32