الجمعة، 10 يوليو 2009

تطبيق على درس النماذج + إستخدام Javascript

هذا الدرس تطبيق للدرس السابق حول تنسيق النماذج ، ولكن سيكون عملي أكثر بشفرة HTML و CSS وأيضاً إستخدام Javascript في إضافة ميزتين للنموذج ، وهما ملاحطة حول الحقول المهمة بمجرد الضغط على الحقل (بإستخدام الحدث onFocus و onBlur ) وأيضاً التأكد من الحقول المهمة التي نسقناها ، درس سأحاول شرح النقاط المهمة فيه مع وجود مثال قبل قراءة الدرس وإن أعجبك تستطيع أيضاً تحميل ملف الدرس.

تطبيق على تنسيق نموذج بريدي

في البداية نبدأ بصفحة HTML ، ثم بكتابة النموذج الذي نريده ، لدينا مثلاً أربع نماذج لعملية تسجيل بسيطة تتكون من إسم المستخدم ، البريد الإلكتروني ، كلمة المرور ، تأكيد كلمة المرور ، ستكون الشفرة بهذه الطريقة كما تعلمناها قبل (راجع درس كتابة النماذج في XHTML - الجزء الأول ، وأيضاً تنسيق نماذج بإستخدام CSS) ، ألقي نظرة على شفرة HTML بسيطة وسبق شرحها:




نموذج تسجيل

أكمل النموذج التالي لإتمام عملية التسجيل:





يجب كتابة إسم المستخدم ، لا تقل عن 4 ولا تزيد عن 32 حرف.



يجب كتابة كلمة المرور ، لا تقل عن 8 حروف ولا تزيد عن 20.



يجب تأكيد كلمة المرورتأكيد كلمة المرور ، مماثلة لكلمة المرور السابقة.



يجب كتابة البريد الإلكتروني الصحيح






الآن ستلاحظ وجود خواص إضافية في وسم input ، وهم onFocus و onBlur وهم أحد خواص التي تستخدم في التأثير على أي عنصر من عناصر HTML بإستخدام Javascript ، الحدث الأول onFocus تستخدم في حال إنتقل إلى الحقل بالضغط عليه ، والحدث الثاني onBlur تستخدم في حال إنتقل إلى حقل آخر أو غادر الحقل بشكل عام.

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

div { margin: 0 auto; padding: 10px; width: 660px; background: #fdfdfd; border: 1px solid #9b9b9b; }

legend { margin: 0 0 10px; color: #871d28; font: bold 25px Arial, Helvetica, sans-serif; }
label {
margin: 4px 1px;
padding: 1px 0 0 5px;
float: right;
display: block;
width: 130px;
text-align: left;
font: bold 14px "simplified Arabic";
}
input.text {
margin: 4px 1px;
padding: 1px;
width: 150px;
border: 1px solid #bdbdbd;
font: bold 14px "simplified Arabic";
}
input#submit {
margin:5px 0;
width:70px;
height: 24px;
border: 1px solid #d6d6d6;
-moz-border-radius: 7px;
background-image: url(submit.gif);
background-repeat: repeat-x;
background-position: top;
font: bold 14px Arial, Helvetica, sans-serif;
color: #333333;
display: block;
}
span#important-1 , span#important-2 , span#important-3 , span#important-4 {
margin: 0;
padding: 1px 4px 4px;
width: 340px;
height: 20px;
display: inline-block;
background: #f0f0f0;
border: 1px solid #bdbdbd;
font: bold 14px "simplified Arabic";
visibility: hidden;
}

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

function msgToField(idElement) {
var element = document.getElementById(idElement);
if(element.style.visibility!='visible') {
element.style.visibility='visible';
} else {
element.style.visibility='hidden';
}
}
  • إنشاء دالة بإسم msgToField ويحتوي على متغير بإسم idElement لإستخدامه في تحديد الكلاسات المستخدمة في خاصية id.
  • إنشاء متغير لتحديد عنصر يستخدم خاصية id ، يمكنك أيضاً إستخدام “document.getElementsByClassName” للخاصية class وغيرها من خصائص dom.
  • التحقق إذا كان العنصر الذي سنحدده لا يحتوي على قيمة visible من خاصية visibility في CSS فسيكون قيمته visible ، إذا لم يتحقق الشرط تكون الخاصية visibility تُحدد على قيمة hidden.

