Media Query در CSS | طراحی واکنشگرا با مدیا کوئری

media query در CSS

در این جلسه از آموزش CSS قصد داریم به مبحث مهم Media Query در CSS بپردازیم. این بحث در ریسپانسیو کردن صفحات وب‌ بسیار کاربردی است. اگر هنوز اطلاع زیادی از طراحی رسپانسیو یا واکنشگرا ندارید در این چند جلسه همراه ما باشید.

طراحی واکنشگرا چیست؟

طراحی Responsive یا واکنشگرا به طراحی گفته می‌شود که در تمامی نمایشگرها به درستی قابل مشاهده باشد. ریسپانسیو بودن وب‌سایت یکی از استانداردهایی است که باید هر طراحی به آن توجه داشته باشد چرا که این موضوع در تجربه کاربری، سئو وب‌سایت و بسیاری از حوزه‌های دیگر تاثیر گذار است.

موضوعی که در این نوع طراحی باید مورد توجه قرار بگیرد، آسودگی کاربر در مشاهده همه‌ی محتوای حاضر در وب‌سایت است. اینکه با مشاهده وب‌سایت در هر نمایشگر، تمام بخش‌ها به درستی در کنار هم قرار بگیرند، خوانا باشند، دکمه‌ها قابل کلیک باشند و هیچ بخشی از سایت در نمایشگرهای کوچک یا بزرگ به هم ریختگی نداشته باشد.

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

طراحی واکنشگرا

سعی کردیم به ساده‌ترین زبان این مفهوم را بیان کنیم اما اگر هنوز کلمه‌ی ریسپانسیو برای شما ابهام دارد به مقاله زیر مراجعه کنید.

طراحی ریسپانسیو چیست؟


معرفی Media Query در CSS

دستور Media یکی از دستورات مهم برای ریسپانسیو کردن صفحات وب‌ است. به کمک این دستور می‌توان استایل‌های مختلف را در نمایشگرهای گوناگون اعمال کرد. برای مثال شما می‌‌‌توانید یک سری از CSSها را برای نمایشگر موبایل بنویسید و یک سری استایل را فقط به نمایشگر کامپیوتر اختصاص دهید!

ساختار یک مدیا کوئری:

@media mediatype and (expressions) {
  CSS Code;
}

نمونه‌ای از یک مدیا کوئری:

@media screen and (max-width: 572px) {
  body {
    background: #000 ;
  }
}

در کد بالا اگر صفحه نمایشگر از ۵۷۲ پیکسل کمتر باشد (صفحه گوشی) رنگ پس‌زمینه مشکی خواهد شد. برای مثال برای زمان‌هایی که می‌خواهید وب‌سایت در موبایل دارک باشد اما در نمایشگرها نه!


چند مثال از مدیا کوئری

۱- Media Query با عرض نمایشگر

@media screen and (min-width: 600px) {
  body {
    font-size: 20px;
  }
}

@media screen and (max-width: 600px) {
  body {
    font-size: 17px;
  }
}

در مثال بالا روش استفاده همزمان از چند مدیا‌کوئری را مشاهده می کنید. در این مثال در نمایشگر های کوچک‌تر از ۶۰۰ پیسکل، اندازه فونت ۱۷ پیکسل است اما در نمایشگرهای بزرگتر از این سایز، فونت به ۲۰ پیسکل تغییر خواهد کرد.

۲- Media Query برای جهت نمایشگر

@media only screen and (orientation: landscape) {
  body {
    background-color: gray;
  }
}

این کوئری برای جهت نمایشگر (موبایل و تبلت) است و زمانی استفاده می‌شود که کاربر جهت گوشی یا تبلت خود را به حالت افقی (landscape) تغییر دهد.

۳- استفاده همزمان از دو شرط

@media screen and (max-width: 900px) and (min-width: 500px) {
 .box {
    font-size: 50px;
    padding: 50px;
  }
}

در کد بالا نمونه‌ای از استفاده همزمان از دو شرط را مشاهده می‌کنید. کدهای درج شده در نمایشگرهایی با سایز ۵۰۰ تا ۹۰۰ پیکسل قابل روئیت هستند.

همراهان عزیز ادمین‌سایت، همراه ما باشید تا در جلسه بعدی مبحث ریسپانسیو را با دستورات دیگر کامل کنیم.

دیدگاه کاربران

  • mrms
    mrms
    3 سال پیش

    سلام. ببخشید مطمئن هستید همه کد ها درستن؟ من هر کاری کردم جواب نداد.
    Select and اش رو برداشتم، فاصله هاش رو جابجا کردم و حتی رفتم کد های یه سایتو کپی پیست کردم!
    کار نکرد.من به این کد خیلی نیاز دارم لطفا کمک کنید

    • علی سلطانی
      علی سلطانی
      3 سال پیش

      سلام وقت بخیر
      بله همه کد ها صحیح هستند اما بستگی داره شما چطور ازشون استفاده کرده باشید
      پیش نیاز این مقاله آشنایی مقدماتی با html و css هست.
      اگر به این مباحث آشنا هستید و باهاشون کار کردید نباید براتون مشکلی بوجود بیاد
      موفق باشید

  • سید مهدی هاشمی
    سید مهدی هاشمی
    4 سال پیش

    سلام میشه بدون کلاس بندی در html داخل همون html مدیا نوشت این امکان پذیره

    • مریم جعفرپور
      مریم جعفرپور
      4 سال پیش

      سلام به شما
      متوجه این بخش از سوالتون نشدم بدون کلاس بندی… ولی برای نوشتن مدیا میتونید داخل تگ html بنویسید فقط باید توجه کنید که این کد css‌هستش پس باید داخل تگ style قرار بگیره

  • ابراهیم
    ابراهیم
    5 سال پیش

    سلام خیلی ممنونم بابت دوره خوبتون استاد سلطانی

  • علیرضا
    علیرضا
    5 سال پیش

    سلام خدمت شما دوست عزیز من مثال های بالا را در فایل css نوشتم و فایل html هم به صورت external باهاش ارتباط برقرار کردم ولی دستورات اجرا نمیشن @media هام تو فایل css که نگا میکنم قرمز یعنی یه جوری انگار پشتیبانی نمیکنه میشه بگید مشکل چیه ممنون

    • مریم جعفرپور
      مریم جعفرپور
      5 سال پیش

      سلام باید چک کنید که آیا که ارتباط به درستی انجام شده یا نه. میتونید ارتباط رو با اعمال یک گراند به body تست کنید.
      @media هم میتونید به صورت های دیگه تست کنید. مثلا بدون عبارت screen and

    • دانیال
      دانیال
      5 سال پیش

      برای استفاده از مدیا کوری باید کدزیر بین head قرار بگیره

  • حسین
    حسین
    5 سال پیش

    سلام خسته نباشید . اگر بخوام صفحه وبم برای همه ی نمایشگرها باشد باید چه کد media رو بنویسم ؟

    • مریم جعفرپور
      مریم جعفرپور
      5 سال پیش

      بدون مدیا هم در همه نمایشگر ها نشون داده میشه اما شما میتونید حالت طراحی رو در نمایشگرهای مختلف تغییر بدید تا دسترسی بهتری ایجاد شه
      بسته به طراحی چندین مدیا باید استفاده شه . تو هر قیمت متفاوت هستش