با وجود پشتیبانی گسترده مرورگرها، هنوز هم شاهد هستیم که Container Queries (کوئریهای کانتینر) به طرز عجیبی کماستفادهتر از حد انتظار هستند و اغلب هم به اشتباه درک میشوند. بسیاری از توسعهدهندگان هنوز این قابلیت قدرتمند CSS را صرفاً نسخه جدیدی از Media Queries میبینند، در حالی که ماهیت و کاربرد این دو کاملاً با هم متفاوت است.
مدیا کوئریها بر اساس اندازه viewport یا همان نمای مرورگر کار میکنند، اما کوئریهای کانتینر به جای نگاه به کل صفحه، اندازه عنصر والد (کانتینر) را بررسی میکنند. این یعنی یک کامپوننت میتواند دقیقاً همانطور که نیاز دارد، بدون توجه به اینکه کجای صفحه قرار گرفته، به محیط اطراف خود واکنش نشان دهد.
این تفاوت کوچک اما مهم، امکان ساخت کامپوننتهای قابل استفاده مجدد را فراهم میکند که به صورت طبیعی با هر زمینهای که در آن قرار میگیرند سازگار میشوند. در این مقاله نگاهی به تفاوت این دو روش، زمان مناسب استفاده از هر کدام و نحوه کمک Container Queries به واکنش طبیعی کامپوننتها میاندازیم.
به نقل از کدیران ورود Container Queries به دنیای CSS را میتوان یکی از مهمترین تحولات این زبان در سالهای اخیر دانست. تا پیش از این، توسعهدهندگان برای واکنشگرا کردن کامپوننتها به مدیا کوئریها وابسته بودند که نگاهی به کل صفحه داشتند. این رویکرد در معماریهای مبتنی بر کامپوننت، مانند کار با React یا Vue، به یک دردسر بزرگ تبدیل شده بود؛ چرا که کامپوننتها در نقاط مختلف صفحه رفتار یکسانی داشتند و استایلدهی به آنها به شرایط بیرونی وابسته میشد.
با ورود کوئریهای کانتینر، CSS بالاخره یک ابزار واقعاً کامپوننتمحور دریافت کرد. حالا میتوان یک کارت محصول، منوی کشویی یا ویجت را طوری نوشت که بدون توجه به اینکه در صفحه اصلی، سایدبار یا یک مودال قرار میگیرد، به درستی رفتار کند. این موضوع مخصوصاً برای تیمهایی که با سیستمهای طراحی (Design Systems) کار میکنند ارزشمندتر است و به آنها اجازه میدهد کامپوننتهای مستقل و قابل حملی بسازند که در هر پروژهای بدون تغییر کار میکنند.
با این حال، باید توجه داشت که Container Queries جایگزین کامل Media Queries نیستند. مدیا کوئریها همچنان برای موارد مربوط به کل صفحه، مثل جهت نمایش، ترجیحات کاربر، حالت تاریک و سکوهای سختافزاری کاربرد دارند. ترکیب هوشمندانه این دو ابزار است که میتواند کدهای پایدارتر و تمیزتری تولید کند؛ نه استفاده صرف از یکی از آنها.
پیشبینی میشود در سالهای پیش رو، فریمورکها و کتابخانههای استایل بیشتری به صورت پیشفرض از Container Queries پشتیبانی کنند و ابزارهای توسعه نیز روی این قابلیت سرمایهگذاری کنند. هر تیمی که زودتر این الگوهای جدید را یاد بگیرد، در ساخت رابطهای انعطافپذیر و مقیاسپذیر جلوتر از رقبا خواهد بود.