الآن نأتي إلى التحقق من أن الحقول فارغة أم لا ، وأيضاً التحقق من أن كلمة المرور تتوافق مع حقل تأكيد كلمة المرور أم لا ، عبر شفرة javascript:

function validateForm () {
valid = true;
var userElement = document.getElementsByTagName("input");
if(userElement[0].value == "") {
alert("الرجاء كتابة إسم المستخدم");
valid = false;
} else if (userElement[0].value > 4 || userElement[0].value < 32) {
alert("تأكد من عدد حروف إسم المستخدم");
valid = false;
} else if (userElement[1].value == "") {
alert("الرجاء كتابة كلمة المرور");
valid = false;
} else if (userElement[2].value == "") {
alert("الرجاء كتابة تأكيد كلمة المرور");
valid = false;
} else if (userElement[3].value == "") {
alert("الرجاء كتابة البريد الإلكتروني");
valid = false;
} else if (userElement[2].value != userElement[1].value) {
alert("كلمة المرور الآخيرة التي كتبتها غير متطابقة مع كلمة المرور الأولى");
valid = false;
}

return valid;
}

ملاحظات على الشفرة:

  • إنشاء دالة بإسم validateForm ، وتعيين متغير valid بقيمة true. (يعني صحيح)
  • تحديد الوسم input عن طريق المتغير userElement.
  • التحقق ما إذا كانت الحقول فارغة ، نتحقق لكل حقل ، وأيضاً يتم تحديدها على شكل مصفوفات userElement[0] ، userElement[1] ، userElement .. إلى العدد الحقول التي تريدها ، ..
  • إذا كان الحقل فارغ فستظهر له عبارة خطأ مع تحديد المتغير valid على القيمة false.
  • قيمة المتغير valid هي التي ستحدد مرور النموذج إلى الصفحة التي بعدها أم لا.

نضيف بداخل الوسم form الحدث onSubmit وأضفناها سابقاً فقط للتذكير:



إنتهى كل شيء! هناك ملاحظة في حال وضعت خاصية visibility التابعة لتقنية CSS ضمن وسم span ، غير شفرة Javascript إلى هذه الشفرة:

function msgToField(idElement) {
var element = document.getElementById(idElement);
if(element.style.visibility!='hidden') {
element.style.visibility='hidden';
} else {
element.style.visibility='visible';
}
}

فقط تغيير بدلاً من التأكد من تحديد قيمة hidden بدلاً من visible ، لأن التأثير في النموذج لن يدخل بشكل صحيح ، ستظهر لك مشكلة عند التطبيق أو ضع خاصية visiblity ضمن ملف css أو ضمن العنصر head مع إستخدام الشفرة السابقة التي إستخدمناها.

طريقة أخرى للنموذج

يمكننا عرض طريقة أخرى وهنا سنجري تعديل على طريقة التأكد من عدم خلو الحقول المطلوبة فبدلاً من إستخدام التنبية في كل مرة عن طريق Alert ولكن هذه المرة عن طريق عنصر سنقوم بإشائه بجانب كل حقل بواسطة الوسم span يظهر فقط عن ترك الحقول فارغة وفي نفس الوقت تغيير لون وصف الحقول وحدود الحقول أيضاً إضافة للتنبيهات وفي حال كتابة الحقول وتحقيق الشرط الذي نريده سترجع الأمور كما كانت لكل حقل من الحقول.

تطبيق على تنسيق نموذج بريدي بشكل آخر

كما ترون تستطيع رؤية مثال حي عليه ، وأيضاً شفرة Javscript سهلة لن تحتاج إلى تحديد كل حقل بواسطة “document.getElementsByTags” أو “document.getElementById” أو حتى بإستخدام الكلاس ، كل ما في الأمر هو تحديد أماكن العناصر عن طريق إنشاء متغيرات خاصة فيها وإستخدامها في حلقة تكرار for مرة واحدة بهذه الطريقة:

