• الرئيسية
  • تعرف علي
  • اتفاقية النشر
  • اتصال
  • خدمات
  • تابع خلاصات المدونة

« إخفاء و إظهار أجزاء من الصفحة + اضافة تأثير بـ jQuery
تحريك الخلفية باستعمال مكتبة jQuery + تطبيق على قائمة »
15

ترقيعات css ، الجمل الشرطية ، بالتفصيل الممل

يوليو
30

بسم الله الرحمن الرحيم .
الموضوع ظاهر من العنوان وهو موضوع شائك جدا في مناقشته ، لأن الأمر يتعلق باختلاف المتصفحات و تحليلها للأكواد ، اليوم إن شاء الله حاولت أن أنجز هذا الدرس ليكون مرجعا لمن أرد أن يضبط هذا الفن ، ألا وهو فن توافق الموقع مع جميع المتصفحات ، بجميع اصداراتها ، سأحاول أن أقسم أفكار الدرس إلى التالي :

  • مقدمة
  • الأسباب التي تدفعنا لترقيع ملفات مشاريعنا
  • فوائد الترقيعات
  • الجمل الشرطية
  • الترقيعات داخل ملفات التنسيق css
  • أدوات ستفيدك
  • مضار الترقيعات
  • ملاحظات أخيرة

مقدمة :

كلنا نعلم كثرة المستعرضات الموجودة حاليا ، مع اصداراتها ، مع اختلاف أصناف المستعملين ، كل يرتاح لنوع محدد لأسبابه الخاصة ، فمن الطبيعي لما تنتهي من تصميم موقعك أو مشروعك أن يظهر على كل مستعرض بشكل معين ، لتخصص كل متصفح بمعايير فريدة عن الآخر ، لذلك جعلت العايير القياسية w3c لتكون واسطة بين هذه المتصفحات ، ويتم اعتماد المشاريع عليها حتى يتسنى لك ، كمطور التحكم التام في موقعك ، من ناحية توافقه مع جميع المستعرضات ، هل هذا التوافق يأتي هكذا من غير تعب ؟؟ لا و إنما توجد أكواد و ملفات إضافية و جمل شرطية حتى تصل لإظهار موقعك بالوجه المرضي امام الجميع ، هذا ما نسميه بترقيعات css أو css hacks .

الأسباب التي تدفعنا لترقيع ملفات مشاريعنا :

يمكنني تلخيصها في التالي :

  • كثرة المتصفحات و كثرة اصداراتها و الاختلافات القليلة التي تظهر بين كل اصدار و الذي يليه من كل متصفح
  • هذه الاصدرات مبنية على تطور التقنيات و محاولة دعمها من طرف المتصفحات .
  • اختلاف أصناف الناس في استعمالاتهم ولا يمكنك أن تلزم على احد أي يستعمل نوعا محددا من المتصفحات ، و هذا الاختلاف راجع إلى :
    1. راحة المستعمل : مثلا- طريقة عرض الخطوط تختلف من متصفح لآخر -
    2. وجود مفضلة المستعمل في متصفح معين ، ولا يستطيع الاستغناء عنها
    3. الحالة المادية : بعض المستعملين له حواسب قديمة أو لا ترقى مميزاتها لتتماشى و متطلبات بعض المستعرضات الجديدة .
  • ضمان عدد أكبر من الزوار والمتابعين لموقعك .
  • أن تتحكم في موقعك ، و تنشره كما تريد انت ، لا كما يريد المتصفح

الجمل الشرطية :

الجمل الشرطية هي جمل أنشأتها مايكروسوفت لدعم متصفحاتها ، انطلاقا من النسخة 5 فما فوق ، دور هذه الجمل وهو ان تتحكم في شكل موقعك أكثر و أكثر ، حيث يمكنك أن تجعل لكل متصفح ملف تنسيق خاص به ، و كذلك لكل اصدار من اكسبلورر ، لنر الآن بعض الأمثلة لطريقة العمل بها :

<!--[if IE ]>
<link href="iecss.css" rel="stylesheet" type="text/css" />
< ![endif]-->

الجملة التالية أشترط فيها ، لو كان المتصفح الذي يستعمله الزائر هو Internet Explorer أن يستخدم ملف التنسيق الفلاني الذي سميته iecss.css
كما يمكنني أن أكتبه هكذا :

