کوئری‌های کانتینر را مثل مدیا کوئری‌های معمولی دست‌وپا نکنید!

کوئری‌های کانتینر را مثل مدیا کوئری‌های معمولی دست‌وپا نکنید!

با وجود پشتیبانی گسترده از سوی مرورگرهای مدرن، هنوز هم کوئری‌های کانتینر (Container Queries) در CSS به طرز عجیبی کم‌استفاده و اغلب به اشتباه درک می‌شوند. خیلی‌ها آن‌ها را صرفاً نسخه‌ی جدیدتری از مدیا کوئری‌ها می‌بینند، در حالی که ماهیت و هدف کاملاً متفاوتی دارند.

مدیا کوئری‌ها (Media Queries) بر اساس ابعاد viewport یا همان صفحه‌نمایش دستگاه کاربر کار می‌کنند؛ یعنی کل صفحه را ملاک قرار می‌دهند. اما کوئری‌های کانتینر بر اساس اندازه‌ی عنصر والد یا کانتینری که یک کامپوننت در آن قرار می‌گیرد، رفتار می‌کنند. این یعنی یک کامپوننت می‌تواند بدون اینکه چیزی درباره‌ی دستگاه کاربر بداند، خودش را با فضایی که در اختیار دارد تطبیق دهد.

پس چه زمانی از کدام استفاده کنیم؟ مدیا کوئری برای تغییر چیدمان کل صفحه عالی است؛ مثلاً وقتی می‌خواهید از حالت دسکتاپ به موبایل بروید. اما وقتی پای کامپوننت‌های قابل‌استفاده‌ی مجدد در میان است، کوئری‌های کانتینر برتری می‌گیرند؛ چون کامپوننت‌ها می‌توانند طبیعی و مستقل به سیاق و سباق محل قرارگیری‌شان واکنش نشان دهند و دقیقاً همان‌جا که هستند، کارشان را انجام دهند.

به نقل از کدیران ، تفاوت ظریف اما حیاتی میان این دو رویکرد، نشان‌دهنده‌ی یک تغییر الگو در دنیای توسعه‌ی وب است. سال‌هاست که مدیا کوئری‌ها ستون فقرات طراحی واکنش‌گرا بوده‌اند و قرار نیست به‌زودی ناپدید شوند؛ آن‌ها همچنان برای کنترل چیدمان کلی صفحه و تجربه‌ی کاربری در سطح دستگاه بی‌رقیب‌اند. اما مسئله اینجاست که محصولات دیجیتال امروزی دیگر مجموعه‌ای از صفحات ثابت نیستند، بلکه از کامپوننت‌های مستقل و قابل‌استفاده‌ی مجدد ساخته می‌شوند که ممکن است در صفحات مختلف، سایدبارها، مودال‌ها و زمینه‌های کاملاً متفاوت ظاهر شوند.

در چنین معماری‌ای، گره زدن استایلِ یک کامپوننت به ابعاد viewport، در واقع وابسته کردن آن به چیزی است که هیچ ربطی به رفتارش ندارد. کوئری‌های کانتینر این وابستگی را قطع می‌کنند و استقلال واقعی به کامپوننت‌ها می‌بخشند؛ مزتی که برای دیزاین‌سیستم‌ها، کتابخانه‌های کامپوننتی و تیم‌هایی که روی محصولاتی در مقیاس بزرگ کار می‌کنند، ارزش استراتژیک دارد.

پیش‌بینی می‌شود در یک تا دو سال آینده، ابزارها و فریم‌ورک‌های مدرن به‌طور پیش‌فرض روی این الگو متمرکز شوند و ترکیب مدیا + کانتینر به استاندارد جدیدی تبدیل شود. همچنین با بلوغ بیشتر مرورگرها و ابزارهای توسعه‌دهنده، انتظار می‌رود سهم استفاده از کوئری‌های کانتینر رشد چشمگیری داشته باشد. توصیه‌ی ما این است: مدیا کوئری را برای چیدمان صفحه و کانتینر کوئری را برای کامپوننت‌ها نگه دارید. این تفکیک ساده، هم کد شما را تمیزتر می‌کند و هم قابلیت استفاده‌ی مجدد کامپوننت‌ها را به شکل چشمگیری بالا می‌برد.

منبع: SmashingMagazine (مشاهده متن اصلی)