function validateForm () {
valid = true;
var inputElement = document.getElementById("register").getElementsByTagName("input");
var labelElement = document.getElementById("register").getElementsByTagName("label");
var spanElement = document.getElementById("register").getElementsByTagName("span");
for (i=0; i < 4; i++) {
if(inputElement[i].value == "") {
inputElement[i].style.border = "1px solid red";
labelElement[i].style.color = "red";
spanElement[i].style.visibility = "visible";
valid = false;
} else {
inputElement[i].style.border = "1px solid #bdbdbd";
labelElement[i].style.color = "#000";
spanElement[i].style.visibility = "hidden";
}
}

if(inputElement.password.value != inputElement.passwordConfirm.value) {
alert("الرجاء التحقق من تساوي الحقول الخاصة بكلمة المرور");
valid = false;
}
return valid;
}

ستجدون التنسيق CSS مع المثال أو مع الأمثلة المرفقة

أطر العمل(Frameworks) لتطبيقات الويب بإستخدام php

، أو إطار العمل وهو عبارة عن تطبيقات متكاملة تساعد مطوري الويب على أداء أعمالهم البرمجية بسرعة وأقل جهد مع توفر الإتقان والإحترافية في العمل ، يعتمد إطار العمل غالباً على نظام MVC إختصار لـ Model View Controller لفصل واجهة الإستخدام عن منطقة العمل ويمكننا شرح Model View Controller بهذه الطريقة على ثلاث طبقات:
  • Model: يوضح كيفية عمل البرمجة التي ستطبق في البرنامج أو التطبيق.
  • View: يعرض واجهة التطبيق الذي يريده المبرمج.
  • Controller: يربط بين Model و View ويقوم بتنفيذ الأوامر ويتعبر المتحكم الرئيسي للنظام.

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

أطر عمل مختلفة لـ php

Zend Framework: إطار عمل مفتوح المصدر من إنشاء شركة Zend Technologies ، يتعبر من أسهل أطر العمل تعلماً وإستخداماً ويمتاز بمرونته وتوفر وثائق كثيرة ومفيدة ، وتتوفر فيه واجهات API عدة من مزودين وموفرين لها مثل Google ، Amazon ، Yahoo ، Flickr وتدعم إنشاء مشاريع الويب 2.0 ، والأجاكس ، ولها عدة مكونات متعلقة بنظام MVC مثل:

  • Zend_Controller
  • Zend_Controller_Action
  • Zend_Controller_Dispatcher
  • Zend_Controller_Plugin
  • Zend_Controller_RewriteRouter
  • Zend_View
  • Zend_Http_Request
  • Zend_Http_Response

وعدة مكونات يمكنك التعرف عليها أثناء إستخدامك لها ، أما تقييمها كإطار عمل فلا أستطيع أن أقيم وخاصة أن عمرها قليل ولكن هناك فرق بين الإصدارات وخاصة ما قبل الإصدارة الأولى وبعدها وقمت بتجربتها شخصياً في الخادم المحلي منذ فترة ورأيتها سهلة ولكن أعتقد تنقصها أشياء إذا قارنّاها بـ CakePHP.

CakePHP: إطار عمل آخر مفتوح المصدر ويعتبر من أقوى أطر العمل ومعروف عند المبرمجين ، يمتاز أيضاً بالمرونة وسهولة فهمه ( ولكن ليس هذا في البداية! :) ) إذ تحتاج إلى ممارسة دائمة في البداية وتطبيق عملي على الدروس والمقالات التي يوفرها فريق إطار العمل ، لا يوجد أي كتاب يباع على شبكة الإنترنت حالياً حول هذا الإطار (أعتقد ذلك) ولكن يوجد دليل مبسط و مجموعة على Google Groups تستطيع من خلالها متابعة الجديد والدروس حول CakePHP.

هناك إطر عمل أخرى أيضاً مثل Codeigniter ، symfony ، Akelos وغيرها أيضاً ، ولكل مبرمج ذوقه في إختيار إطار العمل الذي يناسبه ويفضله.

