إذا كنت قد أنشأت ورقة أنماط CSS لموقع ويب ، فقطعا ستكون على دراية بفكرة إنشاء ورقة أنماط معينة ليتم تشغيلها في ظل ظروف معينة مثل خاصية استعلامات الوسائط ومن المستحيل حصرها نظرا للإمكانيات التي يجلبها CSS3 .. لذلك سنبدأ بالمستوى الإبتدائي في هذا البرنامج التعليمي لنعرف أسس تقنية تستخدم جزءًا من CSS3 غير مدعومة بواسطة Internet Explorer 8 وهي ببساطة القاعدة media لجعل مدونتك متجاوبة مع شاشات العرض في الأجهزة اللوحية و الهواتف الذكية مثل ipad / iphon / galaxy..الخ أو لتنسيق صفحة الموضوع لتصبح جاهزة للطباعة print .
للعلم أنه تم تمكين هذه الوظيفة في CSS2 لتسمح لك بتحديد نوع الوسائط المراد إستهدافها ، بحيث يمكنك استهداف الطباعة والمحمول وما إلى ذلك.
يمكن استخدام استعلامات الوسائط للتحقق من العديد من الأشياء ، مثل:
يعد استخدام استعلامات الوسائط تقنية شائعة لتقديم ورقة أنماط مخصصة (تصميم ويب سريع الاستجابة) إلى أجهزة سطح المكتب وأجهزة الكمبيوتر المحمولة والأجهزة اللوحية والهواتف المحمولة.
يمكنك أيضًا استخدام استعلامات الوسائط لتحديد أنماط معينة فقط للمستندات المطبوعة أو لقارئات الشاشة (mediatype: print، screen، or speech).
بالإضافة إلى أنواع الوسائط ، هناك أيضًا ميزات توفر تفاصيل أكثر تحديدًا لاستعلامات الوسائط ، وذلك عن طريق السماح باختبار ميزة معينة على سبيل المثال ، يمكنك تطبيق الأنماط على الشاشات فقط التي تكون أكبر أو أصغر من عرض معين.
طبعا هناك الكثير من المواقع التي تتيح لنا المحاكاة منها الجيد والمعقد والفاشل لكننا سنظرب صفحا عن كل تلك المواقع ونستخدم أداة لاتحتاج منك أن تكون متصل بالأنترنات ولا تحميلها على جهازك فهي موجودة في متصفح الكروم وذلك من خلال تبديل شريط أدوات الجهاز ثم تفعيل أجهزة المحكاة التي تريد العمل عليها بالطريقة التالية...
- لكن صدقني طريقة التخصيص بحر واسع يتطلب الصبر الفطنة والحيلة لتجنب التكرار وإغراق القالب في الأكواد بحيث يمكنك جعل قالب مدونتك متجاوب مع جميع الأجهزة بتوليفة لا تتعدى عشر أسطر مضغوطة .
التخطيط الذي مر معنا هو مايسمى بالحاويات الرئيسية -الترويسة- علينا دائما ضبطها في البداية ثم إنتقل للفروع مثل الأداوات والأزرار والعناوين وما إلى ذلك .. الطرق طبعا تختلف ولكل مصمم طريقته...منها الإحترافي ومنها الخاطأ ونحن مع بعض سنأخذ الوسط..تابع معي
هل لاحظت هذه التعليقات في جميع أقسام النموذج مثلا <-- 350px --> أسفل المتغير #main هذا نقصد به عرض الحقل ..راجع ذلك بسرعة.
عليك دائما التركيز على عرض الحاويات والأدوات إذا وجدتها بالـبكسل مثلا 350px فهي تحتاج إلى ضبطها مع الأجهزة الذكية الصغيرة أما إذا وجدتها بالنسبة المئوية 100% فأنت لاتحتاج سوى ضبط نوع الدعم support type مثل اللون color والخط font والحشو padding ...إلخ.
سأبدأ مع أقصى عرض للشاشة الصغيرة وهو max-width:1024px وهذا لإستهداف أكبر إطار نزولا إلى أصغر شاشة دون اللجوء لإعادة تكرار الأكواد وذلك من خلال علامة الوسائط التالية...
تذكر جيدا ..دائما نضع الأنماط الخاصة بنا داخل {}العارضة الرئيسية..ليكون العمل كالآتي...
قبل أن أريك النموذج كيف يبدو دعنا نتوقف عند خطأ تكرار الأكواد..صحيح أن الأمور تبدو سليمة وسيعمل بدون مشاكل لكن التكرار للأكواد عيب لايمكن الإستهانة به والغرض هنا تقليل حجم الكود النهائي والحصول على سرعة في العرض..لذلك عليك تجميع الأكواد التي تحمل نفس الدعامات في حاوية واحدة ..ليصبح بالشكل الآتي
كما قلت لكم هناك عدة طرق لتجنب التكرار وهذه الطريقة هي الوسط والمستحسن العمل بها أما الطريقة الإحترافية تعتمد على المعرف الثابت تسمى بنقاط التوقف سنعرفها في تدوينة مستقلة...دعنا الآن نرجع لموضوعنا لنرى كيف ستبدو التقسيمات إذا قمنا بمعاينتها على أداة المحكاة..
الآن يمكنك بنفس الفكرة البدأ في تطبيق ماشرحناها على قالب تجريبي وحاول أن تغير في كل مرة إستعلامات الوسائط ومراجعة أجهزة المحاكاة إلى أن تفهمها جيدا وتصبح مرن في عملية التنقل بين الأجهزة أقصد شاشات العرض.
وذلك حتى تستطيع فهم مثل هذه الأنماط عندما تصادفها في القوالب والإضافات كما أننا في دروس قادمة مكملة لهذا البرنامج سنطبق أمثلة مختلفة لمستوى متقدم من هذا لإنشاء إصدار الجوال الخاص بموقعك.
للعلم أنه تم تمكين هذه الوظيفة في CSS2 لتسمح لك بتحديد نوع الوسائط المراد إستهدافها ، بحيث يمكنك استهداف الطباعة والمحمول وما إلى ذلك.
التعريف والاستخدام
تُستخدم @media في استعلامات الوسائط لتطبيق أنماط مختلفة لأنواع / أجهزة وسائط مختلفة.يمكن استخدام استعلامات الوسائط للتحقق من العديد من الأشياء ، مثل:
- إستخدام استعلامات الوسائط
- عرض وطول إطار العرض
- العرض والطول من الجهاز
- الاتجاه (هل الجهاز اللوحي / الهاتف في الوضع الأفقي أو العمودي؟)
- القرار
يعد استخدام استعلامات الوسائط تقنية شائعة لتقديم ورقة أنماط مخصصة (تصميم ويب سريع الاستجابة) إلى أجهزة سطح المكتب وأجهزة الكمبيوتر المحمولة والأجهزة اللوحية والهواتف المحمولة.
يمكنك أيضًا استخدام استعلامات الوسائط لتحديد أنماط معينة فقط للمستندات المطبوعة أو لقارئات الشاشة (mediatype: print، screen، or speech).
بالإضافة إلى أنواع الوسائط ، هناك أيضًا ميزات توفر تفاصيل أكثر تحديدًا لاستعلامات الوسائط ، وذلك عن طريق السماح باختبار ميزة معينة على سبيل المثال ، يمكنك تطبيق الأنماط على الشاشات فقط التي تكون أكبر أو أصغر من عرض معين.
دعم المتصفح
تحدد الأرقام في الجدول أول إصدار متصفح يدعم القاعدة media بالكامل.- 9+IE
- 21+Chrome
- 3.5+Firefox
- 4.0+Safari
- 9+Opera
- all Browser
- 2.2+android
- all touch
البنية الأساسية
الكود التالي مجرد مثال للتوضيح لايصلح فعليا كنمط معتمد.@media not|only mediatype and (mediafeature and|or|not mediafeature) {
/* هنا مكان وضع الأنماط */
}
شرح الخواص و الكلمات الشرطية
الخاصية mediatype المحددة بهذا اللون تعني نوع الوسائط يوضع مكانها مثلا screen لإستهداف الجوال
الخاصية mediafeature المحددة بهذا اللون تعني ميزة الوسائط يوضع مكانها مثلا max-width لإستهداف أقصى عرض لنافذة الجوال
الشرط not المحدد بهذا اللون يمنع المتصفحات من تطبيق الأنماط المحددة..نادرا مانستخدمه
الشرط only المحدد بهذا اللون يمنع المتصفحات القديمة التي لا تدعم استعلامات الوسائط بميزات الوسائط من تطبيق الأنماط المحددة. ليس له أي تأثير على المتصفحات الحديثة.
الشرط and المحدد بهذا اللون يجمع ميزة وسائط بنوع وسائط أو ميزات وسائط أخرى..مستخدم بكثرة.
الشرط or المحدد بهذا اللون بديل بين ميزة الوسائط وأخرى..نادر الإستخدام لكنه مفيد في تجنب التكرار
تهيئة قالب المدونة للتجاوب مع شاشات العرض المختلفة
تخصيص أجهزة المحكاة
بما أننا نريد تخصيص قالب مدونتنا ليصبح متجاوب مع الشاشات الأخرى فأمامنا عمل كثير ومتقن...لكن كيف يمكننا معاينة التعديلات التي سنقوم بها بشكل فورى ومباشر والأهم بدقة متناهية وكأننا تماما نملك جميع الأجهزة اللوحية والذكية في جعبة واحدة.طبعا هناك الكثير من المواقع التي تتيح لنا المحاكاة منها الجيد والمعقد والفاشل لكننا سنظرب صفحا عن كل تلك المواقع ونستخدم أداة لاتحتاج منك أن تكون متصل بالأنترنات ولا تحميلها على جهازك فهي موجودة في متصفح الكروم وذلك من خلال تبديل شريط أدوات الجهاز ثم تفعيل أجهزة المحكاة التي تريد العمل عليها بالطريقة التالية...
خطوات التطبيق العملي
الآن قالبك أصبح مهيء لإستقبال الأكواد البديلة وعندنا وسيلة دقيقة لمحاكاة الأجهزة الذكية بأحجام عرض مختلفة ماتبقى سوى تخصيص القالب ليتجاوب مع هذه السلوكيات.- لكن صدقني طريقة التخصيص بحر واسع يتطلب الصبر الفطنة والحيلة لتجنب التكرار وإغراق القالب في الأكواد بحيث يمكنك جعل قالب مدونتك متجاوب مع جميع الأجهزة بتوليفة لا تتعدى عشر أسطر مضغوطة .
تعليق:
للبدء ، علينا فهم لتقسيمات القالب الرئيسية يمكننا إلقاء نظرة على مثال بسيط للغاية. التخطيط أدناه هو نموذج لشبه قالب بتخطيط إفتراضي ..لاحظ عندنا التالي..
#header-wrapper
<-- 100% -->
#nav
<-- 100% -->
#content-wrapper
<-- 100% -->
#main
<-- 850px -->
شرح للنموذج
القسم المحدد بهذا اللون هو رأس القالب <header> والمعرف الخاص به مثلا id="header-wrapper"
القسم المحدد بهذا اللون هو حقل القائمة الرئيسية <nav> والمعرف الخاص به مثلا id="nav"
القسم المحدد بهذا اللون هو حقل المحتوى المجمع <section> والمعرف الخاص به مثلا id="content-wrapper"
القسم المحدد بهذا اللون هو حقل التدوينات <main> والمعرف الخاص به مثلا id="main"
القسم المحدد بهذا اللون هو الشريط الجانبي <aside> والمعرف الخاص به مثلا id="sidebar-wrapper"
القسم المحدد بهذا اللون هو تذييل القالب <footer> والمعرف الخاص به مثلا id="footer"
هل لاحظت هذه التعليقات في جميع أقسام النموذج مثلا <-- 350px --> أسفل المتغير #main هذا نقصد به عرض الحقل ..راجع ذلك بسرعة.
عليك دائما التركيز على عرض الحاويات والأدوات إذا وجدتها بالـبكسل مثلا 350px فهي تحتاج إلى ضبطها مع الأجهزة الذكية الصغيرة أما إذا وجدتها بالنسبة المئوية 100% فأنت لاتحتاج سوى ضبط نوع الدعم support type مثل اللون color والخط font والحشو padding ...إلخ.
سأبدأ مع أقصى عرض للشاشة الصغيرة وهو max-width:1024px وهذا لإستهداف أكبر إطار نزولا إلى أصغر شاشة دون اللجوء لإعادة تكرار الأكواد وذلك من خلال علامة الوسائط التالية...
@media screen and (max-width:1024px) {}/*ipad pro*/
تذكر جيدا ..دائما نضع الأنماط الخاصة بنا داخل {}العارضة الرئيسية..ليكون العمل كالآتي...
@media screen and (max-width:1024px) {
#header-wrapper {
height: 100px;
}
#nav {
padding: 5px;
}
#content-wrapper {
padding: 5px;
}
#main {
width: 100%;
float: none;
margin: 10px 0;
}
#sidebar-wrapper {
width: 100%;
float: none;
margin: 10px 0;
}
#footer {
padding: 5px;
}
}/*ipad pro*/
شرح التعديلات
- النمط المحدد بهذا اللون خاص برأس القالب <header> لاداعي لضبط العرض لأنه متجاوب مادام بعرض 100% قمنا فقط بتقليل نسبة الطول إلى height: 100px; وذلك كي نقلل من مسافة التمرير للأسفل يمكننا وضع المزيد من الدعامات لتخصيصه بالشكل أو اللون الذي نريده.
- النمط المحدد بهذا اللون خاص بحقل القائمة الرئيسية <nav> يحتوي على عرض متجاوب 100% إلا أنه غير مستقر بمعنى يمكن جعله ثابت في رأس القالب أو منزلق أضف أن الأقسام والفروع بداخله تحتاج لتخصيص تبعا لموضع الحاوية الرئيسية..ما قمنا به فقط تقليل الحشو padding: 5px; حتى نحصل على المزيد من السعة للمحتوايات.
- النمط المحدد بهذا اللون خاص بحقل المحتوى المجمع <section> نفس الفكرة كونه يحتوي على عرض متجاوب 100% ولاينبغي المساس بالطول كونه حاضنة لمحتويات غير مستقرة قمنا فقط بتقليل الحشو padding: 5px; حتى نحصل على المزيد من السعة للمحتوايات.
- النمط المحدد بهذا اللون خاص بحقل التدوينات <main> وهنا يحتاج منا تغيير نسبة العرض 850px إلى نسبة متجاوبة تلقائية أي 100% وهذا ماقمنا به لكي تأخذ الحاوية كامل عرض الشاشة كما أننا منعنا إتجاه الموضع وقمنا بتغيير نسبة الحافة margin: 10px 0; للحصول على بعض الضغط.
- النمط المحدد بهذا اللون خاص بالشريط الجانبي <aside> طبقنا فيه نفس العمل الذي قمنا به على حقل التدوينات <main> لاحظ ذلك وركز كيف أن الأكواد هي نفسها وطبعا هذا غير مستحب.
- النمط المحدد بهذا اللون خاص بتذييل القالب <footer> كذلك طبقنا فيه نفس العمل الذي قمنا به على حقل المحتوى المجمع <section> .
@media screen and (max-width:1024px) {
#header-wrapper {
height: 100px;
}
#nav, #content-wrapper, #footer {
padding: 5px;
}
#main, #sidebar-wrapper {
width: 100%;
float: none;
margin: 10px 0;
}
}/*ipad pro*/
ملاحظة:
لاحظ أن ما قمنا به بسيط جدا..حددنا النمط المتشابه حذفنا الثاني وأخذنا فقط المعرف وأشركناهم في حاوية واحدة ولكن قمنا بالفصل بينهما بفاصلة , وهذا مهم وإلا لن تعمل الأكواد.
كما قلت لكم هناك عدة طرق لتجنب التكرار وهذه الطريقة هي الوسط والمستحسن العمل بها أما الطريقة الإحترافية تعتمد على المعرف الثابت تسمى بنقاط التوقف سنعرفها في تدوينة مستقلة...دعنا الآن نرجع لموضوعنا لنرى كيف ستبدو التقسيمات إذا قمنا بمعاينتها على أداة المحكاة..
#header-wrapper
<-- 100% -->
#nav
<-- 100% -->
#content-wrapper
<-- 100% -->
#main
<-- 100% -->
الآن يمكنك بنفس الفكرة البدأ في تطبيق ماشرحناها على قالب تجريبي وحاول أن تغير في كل مرة إستعلامات الوسائط ومراجعة أجهزة المحاكاة إلى أن تفهمها جيدا وتصبح مرن في عملية التنقل بين الأجهزة أقصد شاشات العرض.
وذلك حتى تستطيع فهم مثل هذه الأنماط عندما تصادفها في القوالب والإضافات كما أننا في دروس قادمة مكملة لهذا البرنامج سنطبق أمثلة مختلفة لمستوى متقدم من هذا لإنشاء إصدار الجوال الخاص بموقعك.

ممكن اخى لو سمحت طريقة عمل هذه القائمة :laughing:
ردحذفhttp://www3.0zz0.com/2018/10/18/16/216154957.png
مرحبا أخي - القائمة المطلوبة هي نفس فكرة قوائم Dropdowns الخاصة بمكتبة bootstrap للأسف لا أستطيع شرحها هنا فهي تحتاج لتنسيق لكنك تستطيع مراجعة القسم من خلال هذا الرابط إضغط هنا
حذفأو يمكنك البحث في المتصفح عن كلمة js Dropdowns وستجد المئات من النماذج الرائعة والسهلة التركيب خصوصا على موقع https://codepen.io