<!--
<link href="iecss.css" rel="stylesheet" type="text/css" />
-->

سأحاول أن أضع جميع الأوامر التي تستعمل في هذه الجمل الشرطية و نضرب لها أمثلة بعدها إن شاء الله ، يمكنني أن ألخص جميع الأوامر هنا :

  • IE : للشرط على جميع اصدارات الاكسبلورر
  • lt : تستعمل لاشتراط ما هو أقل من نسخة معينة ، دون إدخال النسخة الحالية
  • lte : لاشتراط أقل من أو يساوي نسخة معينة
  • gt : لاشتراط أكبر من نسخة معينة للاكسبلورر
  • gte : لاشتراط أكبر من أو يساوي نسخة معينة من الاكسبلورر
  • ! : لاستثناء نسخة معينة
  • & : لدمج أكثر من نسخة في نفس الشرط
  • | : لاشتراط ، إذا كانت النسخة الفلانية ،أو النسخة الفلانية ، يعني تلعب دور أو
  • () : لإداخل العبارة يدويا ، مثلا gte أكتبها كاملة هكذا (greater than or equal to) ، يعني تكرار بنوع أطول
  • true : وهو عند تحقيق قيمة معينة لشرط
  • false : القيمة خطأ وهي عدم تحقيق شرط

و الآن بعد ان انتهينا من تعداد الأوامر ، نأتي لضرب بعض الأمثلة ليتبين كل شيء :

<!--[if IE ]>
<link href="ie.css" rel="stylesheet" type="text/css" />
< ![endif]-->

نشترط ، في حين كان الزائر يستعمل المتصفح الانترنت اكسبلورر عامة ، بأي اصدار ، اعرض لي ملف التنسيق الفلاني – الذي أكون قد جهزته من قبل – ie.css
كما يمكنني أن احدد رقم اصدار الاكسبلورر بإضافة رقمه داخل الشرط :

<!--[if IE5 ]>
<link href="ie5.css" rel="stylesheet" type="text/css" />
< ![endif]-->
<!--[if IE6 ]>
<link href="ie6.css" rel="stylesheet" type="text/css" />
< ![endif]-->
<!--[if IE7 ]>
<link href="ie7.css" rel="stylesheet" type="text/css" />
< ![endif]-->
<!--[if IE8 ]>
<link href="ie8.css" rel="stylesheet" type="text/css" />
< ![endif]-->

هنا حاولت أن أجعل لكل اصدار اكسبلورر ملفا خاصا بترقيعاته و جميع التغييرات التي أصلحت أخطاءها لتظهر على الاكسبلورر كما أريد ،
في حالة تكرار الأكواد يمكنني أن أجمع أكثر من إصدار في شرط واحد ، هكذا :

<!--[if IE 7 & IE8]>-->
<link href="ie7-8.css" rel="stylesheet" type="text/css" />
<!--<![endif]-->

، او في حالة ما أنني أريد لملف تنسيق معين أن يظهر فقط لمن يستعمل ie7 أو ie8 ، يمكنني كتابة :

<!--[if (IE 6)|(IE 7)]>
<link href="ie7-8.css" rel="stylesheet" type="text/css" />
< ![endif]-->

أو إحدى اصدارات الاكسبلورر لا تحتاج ترقيع و ظهرت عادية ، ولكن تحتاج بقية الاصدارات ترقيعات ، يمكنني استثناء اصدار واحد بكتابة التالي :

<!--[if !IE 8]>
<link href="ie.css" rel="stylesheet" type="text/css" />
< ![endif]-->

أي أن التنسيقات التي داخل ملف ie.css ستطبق على كل الإصدارات سوى 8 ستبقى كما هي أصلية في الملف الرئيسي
كما يمكنني أن اشترط ما هو اقل من نسخة معينة بالتالي :

<!--[if lt IE 7 ]>
<link href="ie.css" rel="stylesheet" type="text/css" />
< ![endif]-->

أو أقل من أو يساوي :

<!--[if lte IE 7 ]>
<link href="ie.css" rel="stylesheet" type="text/css" />
< ![endif]-->