Frameworks أو أطر العمل متوفرة في لغات برمجية عدة مثل Ruby ، ASP وغيرها ، يمكنك معرفة المزيد عن أطر العمل المختلفة ، الإطار الأشهر حالياً هي Ruby On Rails ومستخدمة بكثرة وهناك عدة مشاريع ويب 2.0 تم عملها بإطار عمل Ruby On Rails مثل twitter ، Backpack ، صحيح تركيزي كان في هذه المقالة حول php ولكن لا يمنع التعرف إلى لغة برمجية أخرى وخاصة إن كانت توفر الكثير وتمتاز بأشياء لا توجد عند غيرها.

كتب أنصحك بمطالعتها

Beginning CakePHP: From Novice to Professional

لم أقم بشراءه ولا قراءة نبذه عنه ولكن أعتقد أنه مناسب وخاصة أنه كتاب من كتب Apress الرائعة.

Zend Framework in Action

كتاب يستحق القراءة ، سيقربك أكثر إلى Zend Framework وتوجد به دروس عملية وشرح سهل جداً.

Practical Web 2.0 Applications with PHP

كتاب ” ممارسة تطبيقات الويب 2.0 مع php ” كتاب رائع أيضاً يجعلك تدخل إلى مفاهيم الويب 2.0 بشكل عملي كما يستخدم في دروسه العملية إطار عمل Zend Framework.



فوائد تصميم صفحات الويب بالطريقة اليدوية

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

أيهما أصح تقوم بإنشاء صفحة الويب بإستخدام xhtml بشكل يدوي مع إستخدام الأوسمة والعناصر أم بإستخدام البرامج أو المحررات التي تعتمد على واجهة WYSIWYG (ما تراه هو ما تحصل عليه - What You See Is What You Get ) ؟ الأساس والعملي بإعتقادي هو الجواب الأول ، ما هي الأسباب التي تجعلك تبدأ بالتصميم بواسطة شفرة xhtml؟

الإحتراف يبدأ من هنا

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

الممارسة الدائمة

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

سرعة الكتابة

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

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

تشريح الصفحات

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

في حالة الطواريء

أتذكر قبل عدة سنوات عندما كنت من الأشخاص الذين يعتمدون على تصميم صفحاتهم بإستخدام الفرونت بيج متجاهلاً طريقة عمل الواجهة عن طريق شفرة HTML وعدم معرفة الأخطاء التي ينتجها هذا البرنامج الذي تم إستبداله ببرنامج Microsoft Expression.

خلال عملي بهذا البرنامج في إحدى المواقع حصلت معي مشكلة في الجهاز إضطررت بعدها بإعادة تنصيب نظام تشغيل الويندوز ولكن لم يكن معي البرنامج الذي أستعمله في تصميم المواقع لدي! تخيل موقف مثل هذا وخاصةً إن كان لديك الوقت الكافي قليل لتسليم عمل أو إنجاز تصميم موقعك بأسرع وقت ما الذي كنت ستفعله؟

هذه بعض الفوائد تعود لإستخدام الطريقة اليدوية في كتابة وتصميم أي صفحة ويب تريدها ، كما أنها تعودك بإستمرار للكتابة تساعدك أيضاً على تعلم تقنيات أخرى بسرعة كـ XML و Javascript وغيرها.

مصادر حول تقنية CSS3

مع ظهور الإصدار الثالث لتقنية CSS منذ فترة من قبل منظمة W3c المستخدمة في تنسيق مواقع الويب بجانب تقنيات مثل HTML، XML والتي لازال فريق CSS WG في منظمة W3c يعمل على الإصدارة الثالثة والتي تدعمها بعض متصفحات التي تعتمد على محرك Gecko و Webkit مثل Firefox و Safari بإستثناء المتصفح Internet Explorer، مع دعمها بعض مميزات CSS3 وليست جميعها، يمكنك رؤية إختبار دعم CSS3 للمتصفحات.

سأعرض مميزات ومصادر الإصدارة الثالثة من تقنية CSS للإستفادة منها وخاصة أنها معتمدة ومستخدمة حالياً في عدة متصفحات ومواقع وبها مميزات يمكن أن توفر عليك والوقت وتضيف المزيد من الجودة والمرونة إلى عملك.

ملاحظة: يمكنك تحميل أمثلة مميزات CSS3 (جميع الأمثلة) أو عن طريق نهاية كل عنوان من المميزات يتجد رابط تحميل خاص بكل ميزة مذكورة هنا.

مميزات تقنيةCSS3

