روز به روز بر تعداد کسانی که از ابزارهای قابل حمل برای دسترسی به اینترنت استفاده میکنند افزوده میشود. طراحی سایت به گونهای که در هر عرض و طول صفحه قابل استفاده باشد اصطلاحا «طراحی واکنشگرا» یا «Responsive webdesign» نامیده میشود.
برای ایجاد یک طرح واکنشگرا دانستن چند نکته ضروری است که در این نوشته به اختصار آنها را مرور میکنیم.
مرورگرهای موبایل برای سازگاری با سایتهایی که در گذشته طراحی شدهاند، از مفهومی به نام Viewport برای نمایش سایتها استفاده میکنند. Viewport فضایی مجازی است که معمولا حدود ۱۰۰۰ پیکسل عرض دارد. مرورگر موبایل سایت را در این فضای مجازی نمایش میدهد و سپس این تصویر را در فضای واقعی نمایشگر موبایل یا تبلت قرار میدهد.
نخستین گام در طراحی واکنشگرا، اطلاع رسانی به مرورگر برای تغییر اندازهی Viewport است تا به جای ۱۰۰۰ یا ۹۸۰ پیکسل پیشفرض، فضای مورد نظر برنامهنویس را به Viewport اختصاص دهد.
تغییر اندازهی Viewport با استفاده از تگ meta در سرآمد فایل html به انجام میرسد.
همانگونه که مشاهده میکنید، در مثال بالا عرض Viewport برابر ۴۸۰ پیکسل مشخص شده است. این مقدار حداقل مقدار ممکن است. چنانچه عرض نمایشگر موبایل بیش از ۴۸۰ پیکسل باشد، عرض Viewport هم افزایش خواهد یافت.
شیوهی دیگر در تغیین مقدار Viewport، تعیین آن با عرض فیزیکی نمایشگر است. برای این کار از کد زیر استفاده میشود:
به دلیل تراکم بیشتر پیکسلی در موبایلهای امروزی در مقایسه با تراکم متداول در نمایشگرهای لپتاپ و کامپیوترهای شخصی، مرورگرهای موبایل ممکن است هر پیکسل را بزرگتر از یک پیکسل به نمایش درآورند. به این معنی که مثلا اگر عرض یک عنصر ۲۰۰ پیکسل مشخص شود، ممکن است این مقدار مساوی ۴۰۰ پیکسل به نمایش درآید.
درصد بزرگنمایی پیکسل در مرورگرهای مختلف و در دستگاههای مختلف و در سیستمعاملهای مختلف، متغیر است. بنابراین یکی از مهمترین نکات در طراحی واکنشگرا، عدم اعتماد به اندازهی پیکسلها است.
برای مثال گوشی Galaxy SII دارای ۴۸۰ پیکسل واقعی و ۳۲۰ پیکسل مجازی است. به عبارت دیگر، اگر شما یک تصویر با عرض ۳۲۰ پیکسل را در این گوشی به نمایش در بیاورید، این تصویر ۴۸۰ پیکسل فضا اشغال خواهد کرد.
بهترین راه حل برای پایداری طرح، استفاده از واحدهای فیزیکی مانند point، cm، و … است
مرورگرهای موبایل ممکن است به صورت پیشفرض صفحات شما را بزرگنمایی یا کوچکنمایی کنند. از موارد قابل کنترل در تگ meta اندازهی بزرگنمایی و کوچکنمایی است.
در کد بالا بیشترین اندازهی بزرگنمایی ۲ برابر و اندازهی پیشفرض آن ۱ تعیین شده است.
عملکرد خاص مرورگر سافاری ممکن است باعث شود بخواهید همیشه مقدار maximum-scale را برابر ۱ قرار دهید. این مرورگر چنانچه صفحهی موبایل گردانده شود تا از حالت عمودی به افقی درآید، صفحه را بار دیگر پردازش نمیکند و همان صفحهی عمودی را بزرگنمایی میکند تا در عرض صفحه جای بگیرد. با تعیین مقدار maximum-scale به ۱، این عملکرد سافاری اصلاح میشود. البته این کار سبب میشود تا کاربران دیگر قادر به بزرگنمایی صفحه نباشند که خود یک اشکال به حساب میآید.
برای آنکه صفحات وب در همهجا به بهترین شکل ممکن نمایش داده شوند، لازم است تا عرض حداقل و حداکثر برای عنصر body تعیین شود. با توجه به جدول سایت Screen Sizes که بالاتر مشاهده کردید، حداقل عرض مجازی میتواند ۳۲۰ پیکسل و با توجه به آخرین آمار استفاده کنندگان لپتاپ و کامپیوتر، حداکثر عرض مناسب، ۱۰۰۰ پیکسل است. البته ممکن است با توجه به تقسیمپذیری بهتر ۹۶۰ در مقایسه با ۱۰۰۰، بخواهید از این عدد استفاده کنید.
در طراحی واکنشگرا، لازم است تا محتوای ما در جعبههای مجزا قرار بگیرند تا امکان جابجایی یا حذف آنها در صورت نیاز فراهم شود. استفاده از تصویرهای بزرگ یا محتوای جدولی که قابلیت تغییر شکل و حذف را به سادگی ندارند، یک مانع در برابر طراحی واکنشگرا به حساب میآیند.
مهمترین ویژگی CSS برای پشتیبانی طراحی واکنشگرا، دستور media است. این دستور به ما کمک میکند تا بر اساس عرض صفحه، ویژگیهای عنصرهای دلخواه خود را تغییر دهیم. min-width و max-width در مقابل media ابزارهایی هستند که بسیار ما را یاری خواهند داد:
همان گونه که مشاهده میکنید، شاید لازم شود به ازای هر عنصر، چندین حالت مختلف از نمایش طراحی شود و گاهی لازم شود تا یک عنصر به صورت کامل از دید مخفی شود.
دانستن دو نکته در مورد تصویرها الزامی است. نخست انتخاب اندازهی مناسب برای تصویرها طوری که کیفیت آنها در هنگام نمایش کم نشود و حجم آنها هم متناسب با محدودیتهای ارتباطی شبکههای موبایل باشد و نکتهی دوم تغییر عرض خودکار تصویر بر اساس عرض صفحه است.
بهتر است اندازهی تصویر مساوی بزرگترین اندازهی پیکسلهای واقعی نمایشگر کامپیوتر در نظر گرفته شود. برای مثال عدد ۱۰۰۰ یا ۱۳۶۶ میتواند مقدار مناسبی باشد.
در نمایشگرهای کوچکتر، با تعیین اندازهی درصدی عرض و تعیین نکردن ارتفاع یا قرار دادن مقدار auto برای آن میتوان یک تصویر واکنشگرا در اختیار داشت
تغییر اندازهی تصاویر پسزمینه هم در css به شکل زیر انجام میشود:
نکتهی قابل توجه در قطعه کد بالا، استفاده از padding-top برای مشخص کردن ارتفاع div است. با توجه به اینکه معیار padding عرض عنصر والد است. با کمک آن میتوان، ارتفاع یک عنصر را به صورت Responsive تعیین کرد.
بهترین واحد برای مشخص کردن، اندازهی فونتها واحدهای فیزیکی هستند. برای مثال تعیین اندازهی فونت پیشفرض صفحه با مقدار “14pt” به جای “14px” و تعیین اندازهی عنصرهای داخلی بر اساس «درصد» یا «em» راه حلی مطمئن برای داشتن نوشتههای واکنشگرا است.