و هكذا قس على جميع الأمثلة ، حيث أن المشروع يصبح كلعبة في يدك تتحكم فيه كما أردت .

الترقيعات داخل ملفات css

في بعض الأحيان تكون الترقيعات عبارة عن سطر أو سطرين أو ثلاث ، لا تحتاج أن تفتح لها ملفا جديدا ، يمكنك إدراجها داخل كود css بكل برودة ، و تعمل بنفس العمل الذي تعمل به داخل الملفات المستقلة :

  • html>body هذه تستعمل لإعطاء قيمة معينة للمتصفحات الحديثة
    html>body #test{
    هنا الخصائص التي ستظهر فقط في المتصفحات الحديثة
    }
    #test {
    هنا الخصائص التي ستظهر على متصفحات عادية او قديمة
    }

    مثال عملي :

    #test{
    position: absolute;
    }
    html>body #test{
    position: fixed;
    }

    fixed في position لا تعمل مع ie6 ، لذلك عملت position : abslute عادية هي الأولى ليتعرف عليها ie6 ، و بعدها أععطيت قيمة fixed للـ position حيث سيتعرف عليها فقط المتصفحات الحديثة

  • * html .testهذه تستعمل لإعطاء ترقيع معين خاص بـ ie6 مثلا :
    .test {
    position: fixed;
    }
    * html .test{
    position: absolute;
    }

    الاولى عادية ، لكن الثانية خاصة بـ ie6

  • *+html .test : خاصة بـ ie6 و ie7 :
    .test {
    margin : 10px;
    }
    *+html .test{
    margin : 12px;
    }
  • إدخال الكود داخل أسطر الأوامر :
    .test {
    position: fixed;
    _position: absolute;
    }

    بحيث سطر fixed عادي ، و الذي يليه هو الترقيع خاص بالاكسبلورر
    إذا أردت تجاهل اصدار ie6 في سطر معين مع إبقاء ie7 ، يمكنني كتابة التالي :

    .test {
    margin: 10px;	/*خاص بجميع المتصفحات */
    _margin :15px; /* خاص بالاكسبلورر */ 
    *margin : 15px; /*  هنا تجاهلنا ie6  */
    }
  • التعليقات في Css ، يمكنني أن أستفيد منها حتى هي بالنسبة لجهاز الماك ، من المتعارف عليه أن التعليقات في css تكتب هكذا
    /* هن التعليق */

    لكن ، أريد أن أظهر تنسيقا معينا لاصدار معين من متصفح معين ، ولكن أريد ان اخفيه على نظام الماك Mac يمكنني أن أستغل التعليقات في هذا الغرض :

    /* هذا النوع من التعليقات يؤدي إلى إخفاء الخواص على ie5 على نظام الماك \*/
    .test {
    color: red;
    }
    /*  نهاية */

    بحيث أن \ ( antislash ) التي عملتها قبل غلق التعليق الأول جعلت نظام الماك يعتبر كل ما بين التعليقين تعليق ، ولا يعترف به ولا يتم تطبيق أوامره ، أما لو أردت أن تظهر و يتم الاعتراف بها ، يمكنني إضافة التالي \*// قبل ما أغلق التعليق الأول :

    /* هنا سيتم تطبيق الخواص التي بين التعليقين \*//*/
    .test {
    color: red;
    }
    /* نهاية*/

لا يزال مجال كتابة الترقيعات داخل ملفات css طويلا ، و حالاته و اوامره كثيرة ، ساحاول أن اكمل البقية في تدوينة اخرى إن شاء الله ..

أدوات ستفيدك

  • قم بتحميل جميع المتصفحات على جهازك
  • حمل برنامج ieTster التي تستطيع من خلاله اختبار مشروعك و مدى توافقه مع اصدارات ie كاملة

حمل هذه الاضافات الخاصة بالفايرفوكس :

  • Firebug
  • Html Validator
  • Web Developer
  • IE Tab
  • مضار الترقيعات

    يمكنني أن ألخصها هنا :

  • كثرة الأكواد ، و كثرة استدعاءات الملفات في وسم الهيد ، مما يجعل هناك عملية من التحقق => ضغط و بطأ المشروع
  • صعوبة التعديل في المستقبل ، حيث أنك لو اضطررت أن تغير شيئا بسيطا في مشروعك ستظطر لتغيير عالم من الملفات الترقيعية ، وهنا تفقد حلاوة css التي تتميز في تحكمك بمشروعك بملف واحد
  • في حالة استعمال ترقيعات عامة ، يقع شيء من الخلط في المشروع و تداخل الأكواد ن مما لا يسلم المشروع منه