بالنسبة للمميزات الجديدة في الإصدار الثالث والتي إستخدمت من قبل الكثير من المدونات والمواقع في الوقت الحالي إضافةً إلى وجودها مسبقاً في عدة أماكن أو مستخدمة في مكتبات أخرى مثل المحددات الجديدة Selectors في مكتبة jQuery على سبيل المثال، دعونا نعرض أهم المميزات إضافةً إلى مقالات ومصادر تتحدث عنها.

المحددات Selectors

هناك إضافات جديدة بما يتعلق بالمحددات في CSS وهي تفيدك في تحديد عناصر وثيقة HTML أكثر وتنسيقها بما يناسب لمعرفة المزيد عن المحددات هناك مواضيع كثيرة تتحدث عنها منها عربية:

بالنسبة للمحددات Selectors الجديدة إضافة إلى ما يسمى بالعناصر الزائفة pseudo-elements والأصناف الزائفة pseudo-classes في CSS3 فهي مستخدمة في مكتبة jQuery على سبيل المثال، أعني مستخدمة مسبقاً من قبل المطورين، يمكنك معرفة المزيد عنها وتجربتها عن طريق jQuery Selectors (إذا كنت تريد أن تجربها على المتصفح) ، الأداة السابقة تستطيع من خلالها تجربة المحددات بشكل مباشر ورؤية النتيجة عن طريق الصفحة بواسطة مكتبة jQuery.

selectors

مواضيع متعلقة بالمحددات Selectors

خلفيات المتعددة Multiple-Backgrounds

تتيح لك CSS3 إضافة خلفيات متعددة في عنصر واحد تريد تنسيقه خلال وثيقة HTML ، مثال على هذه الميزة:

multiple-background

شفرة css كما هي في الصورة:

1.#box {
2.background: url(sharp.png) left 1px no-repeat,
3.url(top.png) top no-repeat,
4.url(bottom.png) bottom no-repeat,
5.url(background.png) repeat,
6.}

شفرة html للمثال الموضح في الصورة:

1.<div id="box">
2.<h1>عنوان النصh1>
3.<p>تجربة الكتابة في هذه الصفحة.p>
4.div>

مواضيع متعلقة بالخلفيات المتعددة Multiple-Backgrounds:

ملاحظات على ميزة الخلفيات المتعددة Multiple-Backgrounds:

  • تعمل هذه الميزة في المتصفحات التي صممت لمحرك Webkit مثل Apple Safari و Google Crome.
  • يجب إضافة فاصلة ” , ” عند نهاية كل خلفية جديدة.

يمكنك تحميل المثال السابق على الخلفيات المتعددة لرؤيته.

الحدود Borders

تستطيع إختصار ما كنت تفعله في الإصدارة الثانية إذا كنت تريد عمل حواف دائرية لصندوق عن طريق الحدود في CSS3 أو إستبدال الحدود بصورة من الصور ، سنآخذ خاصيتين متعلقة بالحدود وسنبدأ بهذه الصورة التي تصور لنا عمل خاصية border-image:

border-image

تصوير آخر ولكن لخاصية border-radius التي تفيدك في زيادة نصف قطر الزوايا الأربع للصندوق وهي رائعة ومختصرة جداً:

border-radius

شفرة css كما هي في الصورة (صورة المثال على خاصية border-radius):

01.#box {
02.margin: 10px auto;
03.padding: 7px;
04.width: 238px;
05.height: auto;
06.background-color: #e6e9ed;
07.border: 1px solid #666666;
08.border-radius: 10px;
09.-moz-border-radius: 10px;
10.-webkit-border-radius: 10px;
11.-o-border-radius: 10px;
12.-opera-border-radius: 10px;
13.}

شفرة html للمثال الموضح في الصورة (صورة المثال على خاصية border-radius):

1.<div id="box">
2.<h1>عنوان النصh1>
3.<p>تجربة الكتابة في هذه الصفحة.p>
4.div>

مواضيع متعلقة بالحدود Borders

ملاحظات على ميزة الحدود Borders:

  • الخواص الجديدة للحدود مثل border-radius يجب تأكيد عملها في المتصفحات التي تعمل على محرك Webkit ، Gecho،Presto بكتابة سطور إضافية مثل

    “moz-border-radius” ، “webkit-border-radius” ، “o-border-radius” ، “opera-border-radius”.
  • خواص الحدود الجديدة في CSS3 هي: border-image ، border-radius ، border-break ، box-shadow

الألوان Colors

تستطيع من خلال إضافة أو ميزة الألوان في CSS3 تحديد الألوان التي تريدها بأكثر من صيغة أحد الصيغ المشهورة وهي صيغة rgb وطريقة تحديد اللون بإستخدام هذه الصيغة تكون بهذه الطريقة:

color-rgb

شفرة css كما هي في الصورة (المثال السابق على صيغة rgb في خاصية background-color):

1.#box {
2.margin: 0 auto;
3.padding: 20px 0;
4.width: 100px;
5.height: 60px;
6.background-color: rgb(210, 204, 222);
7.}

شفرة html للمثال الموضح في الصورة (المثال السابق على صيغة rgb في خاصية background-color):

1.<div id="box">
2.<h1>Boxh1>
3.div>

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

color-rgba

الحال أيضاً ينطبق على صيغ أخرى مثل:

  • CMYK
  • HSL
  • HSLA

شفرة css كما هي في الصورة (المثال السابق على صيغة rgba في خاصية background-color):

01.#box-one {
02.background-color: rgba(210, 204, 222, 1);
03.}
04.#box-two {
05.background-color: rgba(210, 204, 222, 0.5);
06.}
07.#box-three {
08.background-color: rgba(210, 204, 222, 0.2);
09.}
10.
11./* بقية التنسيق */
12.#box {
13.margin: 0 auto;
14.width: 300px;
15.}
16.#box-one, #box-two, #box-three {
17.padding: 20px 0;
18.width: 100px;
19.height: 60px;
20.float: right;
21.}}

شفرة html للمثال الموضح في الصورة (المثال السابق على صيغة rgba في خاصية background-color):

1.<div id="box">
2.<h1>Boxh1>
3.div>

مواضيع متعلقة بالألوان Colors

يمكنك تحميل المثال السابق على الخلفيات المتعددة لرؤيته.

الخطوط Fonts

بالنسبة للخطوط يتم تحسين ظهور النص بشكل واضح إضافةً إلى إختيار خط خارجي لإستخدامه في عنوان أو فقرة، يتم ذلك عن طريق font-face@ وتتكون من خاصيتين:

  • font-family: إسم الخط الذي تريد إستخدامه.
  • src: عنوان الخط الذي تريد إستخدامه، يمكنك تحديد نوع الخط أكثر عن طريق format.

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

font-face

شفرة css كما هي في الصورة (المثال السابق على font-face في الخطوط):

01.@font-face {
02.font-family: "A.C.M.E. Secret Agent";
03.src: url('C:\WINDOWS\Fonts\acmesa.TTF');
04.}
05.
06.h1 {
07.font-family: "A.C.M.E. Secret Agent";
08.color: #3e87f5;
09.}

شفرة html للمثال الموضح في الصورة (المثال السابق على font-face في الخطوط):

1.<h1>Lorem Ipsumh1>
2.
3.<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer semper ullamcorper massa et eleifend. Aliquam eget turpis risus. Nulla auctor, odio nec fringilla tempus, tellus turpis sagittis tellus, eget egestas dui sem sit amet risus.p>

مواضيع متعلقة بالخطوط Fonts

ملاحظات على ميزة الخطوط Fonts:

  • المثال يعمل على محرك Webkit و Presto مثل متصفح Apple Safari ، Google Chrome، Opera.

يمكنك تحميل المثال السابق على الخلفيات المتعددة لرؤيته.

الظلال Shadows

إضافة جديدة وجميلة تساعد على وضع ظل للنصوص والعناصر أو الصناديق HTML أيضاً ، هذه الظلال يكون تكوينها عن طريق خاصية box-shadow و text-shadow ويمكن حساب قيمها بهذه الطريقة:

shadow-property

مثال على تظليل صندوق بإستخدام خاصية box-shadow:

bow-shadow

شفرة css كما هي في الصورة (المثال السابق على خاصية box-shadow):