ملاحظات أخيرة

  • نحن كمطورين لابد أن نمر بكل هذه المراحل من التعب و الشقاء لتكون أعمالنا مرضية عند الآخرين
  • نحن لا ندعوا الناس للتخلي عن بعض المتصفحات – مثلا نتعصب للفايرفوكس أو أي متصفح و نلزم على الزائر استعماله !!! ولكننا ندعو الزوار لترقية متصفحاتهم الى اصدارات جديدة فقط حتى يساعد بعضنا بعضا في الرقي بالمحتوى العربي
  • حاول أن تتجنب في موقعك عبارات – هذا الموقع لا يدعم الاكسبلورر و بكل فخر – الموقع مصمم خصيصا للفايرفوكس – هذا الموقع متطابق تماما مع الفايرفوكس ، وغيرها من العبارات الرنانة ، والتي لا تدل لا على فخر ولا اي شيء، إنما الفخر كل الفخر أن تجعل مشروعك موافقا للمتصفحات الحديثة على الأقل
  • انت كمقدم خدمات : اعلم أنك بكتابتك ملفات ترقيعية اضافية ، فإن هذا تعب اضافي للعمل ، فحاول أن تجعل رواتب أعمالك تستحق جهد تعبك ولا تنزل لمستويات من لا يتعبون ولا يخططون لمشاريعهم كما تخطط .

هذا .. و صلى الله وسلم و بارك على محمد و على آله و صحبه و سلم تسليما كثيرا
و السلام ورحمة الله وبركاته .

انشر هذا المقال
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Live
  • MySpace
  • TwitThis
  • Yahoo! Buzz
  • FriendFeed
  • LinkedIn
  • Ping.fm
  • StumbleUpon

هذه التدوينة نُشرت في الخميس, 30 يوليو, 2009 عند 1:19 ص و مصنفة تحت تصنيف css , xhtml. يمكنك متابعة أي تعليقات عبر رابط RSS 2.0. يمكنك ترك تعليق, أو تعقيب من مدونتك.
الوسوم :css, hacks, ترقيع, جمل شرطية, مشروع, مطور

    لتكون على علم بآخر المواضيع و المقالات المضافة في fez-soft blog يمكنك الاشترك في :
  • خلاصات المقالات
  • خلاصات التعليقات
  • متابعة الكاتب على twitter
  • القائمة البريدية : بمجرد أن تضع بريدك الالكتروني و تشترك ، سنصلك قائمة بآخر المواضيع المضافة في المدونة تلقائيا إلى بريدك الالكتروني .
متابعة معلومات عن المقال
« إخفاء و إظهار أجزاء من الصفحة + اضافة تأثير بـ jQuery
تحريك الخلفية باستعمال مكتبة jQuery + تطبيق على قائمة »