01.#box {
02.padding: 13px;
03.margin: 0 auto;
04.width: 450px;
05.text-align: left;
06.background-color: #e9ecf2;
07.-moz-box-shadow: 7px 7px 10px #9c9c9c;
08.-webkit-box-shadow: 7px 7px 10px #9c9c9c;
09.-o-box-shadow: 7px 7px 10px #9c9c9c;
10.}

شفرة html للمثال الموضح في الصورة (المثال السابق على خاصية box-shadow):

1.<div id="box">
2.<h1>Lorem Ipsumh1>
3.
4.<p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.p>
5.
6.<p>The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English.p>
7.div>

مثال على تظليل نص بإستخدام خاصية text-shadow:

text-shadow

شفرة css كما هي في الصورة (المثال السابق على خاصية text-shadow):

1.h1, p {
2.text-shadow: 3px 2px 7px #9f9f9f;
3.}

شفرة html للمثال الموضح في الصورة (المثال السابق على خاصية text-shadow):

1.<h1>Lorem Ipsumh1>
2.
3.<p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.p>
4.
5.<div id="arabic">
6.<h1>عنوان جديدh1>
7.<p>نصوص عربية، دروس جديدة، مصادر متنوعة ..p>
8.div>

مواضيع متعلقة بالظلال Shadows

يمكنك تحميل المثال السابق على الخلفيات المتعددة لرؤيته.

تعدد الأعمدة Multi-Column

تقوم هذه خواص هذه الميزة بتنسيق العناصر على أكثر من عمود، مثل تقسيم فقرات متتالية على عمودين بدلاً من الوضع الطبيعي على عمود واحد في صفحة الويب، مثال على تقسيم فقرتين:

multi-column

شفرة css كما هي في الصورة (المثال السابق على تعدد الأعمدة Multi-column):

1.#text {
2.background-color: #E8ECF0;
3.-moz-column-count: 2;
4.-moz-column-gap: 25px;
5.}

شفرة html للمثال الموضح في الصورة (المثال السابق على تعدد الأعمدة Multi-column):

1.<div id="text">
2.<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin tempor enim id risus fermentum in auctor dolor venenatis. Maecenas eu elementum odio. Nulla in magna velit, a condimentum arcu.p>
3.
4.<p>Fusce porttitor eleifend nunc quis tristique. Aenean mollis viverra sapien, ac pellentesque purus iaculis quis. Quisque pulvinar, nibh a consectetur sodales, eros felis laoreet ante, non volutpat elit lacus a ante.p>
5.
6.<p>Fusce porttitor eleifend nunc quis tristique. Aenean mollis viverra sapien, ac pellentesque purus iaculis quis. Quisque pulvinar, nibh a consectetur sodales, eros felis laoreet ante, non volutpat elit lacus a ante.p>
7.div>

هناك عدة خصائص لتعدد الأعمدة وهي:

  • column-width: حجم العمود ، يمكنك تركه وحساب العمود تلقائياً
  • column-count: عدد الأعمدة
  • column-gap: المسافدة بين الأعمدة
  • column-rule: الحدود الفاصلة بين الأعمدة

يمكنك تحميل المثال السابق على الخلفيات المتعددة لرؤيته.

مواضيع متعلقة بتعدد الأعمدة Multi-Column

الحركات Animations

ميزة رائعة أيضاً وهي إمكانية تحريك عناصر HTML مباشرة من CSS مع وجود التوقيت وتحديد خواص CSS التي نريد إضافة الحركة فيها، هناك 5 خواص تابعة لهذه الميزة وأولها وهي الرئيسية “transition” وقيم هذه الخاصية هي الأربع خواص المتبقية ، خاصية transition-property تحدد من خلالها خواص CSS الباقية التي تريد عمل التحريك فيها أو وجود التأثير فيها.

أما خاصية transition-duration وهي تحدد مدة التحويل و خاصية transition-delay وهي تحدد مدة تأخير التحويل والقيمة موحدة بين الخاصيتين وهي الوقت ويمكن حسابها بالثانية أو أجزاء الثانية.

وأخيراً الخاصية transition-timing-function تحدد توقيت الحركة بشكل دقيق أكثر من الدوال السابقة وهي تتكون من عدة قيم وهي:

  • ease

  • liner
  • ease-in
  • ease-out
  • ease-in-out
  • cubic-bezier: تتكون من أربع قيم وهي x1,y1,x2,y2

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