15 من التعليقات لـ “ترقيعات css ، الجمل الشرطية ، بالتفصيل الممل”

  1. عماد قال:
    30 يوليو 2009 عند 1:31 ص

    كفية ووفيت :)
    أعجبتني الجملة التالية كثيرا :
    “انت كمقدم خدمات : اعلم أنك بكتابتك ملفات ترقيعية اضافية ، فإن هذا تعب اضافي للعمل ، فحاول أن تجعل رواتب أعمالك تستحق جهد تعبك ولا تنزل لمستويات من لا يتعبون ولا يخططون لمشاريعهم كما تخطط .” :)

    ردرد
  2. G991.com قال:
    30 يوليو 2009 عند 6:30 ص

    السلام عليكم …. معلومات قيمة
    أنا أعاني منها في صفحتي الرئيسيه وانشاءالله تنحل مشكلتي معا متصفح الفوكس للأسف g991.com
    الأقسام ماتطلع بشكل مرتب الا علي الاكسبلورر فقط

    تحياتي
    theiphoner.net

    ردرد
  3. warzazi قال:
    30 يوليو 2009 عند 7:20 ص

    لا أدري إن كان الـ IE يستحق كل هذا التعب.. لكنك محق بالتأكيد !!

    يا ريت أخي محمد لو تكتب لنا عن بعض أوامر الـ css التي تحتاج للترقيع على الإكسبلورر ..

    سلمت يمينك و كما العادة مبدع .. :)

    ردرد
  4. Fez-Soft قال:
    30 يوليو 2009 عند 9:39 ص

    اهلا بكم
    @G991.com راجع الكود سورس ، وحاول أن تكتبه بطريقة قياسية ، و إن بقيت ترقيعات للاكسبلورر راجع الموضوع و طبق طريقة الترقيع
    @warzazi ليس الـ ie الذي يستاهل منا التعب ، و إنما نحترم الزوار ككل و نحترم استعمالاتهم ، بالنسبة لترقيعات الاكسبلورر راجع النقطتين :
    - الجمل الشرطية
    - الترقيعات داخل ملفات التنسيق css
    ففيها تفصيل مهم للاوامر التي ستحتاج في الترقيع ، لا تنس تحميل الأدوات المعروضة في الموضوع ..

    بالتوفيق لكل

    ردرد
  5. warzazi قال:
    30 يوليو 2009 عند 10:10 ص

    كل الأدوات التي عرضتها موجودة في جهازي, شكرا لك ..

    تم الترقيع بحمد الله بارك الله فيك أخي محمد ..

    ردرد
  6. warzazi قال:
    30 يوليو 2009 عند 10:13 ص

    بالمناسبة تقنية التعليقات هنا,

    استعملتها في قالب الووردبريس الذي صممته, أرجو أن لا يكون هناك مانع..

    استفدت من الفكرة فقط و نفذتها مع بعض التعديلات .. :)

    ردرد
  7. Fez-Soft قال:
    30 يوليو 2009 عند 9:06 م

    لا مانع ، و مبارك التصميم

    ردرد
  8. ياسين قال:
    1 سبتمبر 2009 عند 6:23 ص

    فعلا التطوير مع الأخد بعين الإعتبار جميع برامج التصفح أمر مؤلم :(
    لقد سبق واتعملت هده التقنيات مع مشكل الصور ذات الإمتداد png في ie6

    شكرا على المجهود

    ردرد
  9. M.Bekhit قال:
    16 فبراير 2010 عند 4:55 ص

    لدي مشكلة وهي ليست في اختلاف التصميم بين المتصفحات ولكن اختلاف التصميم بين الأجهزم مع وجود نفس الاصدار من المتصفح الانترنت اكسبلورر ولا ادري اين المشكلة هلي في كروت الشاشة لها تأثير ام اي شيء اخر اجهله ولقد عانين من طول البحث ولم اجد معين .. أرجو الرد لمن لديه تفسير او اي حل . وجزاكم الله خيرا

    ردرد
  10. Fez-Soft قال:
    18 فبراير 2010 عند 9:17 م

    @M.Bekhit سيكون المشكل من اختلاف أبعاد الشاشات ، لهذا يجب أخذ عين الاعتبار عند التقسيم ، و التوزيع و التنسيق

    ردرد
  11. تخصيص أوامر ie بطريقة جديدة و مريحة « Fez-Soft Blog قال:
    2 أبريل 2010 عند 2:13 م

    [...] سواء خلال العمل ، أو عند الحاجة للتعديل على عمل ما .. في موضوع ترقيعات css لـ ie الذي خالفت قوانينه و معاييره العالم بأكمله ، [...]

  12. Alfy قال:
    23 مايو 2010 عند 6:33 ص

    يا ريت أخي محمد لو تكتب لنا عن بعض أوامر الـ css التي تحتاج للترقيع على الإكسبلورر ..
    +1

    ردرد
  13. Bond Berry قال:
    23 مايو 2010 عند 9:29 م

    يا ريت أخي محمد لو تكتب لنا عن بعض أوامر الـ css التي تحتاج للترقيع على الإكسبلورر ..
    +1

    ردرد
  14. محدمد سعد قال:
    17 يوليو 2010 عند 2:41 م

    بارك الله فيك اخوى

    ردرد
  15. كمال قال:
    31 أغسطس 2010 عند 1:51 ص

    السلام عليكم
    استفسار بسيط واعتقد انه مهم ومفيد
    نحن نعلم ان صور png لا تعمل مع الاكسبلولر 6

    انا موقعي كله صور png لو مثلا انا عملت نسخه ثانيه من الموقع بس صور jpg مثلا

    الحين كيف ممكن انفذ هالفكرة اللي في راسي وهل هي ممكنه او هل هناك طريقة معينه لتنفيذها او هل هناك طريقة بديلها عن التي سوق اقوم بشرحها الان

    وهي :

    هذا كود html لصور :

    وهي png
    فقط انا اريد تغيير png الى jpg اذا كان المتصفح اكسبلولر 6 هل ممكن استخدم if و else و end مثلا !

    وشكرا

    << على فكرة ليست صعبه لو كانت ممكنه ^_^

    ردرد

إكتب تعليقك

اضغط هنا لإلغاء الرد.

إذا أردت أن تظهر صورة بجانب اسمك في التعليق ، شارك في خدمة Gravatar .

  • Donate

    إذا أعجبتك المدونة و رأيت أنك قد استفدت منها و تريد أن تدعمني ، يمكنك أن تشتري لي أحد الكتب التي أحتاج قراءتها ، من Amazon .
  • تصنيفات

    • css , xhtml
    • JavaScript
    • Photoshop, Flash, illustrator
    • PHP
    • تطوير
    • عام
  • مواقعي

    • SetCode
    • Fez-Soft Portfolio
    • مدونة محمد شاطر
  • الأرشيف

    • يوليو 2010
    • يونيو 2010
    • أبريل 2010
    • فبراير 2010
    • يناير 2010
    • ديسمبر 2009
    • نوفمبر 2009
    • أكتوبر 2009
    • سبتمبر 2009
    • أغسطس 2009
    • يوليو 2009
    • يونيو 2009
    • مايو 2009
  • كلمات مفتاحية

    alert Application Assembler confirm css div html html4 html5 javascript jquery media opacity PHP prompt screen Top xhtml أفكار إخفاء إظهار استدعاء تأثير ترقيع تسريع تصميم تطبيق تفصيل تنسيق توافق توزيع ثلاثي أبعاد حقوق روابط زجاجي صفحات عميل فكرة قائمة قالب قواعد متفرعة مشاريع مصمم مطور
  • روابط

    • مدونة يزيد

© Fez-Soft Blog

    All right reserved , Theme By Fez-Soft , RSS posts , RSS comments .
  • تعرف علي
  • اتفاقية النشر
  • خدمات
  • اتصال
  • الرئيسية
عن Fez-Soft
mohammed chater مرحبا ، اسمي محمد شاطر ، Mohammed chater , أعرف تحت مسمى Fez-Soft, طالب و مصمم و مطور تطبيقات ، من فاس المغرب . . يمكنك أن تتعرف علي اكثر من هنا ، أو متابعة حسابي على twitter ، ستجد في هذه المدونة دروسا تطويرية للمستوى المتقدم في تصميم الويب ، و البرمجة بالـ JavaScript , يمكنك متابعتها من خلال الخلاصات ، كما يمكنك أن تراسلني من هنا ، لو دعت الضرورة لذلك ، آمل ان يكون وقتك في المدونة لك ، لا عليك .
الأكثر زيارة
  • فضلا .. لا تستعمل Framework css
  • الخطوط العربية : قواعد ، أفكار و حيل
  • SetCode خدمة جديدة تطل على عالم المطورين
  • ترقيعات css ، الجمل الشرطية ، بالتفصيل الممل
  • قائمة أفقية ، مع تحديد title بـ jQuery بطريقة فريدة
  • تطبيقات hover على عناصر text و ليس صور
آخر التعليقات
  • كمال  : السلام عليكم استفسار بسيط واعتقد انه مهم ومفيد ن...
  • صلاح الإمام  : جزاك الله كل خير ع الطرح الرائع...
  • مفيد  : رائع منذ فترة و انا ابحث عن هذه المعلومات...
  • عبدالله  : شكرا لك على جملة النصائح...
  • ندى  : شكراً لك .. ولكن مشاكل الترميز توتر الشخص !...