webkit-transition

شفرة css كما هي في الصورة (المثال السابق على تمرير الفأرة على صورة “تجربة”):

01.img {
02.margin: 0 auto;
03.opacity: 1;
04.-webkit-transition-property: opacity;
05.-webkit-transition-duration: 1s;
06.-webkit-transition-timing-function: liner;
07.}
08.img:hover {
09.opacity: 0;
10.}

شفرة html للمثال الموضح في الصورة (المثال السابق على تمرير الفأرة على صورة “تجربة”):

1.<img src="submit.gif" alt="" />

أما التطبيق الثاني وهو على على صورة تشكل مربع صغير والتأثير يكون عند الضغط على الصورة (إستخدمت الجافاسكربت لظهور التأثير عند الضغط على الصورة) وتتحرك إلى اليسار في كل ضغطه إلى أن تصل إلى 5 ضغطات ونزيد قيمة الخاصية right = 100 في كل ضغطة:

شفرة css كما هي في الصورة (المثال السابق على تحريك الصورة من اليمين إلى اليسار بتوقيت قيمته 1.2 من الثانية):

1.img {
2.margin: 0;
3.position: relative;
4.right: 0;
5.-webkit-transition-property: -webkit-transform, right;
6.-webkit-transition-duration: 1.2s;
7.-webkit-transition-timing-function: liner;
8.}

شفرة html للمثال الموضح في الصورة (المثال السابق على تحريك الصورة من اليمين إلى اليسار بتوقيت قيمته 1.2 من الثانية):

1.<img src="square.gif" alt="#" />

شفرة Javascript ، سبب إضافة لغة Javascript هي تعديل قيمة خاصية right بعد كل ضغطة لكي تشاهد تحركها بتوقيت قيمته 1.2 من الثانية)

01.right = 0;
02.
03.function active_c () {
04.plusRight = right + 100;
05.if(plusRight <>
06.var full = 0;
07.document.getElementById("submit").getElementsByTagName("img")[0].style.right = plusRight+"px";
08.right = plusRight;
09.}
10.
11.}
12.
13.function loading() {
14.var active = document.getElementById("submit").getElementsByTagName("img")[0];
15.active.addEventListener("click",active_c,false);
16.}

مواضيع متعلقة بالحركات Animations

ملاحظات على ميزة الحركات Animations:

  • جميع خواص هذه الميزة تبدأ بـ “webkit” مثل “webkit-transition-” لأنها مدعومة في محرك webkit وتستطيع تجربتها في متصفح Apple Safari أو Google Chrome.

يمكنك تحميل المثال السابق على الحركات Animation لرؤيته.

دروس تعليمية

أضع هنا دروس شاملة لكافة مميزات CSS3 لمن يريد قراءتها من مصادر أخرى ..

إستخدام CSS3

r-css-tricks-css3

5 تقنيات تعرفك على CSS3

r-nettuts-css3

إبدأ مع CSS3

r-webmonkey-css3

مقدمة لـCSS3

r-design-shack-css3

مقدمة إلى CSS3

r-zen-css3

Get the best out of CSS3

r-dotnet-css3

مواقع متخصصة

إلى الآن لا توجد مواقع متخصصة كثيرة أجنبية ولا عربية أيضاً وجدت موقعين ممكن الإستفادة منهما ..

CSS3.info

css3info

CSS3.com

css3com

إستخدام الخصائص المذكورة في متصفحات الويب

خصائص CSS3 التي ذكرتها في الأمثلة السابقة تتطلب تزويدها بكلمة خاصة لتدعيمها في المحرك المستخدم في متصفح الويب، أمثلة على الكلمات:

  • moz: خاص بمتصفح Mozilla Firefox.
  • webkit: خاص متصفح Apple Safari و Google Chrome.
  • o: خاص بمتصفح Opera.
  • opera: خاص بمتصفح Oprera أيضاً، لست متأكد 100% من وجود الكلمة هذه.

مثال على كتابة خاصية border-radius:

  • moz-border-radius-
  • webkit-border-radius-
  • o-border-radius-
  • opera-border-radius-