HTML

ما هي لغة HTML؟

    

في البداية HTML هي لغة بسيطة جداً تستخدم لوصف ما تحتويه صفحات الويب ( Web Pages ) و معنى ذلك أنها تستخدم لتحديد العناصر الموجودة في الصفحة مثل العناوين, الفقرات, الأزرار, الصور, القوائم, الجداول و غيرها من الأشياء التي يمكن إضافتها في صفحات الويب.

    

إذاً نستخدم هذه اللغة لهدف واحد فقط و هو تحديد بنية صفحات الويب ( Pages Structure ).
    الآن عليك معرفة أن كلمة HTML هي إختصار لجملة Hyper Text Markup Language و هذا يعني أنها لا تعتبر لغة برمجة ( Programming Language ).

   
    

مكونات صفحة الويب

    

بشكل عام, لتبني صفحات ويب إحترافية عليك تعلم اللغات التالية و بنفس الترتيب:

    
  1.           
  2. لغة HTML من أجل تحديد العناصر التي نريد إضافتها في الصفحة.
  3.          
  4. لغة CSS من أجل تحسين تصميم العناصر الموجودة في الصفحة.
  5.          
  6. لغة Javascript و نستخدمها لإضافة مؤثرات في صفحات الويب و لمعالجة البيانات التي يتم إدخالها و عرضها في الصفحات.
  7.      
    

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



إصدارات HTML

    

من بداية ظهور المتصفحات و لغة HTML يتم تطويرها و إضافة المزيد من الميزات فيها مع كل إصدار جديد و الجميل في الأمر أنه من يعرف إصدار واحد منها يمكنه بكل سهولة التعامل مع أي إصدار آخر لأن مبادئ اللغة هي نفسها.

    

الإصدار الذي يجب عليك تعلمه في الوقت الحالي هو الإصدار الخامس من اللغة الذي يقال له HTML5.
    هذا الإصدار أضيف فيه العديد من الميزات المهمة التي لم يسبق إضافتها في الإصدارات السابقة أهمها إمكانية عرض فيديوهات, أغاني و رسومات في الصفحات بكل سهولة و بشكل مباشر بدون الحاجة لاستخدام إضافات ( Plugins ) خاصة لذلك, لهذا أصبح الجميع يستخدمه بدلاً من باقي الإصدارات.

   

مراحل تطور اللغة

    
  •           
  • عام 1989 قام المهندس Tim Berners-Lee بابتكار أول مشروع برمجي هدفه مشاركة البيانات عبر شبكة النت ( World Wide Web ) و التي تختصر بالأحرف WWW التي لا زلنا حتى يومنا نراها في روابط المواقع. في ذاك الوقت كان الدخول للنت صعباً لأنه لم يكن هناك متصفحات تعرض المحتوى بشكل جميل.
  •          
  • عام 1991 قام المهندس Tim Berners-Lee بإبتكار لغة HTML بهدف عرض البيانات بشكل أفضل بداخل المتصفح.
  •          
  • عام 1993 قام المهندس Dave Raggett بإضافة بعض التطويرات على اللغة و قام بتسمية الإصدار HTML+.
  •          
  • عام 1994 قام المهندس Tim Berners-Lee بتأسيس شركة W3C حتى يتابعوا تطوير لغة HTML و البروتكولات التي تستخدم في شبكة النت بشكل منظم و لتكون المركز الأساسي للتطوير.
  •          
  • عام 1995 قام مجموعة من المهندسين بإضافة بعض التطويرات على اللغة و قاموا بتسمية الإصدار HTML 2.0.
  •          
  • عام 1997 قامت شركة W3C بإضافة بعض التطويرات على اللغة و قاموا بتسمية الإصدار HTML 3.2.
  •          
  • عام 1999 قامت شركة W3C بإضافة بعض التطويرات على اللغة و قاموا بتسمية الإصدار HTML 4.01.
  •          
  • عام 2014 قامت شركة W3C بإضافة بعض التطويرات المهمة جداً على اللغة و قاموا بتسمية الإصدار HTML 5.
  •          
  • عام 2016 قامت شركة W3C بإضافة بعض التطويرات على على الإصدار الخامس و قاموا بتسمية الإصدار HTML 5.1.
  •          
  • عام 2017 قامت شركة W3C بإضافة بعض التطويرات على على الإصدار الخامس و قاموا بتسمية الإصدار HTML 5.2.

  •      

ماذا سأتعلم في هذه الدورة؟

    

في هذه الدورة ستتعلم الإصدار HTML 5 و كل ما هو جديد فيه لأنه أهم و آخر إصدار يستخدم فيها.

    

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

   
    

هل أحتاج معرفة أي شيء قبل تعلم هذه الدورة؟

    

إطلاقاً, أسلوب الشرح المعتمد في هذه الدورة لا يتطلب منك معرفة أي شيء مسبق.

     

لمن تم إعداد هذا المرجع؟

    

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

    

في الدرس التالي سنرشدك لتحميل البرامج التي يمكنك استخدامها لكتابة الكود و التي بإمكانك إستعمالها نفسها في مشاريعك الخاصة في المستقبل.


  • المحرر




    المحرر ( Editor ) هو أي برنامج يمكن استخدامه للتعديل على محتوى الملفات النصية.



    في العادة, أنظمة التشغيل دائماً نجد عليها محررات نصوص ( Text Editors ) جاهزة, فمثلاً في نظام ويندوز يوجد محرر جاهز إسمه Notepad, و في نظام ماك يوجد محرر جاهز إسمه TextEdit, و في نظام لينكس يوجد محرر جاهز إسمه Gedit أو Leafpad أو غيرهما على حسب التوزيعة التي تستخدمها.



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

    استخدام محرر جيد للعمل



    عند استخدام محرر بهدف كتابة كود, قم دائماً باختيار محرر ألوانه جيدة و يكون بنفس الوقت يساعدك أثناء كتابة الكود.

    لتدرك ضرورة ذلك, لاحظ كيف يظهر الكود في برنامج Notepad الإفتراضي الموجود في ويندوز و كيف يظهر نفس الكود في برنامج جيد مثل VSCode الذي يمكنك تحميله و تثبيته بنفسك.



    الكود في برنامج Notepad يظهر بلون واحد كالتالي.



    نفس الكود السابق في برنامج VSCode يظهر بشكل جميل جداً و سهل القراءة كالتالي.





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

    خطوات تحميل و تثبيت و استخدام VSCode



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

أنواع الوسوم في HTML

    

بشكل عام, أي شيء يتم إضافته في الصفحة يقال له وسم ( Tag ) و يوجد نوعين من الوسوم:

    
  •           
  • وسوم فردية ( Single Tags ) و هذه تعني أن الوسم لا يمكن وضع وسم آخر فيه مثل الوسم <br/>.
  •          
  • وسوم زوجية ( Paired Tags ) و يقصد بها أن الوسم يمكن أن يوضع فيه وسوم أخرى مثل الوسم <p>  </p>.
  •      
   

    

معلومة تقنية

    

عند استخدام وسم فردي يمكنك عدم وضع الرمز 

/ في آخره إن أردت و لكن يفضّل وضعه للإشارة إلى أنه وسم فردي.
    كمثال بسيط, سواء قمت بكتابة <br> أو <br/> فالنتيجة هي نفسها تماماً.


    

الوسم الزوجي عبارة عن وسم له بداية و نهاية.
    نهاية الوسم الزوجي تكون بإضافة الرمز 

/ في أول إسم الوسم فقط.
    كمثال بسيط, الوسم الزوجي p نبدأه بالوسم <p> و ننهيه بالوسم </p>.


    

لا تقلق ستتعلم كيف تستخدم جميع الوسوم الفردية و الزوجية لاحقاً و لكننا نعلمك عن هذه الأمور من الآن تجهيزاً لها.



التعليقات في HTML

    

التعليق ( Comment ) عبارة عن وسم خاص يمكنك وضعه في أي مكان تريد في الصفحة بهدف كتابة ملاحظات تساعدك في الشرح أو لتذكر سبب استخدام الوسوم في حال أردت مستقبلاً مراجعة كود الصفحة و التعديل عليه.

    

لوضع تعليق إستخدم الوسم 

<!-- --> و أكتب النص بداخله كالتالي.


             

مثال

         <!DOCTYPE html><html>    <head>    </head>    <body>        <!-- هذا التعليق الأول و هو لا يظهر أمام المستخدم العادي -->                <!-- هذا التعليق الثاني الذي قمنا        بكتابته على ثلاثة أسطر و هو لا          يظهر أيضاً أمام المستخدم العادي -->    </body></html>         

جرب الكود



وسوم الصفحة الأساسية في HTML

    

بشكل عام, أي صفحة HTML تتكون من قسمين أساسيين كالتالي:

    
  •           
  • القسم 

    Head

    و الذي تضع فيه كل تحتاجه لتصميم الصفحة و لكن المستخدم لا يراه.
  •          
  • القسم 

    Body

    و الذي نضع فيه كل الأشياء التي سيراها المستخدم.
  •      
   
    

الآن عند كتابة كود HTML5 يجب ذكر المعلومات التالية على الأقل في الملف.

    <!DOCTYPE html><html>    <head>    </head>    <body>            </body></html>    
    
  •           
  • <!DOCTYPE html>

     نضعه في أول الملف دائماً حتى يعلم المتصفح أننا نستخدم الإصدار الخامس من لغة HTML.
  •          
  • <html> </html>

    نضعه بهدف كتابة كل الكود بداخله.
  •          
  • <head> </head>

    نضع في كل الأشياء التي لن يراها المستخدم بداخل الصفحة.
  •          
  • <body> </body>

    تضع فيه كل الأشياء التي سيراها المستخدم بداخل الصفحة.
  •      
   
    

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

Body يراه المستخدم و كل ما تكتبه في القسم Head لا يراه المستخدم.


خصائص وسوم HTML

    

أغلب الوسوم التي تضيفها في الكود يمكن إضافة خصائص لها على الشكل التالي.

                             <element attribute="value"> </element>                   
  •           
  • element: يقصد بها إسم الوسم.
  •          
  • attribute: يقصد بها الخاصيّة التي يملكها الوسم بالأساس و لكننا ننوي تحديد قيمتها.
  •          
  • value: يقصد بها القيمة التي سنضعها في الخاصيّة و دائماً يجب وضعها بين "".
  •      
   
    

كمثال بسيط, عند إضافة صورة في الصفحة نستخدم الوسم 

<img> و بداخله نحدد مسار الصورة التي سيتم عرضها بواسطة الخاصية src كالتالي.


             

مثال

         <!DOCTYPE html><html>    <head>    </head>    <body>        <img src="/tutorials/html/basics/html-5-icon.PNG">    </body></html>         

جرب الكود



أمثلة على الأشياء التي يمكن إضافتها في القسم Head

    

عندما تنشئ ملف HTML على حاسوبك و تقوم بعرضه بواسطة المتصفح, ستلاحظ أنه يعرض لك إسم الملف المفتوح في المتصفح كالتالي.

    

   
    

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

    

   
           

ملاحظة

              

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

         

إذاً في متصفح هرمش يمكنك رؤية نتيجة أي كود تكتبه فيه باستثناء الكود الذي يسمح بتغيير عنوان و أيقونة الصفحة التي تظهر في المتصفح.
         لمشاهدة نتيجة الأمثلة التالية, قم بإنشاء ملف إسمه 

test.html على حاسوبك و اكتب الكود فيه.


       
    

طريقة وضع عنوان للملف

    

في حال أردت وضع عنوان للملف حتى يظهر في المتصفح بدلاً من إسم الملف نفسه, قم بوضعه بداخل 

<title> </title> في القسم Head كالتالي.


             

مثال

         <!DOCTYPE html><html>    <head>        <title>My new title</title>    </head>    <body>    </body></html>         

شاهد النتيجة

   

    

طريقة وضع أيقونة للملف

    

في العادة الصورة التي يتم وضعها كأيقونة للصفحة يكون إسمها 

favicon.ico و حجمها 16 x 16 و لكن تستطيع وضع مسار أي صورة لديك بشرط أن يكون لها الحجم المذكور. لوضع أيقونة بجانب عنوان الصفحة يجب أن تضع السطر التالي كما هو في القسم Head مع وضع مسار الصورة التي تريد عرضها مكان الكلمة icon-path.


    <link rel="icon" type="image/x-icon" href="icon-path">    
    

في المثال التالي قمنا بوضع أيقونة موقع هرمش نفسها بجانب عنوان الصفحة.

             

مثال

         <!DOCTYPE html><html>    <head>        <title>My new title</title>        <link rel="icon" type="image/x-icon" href="/tutorials/html/basics/favicon.png">    </head>    <body>    </body></html>         

شاهد النتيجة



أمثلة على الأشياء التي يمكن إضافتها في القسم Body

    

في صفحة الويب و بالتحديد في القسم 

Body الذي يراه المستخدم يمكنك إضافة الكثير من الأشياء مثل الصور, القوائم, الأزرار و أي شيء يخطر في بالك.


    

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

             

مثال

         <!DOCTYPE html><html>    <head>        <!-- لم نضع أي شيء في هذا القسم -->    </head>    <body>        <!-- هنا قمنا بعرض عنوان عريض في وسط الصفحة -->        <center>            <h2>HTML is easy to learn</h2>        </center>                <!-- هنا قمنا بعرض فقرة عادية -->        <p>Hypertext Markup Language (HTML) is the standard markup language for        documents designed to be displayed in a web browser. It can be assisted by        technologies such as Cascading Style Sheets (CSS) and scripting languages        such as JavaScript.</p>                <!-- هنا قمنا بإضافة صورة -->        <img src="/tutorials/html/basics/html-5-icon.png">                <!-- هنا قمنا بإضافة سطرين فارغين لإبعاد الصورة عما سنعرضه بعدها -->        <br><br>                <!-- هنا قمنا بعرض عنوان أصغر من العنوان الأول -->        <h3>HTML usage</h3>        <!-- هنا قمنا بعرض قائمة -->        <ul>            <li>It's the standard markup language for creating Web pages</li>            <li>Describes the structure of a Web page</li>            <li>Consists of a series of elements</li>            <li>tells the browser how to display the content</li>        </ul>    </body></html>         

جرب الكود

طريقة كتابة أسماء الوسوم لا تؤثر في HTML

    

سواء قمت بكتابة إسم الوسم بأحرف صغيرة ( Small Letters ) أو بأحرف كبيرة ( Capital Letters ) فإن ذلك لا يسبب أي مشكلة.

             

مثال

         <!DOCTYPE html><html>    <head></head>    <body>        <!-- إسم وسم البداية و إسم وسم النهاية كتبناهما بأحرف صغيرة -->        <p>This is first paragraph<p>                <!-- إسم وسم البداية و إسم وسم النهاية كتبناهما بأحرف كبيرة -->        <P>This is second paragraph<P>                <!-- إسم وسم البداية كتبناه بأحرف كبيرة و إسم وسم النهاية كتبناه بأحرف صغيرة -->        <P>This is third paragraph<p>    </body></html>         

جرب الكود


مفهوم الفقرات

    

الفقرة ( Paragraph ) عبارة عن مساحة يتم تخصيصها لعرض النص الذي نضعه فيها على سطر جديد.

   
    

أنواع الفقرات

    

هناك نوعين من الفقرات التي يمكن إضافتها في الصفحة:

    
  •           
  • فقرات مخصصة لعرض النص بالشكل المناسب.
  •          
  • فقرات مخصصة لعرض النص كما هو.
  •      
    

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

الفقرات المخصصة لعرض النص بالشكل المناسب

    

لعرض نص عادي في الصفحة نضع النص بداخل

<p> </p>.
    معلومة: p إختصار لكلمة Paragraph التي تعني فقرة.


    

عند عرض النص بواسطة هذا الوسم يقوم المتصفح بإزالة أي مسافات فارغة يجد أنه لا داعي لها ( Extra White Spaces ) على النحو التالي:

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

في المثال التالي قمنا بعرض فقرتين في الصفحة.
    عند تجربة الكود لاحظ كيف أنه سيتم عرض الفقرتين تحت بعضهما في الصفحة.

             

المثال الأول

         <p>This is a paragraph.</p><p>This is another paragraph.</p>         

جرب الكود

   

    

في المثال التالي تعمدنا وضع مسافات فارغة بين الكلمات.
    عند تجربة الكود لاحظ كيف سيقوم المتصفح بإزالة جميع المسافات التي يجد أنه لا داعي لها و كيف سيعرض النص بشكل جميل.

             

المثال الثاني

         <p>   This  paragraph    contains  extra    spaces.</p>         

جرب الكود

   

    

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

             

المثال الثالث

         <p>Hello guys, my name is Mhamad.I start learning programming at 19.One year later I create harmash.com</p>         

جرب الكود

النزول على سطر جديد في الفقرة

    

لإعلام المتصفح أنك تريد النزول على سطر جديد بداخل الفقرة, يجب وضع 

<br> في نهاية السطر.
    معلومة: br إختصار لكلمة Break التي يقصد بها في حالتنا إيقاف العرض على نفس السطر.


   
    

في المثال التالي قمنا بإعلام المتصفح أنه من بعد كلمة 

paragraph. يجب عرض النص المتبقي على سطر جديد.


             

مثال

         <p>Here we break the paragraph.<br>This will apear on a new line.</p>         

جرب الكود

عرض أكثر من مسافة بين الكلمات في الفقرة

    

لإعلام المتصفح أنك تريد وضع أكثر من مسافة فارغة وراء بعض في النص, فالحل هو استخدام الرمز &nbsp; الذي يعني مسافة فارغة بالنسبة للمتصفح.
    كل رمز &nbsp; تضعه يفهمه المتصفح على أنه مسافة فارغة يجب عدم إزالتها.

   
    

في المثال التالي قمنا بإضافة 4 مسافات فارغة في بداية النص.

             

مثال

                        <p>&nbsp;&nbsp;&nbsp;&nbsp;We add 4 white spaces at the beginning.</p>                   

جرب الكود

الفقرات المخصصة لعرض النص كما هو

    

لعرض النص كما يظهر بالضبط في الكود نضع النص بداخل

<pre> </pre>.
    معلومة: pre إختصار لعبارة Preformatted Text التي تعني نص منسق مسبقاً.


    

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

   
    

في المثال التالي قمنا بكتابة نص بداخل 

<pre> </pre> حتى يتم عرضه كما هو في المتصفح.


             

مثال

         <pre>Name: Mhamad HarmushJob:  ProgrammerAge:  26</pre>         

جرب الكود

طريقة عرض كود HTML في الصفحة

    

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

    

لجعل المتصفح يعتبر الكود المكتوب كأحرف عادية فهناك شيئان يضمنا ذلك:

    
  •           
  • تحويل كل 

    <

     موجود في الكود إلى &lt;.
  •          
  • تحويل كل 

    &

     موجود في الكود إلى &amp;.
  •      
   
    

في المثال التالي قمنا بعرض كود HTML في الصفحة من خلال تبديل كل 

< موجود في الكود إلى &lt;.
    ملاحظة: وضعنا الكود بداخل <pre> </pre> حتى يتم عرضه بنفس الشكل الذي وضعناه فيه.


             

مثال

         <pre>
&lt;!DOCTYPE html>
&lt;html>
&lt;body>
&lt;p>HTML &amp; CSS are so easy to learn&lt;/p>
&lt;/body>
&lt;/html>
</pre>                   

جرب الكود

طريقة عرض خط أفقي

    

لعرض خط أفقي في الصفحة نضع 

<hr> فقط.
    معلومة: hr إختصار لكلمة Horizontal Rule التي تعني مسطرة أفقية.


   
    

في المثال التالي قمنا بعرض خط أفقي بين الفقرتين.

             

مثال

         <p>In Harmash.com you can learn every thing you need for free.</p><hr><p>You can learn Algorithms, Java, C++, Python, SQL etc..</p>         

جرب الكود


مفهوم العناوين و أنواعها

    

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

    

يوجد 6 أحجام من العناوين التي يمكنك إضافتها في الصفحة تبدأ من 

<h1> الذي يعطيك أكبر عنوان و تنتهي عند <h6> الذي يعطيك أصغر عنوان.


   
    

في المثال التالي قمنا بعرض جميع العناوين من الأكبر إلى الأصغر حتى تلاحظ فرق الحجم بينهم.

             

مثال

         <h1>Heading 1</h1><h2>Heading 2</h2><h3>Heading 3</h3><h4>Heading 4</h4><h5>Heading 5</h5><h6>Heading 6</h6>         

جرب الكود

أهمية العناوين بالنسبة لمحركات البحث

    

العنوان الرئيسي الذي تضعه للصفحة يعتبر أهم عنوان تضعه في الصفحة بالنسبة لمحركات البحث ( Search Engines ) مثل جوجل و ياهو و غيرهما. بعدها في الأهمية يأتي مباشرةً العناوين الموضوعة للفقرات. يليها العناوين الفرعية الأقل أهمية الموضوعة في الفقرات, و في النهاية محتوى الفقرات نفسه.

    

لذلك ننصحك دائماً بوضع عنوان الصفحة بين 

<h1> </h1> و عنوان أي فقرة بين <h2> </h2> و أي عنوان فرعي في الفقرة بين <h3> </h3> و هكذا.



مفهوم تنسيق النص

    

تنسيق النص ( Text Formatting ) يقصد به عرض النص بشكل أفضل فمثلاً إن كان هناك كلمة مهمة في النص يمكننا عرضها بخط عريض, و إن كان هناك شيء تم حذفه يمكننا عرضه خط فوقه للإشارة إلى أنه محذوف و هكذا.

    

في HTML يوجد العديد من الوسوم الجاهزة التي يمكن استخدامها في تنسيق النص و هي ما سنتعرف عليها في هذا الدرس.

     

عرض النص بخط عريض

    

أي كلمة أو جملة في النص تريد عرضها بخط عريض ( Bold ) يمكنك وضعها بين 

<b> </b> أو بين <strong> </strong>.
    بشكل عام إستخدم <b> إذا أردت عرض الكلام بخط عريض و استخدم <strong> في حال كان الكلام مهم.


   
    

في المثال التالي قمنا بعرض كلمة في الفقرة بخط عريض باستخدام 

<b> و <strong> أيضاً.


             

مثال

         <p>My name is <b>Mhamad</b></p><p>My name is <strong>Mhamad</strong></p>         

جرب الكود

     

عرض النص بخط مائل

    

أي كلمة أو جملة في النص تريد عرضها بخط مائل ( Italic ) يمكنك وضعها بين 

<i> </i> أو بين <em> </em>.


    

الفرق الوحيد بين الإثنين هو أنه في حال كان المستخدم كفيف و يعتمد على قارئ الشاشة ( Screen Reader ) حتى يقرأ له محتوى الصفحة, فإن القارئ سيغير نبرته حين يقرأ النص المائل الموضوع بداخل 

<em> </em> لا أكثر.
    لذلك استخدم <i> إذا أردت عرض نص مائل و استخدم <em> في حال أردت عرض نص مائل و أردت جعل قارئ الشاشة يغيّر نبرته حين يقرأ الكلام المائل.


   
    

في المثال التالي قمنا بعرض جملة في الفقرة بخط مائل باستخدام 

<i> و <em> أيضاً.


             

مثال

         <p><i>Lord of the Rings</i> is a very large book.</p><p><em>Lord of the Rings</em> is a very large book.</p>         

جرب الكود

     

عرض نص محذوف

    

أي كلمة أو جملة في النص تريد وضع خط عليها و كأنها محذوفة يمكنك وضعها بين 

<del> </del> أو بين <s> </s>.
    بشكل عام إستخدم <del> إذا أردت للإشارة إلى أن الكلام قد تم حذفه و استخدم <s> عند الإشارة إلى أن الكلام محذوف لأنه لم يعد صحيحاً.


   
    

في المثال التالي قمنا بعرض كلام مشطوب في الفقرة باستخدام 

<del> و <s> أيضاً.


             

مثال

         <p>HTML is so <del>hard</del> easy to learn.</p><p>The Earth is <s>flat</s> spherical in shape.</p>         

جرب الكود

     

وضع خط تحت النص

    

أي كلمة أو جملة في النص تريد عرض خط تحتها ( Underline ) يمكنك وضعها بين 

<u> </u> أو بين <ins> </ins>.
    بشكل عام إستخدم <u> إذا أردت وضع خط تحت الكلام و استخدم <ins> في حال كان سبب وضع الخط هو الإشارة إلى أن النص تم إضافته على النص الموجود مسبقاً.


   
    

في المثال التالي قمنا بعرض خط تحت الكلام الموجود في الفقرة باستخدام

<u>.


             

المثال الأول

         <p><u>Name:</u> Mhamad Harmush</p>         

جرب الكود

   


    

في المثال التالي قمنا بعرض كلام محذوف باستخدام 

<del> يليه كلام تحته خط باستخدام <ins> للإشارة إلى أنه تم تبديل الكلام المحذوف بالكلام الذي تحته خط.


             

المثال الثاني

         <p>HTML is <del>not important</del> <ins>essential</ins> in web design.</p>         

جرب الكود

     

تعليم أجزاء في النص

    

تعليم النص ( Text Marking ) فكرته وضع لون أصفر خلف جزئية محددة في النص للفت نظر المستخدم إليها.
    أي كلمة أو جملة في النص تريد تعليمها باللون الأصفر يمكنك وضعها بين

<mark> </mark>.


   
    

في المثال التالي قمنا بتعليم كلمة موجودة في الفقرة باستخدام

<mark>.


             

مثال

         <p><mark>Fast food</mark> affect your body!</p>         

جرب الكود

     

عرض جزء من النص بشكل مرتفع أو منخفض

    

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

    

في HTML يوجد نوعين من الوسوم التي تستخدم لهذا الغرض:

    
  •           
  • أي جزء في النص تريد عرضه بشكل مرتفع قليلاً عن باقي النص ضعه بين <sup> </sup>.
  •          
  • أي جزء في النص تريد عرضه بشكل منخفض قليلاً عن باقي النص ضعه بين <sub> </sub>.
  •      
    

معلومة: 

sup إختصار لكلمة Super Script التي تعني نص مرتفع, و sub إختصار لكلمة Sub Script التي تعني نص منخفض.


   
    

في المثال التالي قمنا بعرض جزء من النص بداخل 

<sup> </sup> حتى يظهر بشكل مرتفع قليلاً عنه و جزء من النص بداخل <sub> </sub> حتى يظهر بشكل منخفض قليلاً عنه.


             

مثال

         <p>10<sup>6</sup> log<sub>2</sub> 64 = 6 Mbps</p>         

جرب الكود


مفهوم الإقتباس

    

النص المقتبس ( Quoted text ) يقصد به أن النص الموضوع في الصفحة تم نقله عن أحد ما و وضعه كما هو في الصفحة.
    النص المقتبس في العادة يتم عرضه بشكل مختلف قليلاً عن باقي النص الموجود في الصفحة بهدف إظهاره بشكل أفضل.

    

في HTML يوجد العديد من الوسوم الجاهزة التي يمكن استخدامها لعرض الإقتباسات و هي ما سنتعرف عليها في هذا الدرس.

     

عرض النص المقتبس بداخل بلوك

    

إذا أردت العرض النص مقتبس على سطر منفرد مع عرض هامش حوله من كل الجهات, يمكنك وضع النص بداخل

<blockquote> </blockquote>.


   
    

معلومة تقنية

    

إذا كان الإقتباس الموضوع في الصفحة مأخوذ من موقع آخر, قم بذكر رابط الموقع الذي نسخت الإقتباس منه بداخل الخاصية 

cite التي يملكها الوسم <blockquote> لأن هذا الأمر سيجعل الموقع المقتبس منه ذو أهمية أكثر بالنسبة لمحركات البحث و بالتالي تكون تفيد الموقع الذي نسخت الإقتباس منه.


   
    

في المثال التالي قمنا بعرض إقتباس باستخدام 

<blockquote> بدون ذكر الموقع الذي جلبنا الإقتباس منه.


             

المثال الأول

         <blockquote>In 1980, physicist Tim Berners-Lee, a contractor at CERN, proposed and prototyped ENQUIRE, a system for CERN researchers to use and share documents. In 1989, Berners-Lee wrote a memo proposing an Internet-based hypertext system.</blockquote>         

جرب الكود

   

    

في المثال التالي قمنا بعرض إقتباس باستخدام 

<blockquote> مع ذكر الموقع الذي جلبنا الإقتباس منه.


             

المثال الثاني

         <blockquote cite="https://en.wikipedia.org/wiki/HTML">In 1980, physicist Tim Berners-Lee, a contractor at CERN, proposed and prototyped ENQUIRE, a system for CERN researchers to use and share documents. In 1989, Berners-Lee wrote a memo proposing an Internet-based hypertext system.</blockquote>         

جرب الكود

     

عرض النص المقتبس بين " "

    

إذا أردت عرض النص المقتبس بين 

" " يمكنك وضعه بداخل <q> </q>.


   
    

معلومة تقنية

    

سبب إستخدام الوسم 

<q> </q> بدل كتابة " " بشكل مباشر هو أنه يمكن تخصيص طريقة عرض الوسم بواسطة كود CSS.
    عندها سيتم تطبيق التصميم الذي نريد على كل نص مقتبس موضوع بين <q> </q>.


   
    

في المثال التالي قمنا بعرض النص المقتبس باستخدام 

<q> حتى يتم عرضه بين " ".


             

المثال الأول

         <p>My teacher said: <q>HTML is not a programming language</q></p>         

جرب الكود

   

    

في المثال التالي قمنا بتخصيص طريقة ظهور النص المقتبس باستخدام 

<q> بواسطة كود CSS حتى يظهر دائماً بلون أحمر.
    ملاحظة: لا تشغل بالك بالكود المكتوب بلغة CSS لأنك ستفهمه بكل سهولة حين تتعلم CSS.


             

المثال الثاني

         <!DOCTYPE html><html>    <head>        <!-- أحمر q يقوم بجعل لون النص الموضوع بداخل أي وسم CSS هذا كود -->        <style>            q { color: red }          </style>    </head>    <body>        <!-- سيتم عرضه بين " " و باللون الأحمر <q> أي كلام موضوع بداخل الوسم -->        <p>My teacher said: <q>HTML is not a programming language</q>        and he also said that <q>It's very easy to learn</q></p>    </body></html>         

جرب الكود

     

وضع إسم مختصر بدل الإسم الكامل

    

في البداية ما نقصده بإسم مختصر ( Abbreviation ) هو أنك على سبيل المثال تستطيع عرض كلمة واحدة مثل HTML و عند تمرير الفأرة فوقها يقوم المتصفح بإظهار الإسم الكامل Hyper Text Markup Language الذي هو اختصار لهذه الكلمة.

    

الآن, إذا أردت وضع إسم مختصر فيمكنك وضعه بداخل

<abbr> </abbr>.


   
    

في المثال التالي قمنا بعرض إسم مختصر مع إظهار الجملة التي هو اختصار لها باستخدام

<abbr title="">.


             

مثال

         <p><abbr title="Hyper Text Markup Language">HTML</abbr> is used to create web pages.</p>         

جرب الكود

     

عرض معلومات الوصول و التواصل

    

إذا أردت عرض معلومات الوصول أو التواصل فيمكنك وضع النص بداخل 

<address> </address> و عندها سيعرضها المتصفح على سطر جديد و بشكل مائل.


   
    

معلومة

    
  •           
  • معلومات الوصول كأن يضع الشخص موقعه الجغرافي مثال: "مكتب سالم المصري, شارع الإصلاح, مبنى السلام, الطابق الثاني".
  •          
  • معلومات التواصل كأن يضع الشخص رقم هاتفه, بريده الإلكتروني, صندوق البريد إلخ.. مثال: "هاتف: 061584984   إيميل: info@harmash.com".
  •      
   
    

في المثال التالي قمنا بعرض معلومات الوصول لمكان صاحب الموقع باستخدام

<address>.


             

مثال

         <address>9645 Al-islah street, Tripoli, 1300 - Lebanon</address>         

جرب الكود

     

إبراز عنوان العمل

    

في حال أردت إبراز عنوان الشيء المهم الذي يتم عرضه يمكنك وضعه بداخل

<cite> </cite>.
    عند وضع النص بداخل <cite> </cite> فإن المتصفح في العادة يعرضه بشكل مائل.


   
    

في المثال التالي قمنا بإبراز عنوان الكتاب الذي تم ذكر الحديث منه باستخدام

<cite>.


             

مثال

         <p><cite>Riyadh-as-Saliheen</cite> by Imam Al-Nawawi, volume 1, hadith number 134</p>         

جرب الكود


مفهوم تنسيق الكود

    

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

monospace و هو يعطي الأحرف حجماً موحداً مما يجعل قراءتها و تتبعها أمر سهل جداً بالنسبة للقارئ.


    

في HTML يوجد خمس وسوم يمكن استخدامها في تنسيق الكود و سنتعرف عليها في هذا الدرس.

     

عرض أسماء أحرف الكيبورد

    

عند وضع شروحات تخبر فيها المستخدم بأن ينقر على أزرار معينة في الكيبورد ( Keyboard ) يمكنك وضعها بين

<kbd> </kbd>.
    هذا الوسم يقوم فقط بتغيير نوع خط النص الموضوع بداخله إلى النوع monospace حتى يظهره بشكل مختلف عن باقي النص.


   
    

في المثال التالي قمنا بعرض أسماء أحرف في الكيبورد باستخدام

<kbd>.


             

مثال

         <p>Press <kbd>Ctrl + S</kbd> to save this page on your computer.</p>         

جرب الكود

     

عرض مخرجات البرامج

    

في حال أردت عرض مخرجات البرامج ( Programs Output ) يمكنك وضعها بين

<samp> </samp>.
    هذا الوسم يقوم فقط بتغيير نوع خط النص الموضوع بداخله إلى النوع monospace حتى يظهره بشكل مختلف عن باقي النص.


   
    

في المثال التالي قمنا بعرض رسالة خطأ يظهرها الحاسوب باستخدام

<samp>.


             

مثال

         <p>My computer show me this alert:</p><p><samp>Error code: 0x80070043<br>The network name cannot be found.</samp></p>         

جرب الكود

     

عرض كود في النص

    

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

<code> </code>.
    هذا الوسم يقوم فقط بتغيير نوع خط النص الموضوع بداخله إلى النوع monospace حتى يظهره بشكل مختلف عن باقي النص.


   
    

في المثال التالي قمنا بوضع الكلام الذي هو عبارة عن كود بداخل 

<code> </code> حتى يظهر بشكل مختلف عن النص العادي.


             

المثال الأول

         <p>In java the <code>main()</code> function is the starting point.</p>         

جرب الكود

   
    

في المثال التالي قمنا بعرض إحدى قواعد الرياضيات بشكل بداخل 

<code> </code> حتى تظهر بشكل مختلف عن النص العادي.


             

المثال الثاني

         <p>Pythagorean Theorem: <code>a<sup>2</sup> + b<sup>2</sup> = c<sup>2</sup></code></p>         

جرب الكود

     

عرض أسماء المتغيرات في النص

    

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

<var> </var>.
    هذا الوسم يقوم بعرض الإسم الذي نضعه بداخله بشكل مائل.


   
    

في المثال التالي قمنا بوضع الأحرف التي هي عبارة عن أسماء متغيرات بداخل 

<var> </var> حتى تظهر بشكل مائل.


             

مثال

         <p>Calculate the value of <var>x</var> where <code>x + 5 = 13</code>.</p>         

جرب الكود


مفهوم الرابط

    

الرابط ( Link ) في العادة عبارة عن نص يشير لعنوان صفحة أخرى عند النقر عليه يقوم المتصفح بنقلك إليها.
    أيضاً, قد يكون الرابط يشير لملف أو برنامج ما عند النقر عليه يقوم المتصفح بسؤالك ما إن كنت تريد تحميله أم لا.

   
    

أشكال الروابط

    
  •           
  • يمكن وضع الرابط كنص ( Text Link ) عند النقر عليه يتم توجيهك لصفحة أخرى أو تحميل ملف ما.
  •          
  • يمكن وضع الرابط كزر ( Button Link ) عند النقر عليه يتم توجيهك لصفحة أخرى أو تحميل ملف ما.
  •          
  • يمكن وضع الرابط كصورة ( Image Link ) عند النقر عليها يتم توجيهك لصفحة أخرى أو تحميل ملف ما.
  •      

إضافة رابط في الصفحة

    

بشكل عام نستخدم الوسم 

<a> على هذا النحو <a href="url">text</a> لعرض رابط في الصفحة.


    
  •           
  • مكان الكلمة 

    text

    نضع النص الذي نريده أن يظهر في الصفحة و الذي يمكن النقر عليه.
  •          
  • مكان الكلمة 

    url

    نضع الرابط الذي نريد توجيه المستخدم إليه عند النقر على النص الذي يظهر في الصفحة.
  •      
   
    

في المثال التالي قمنا بإضافة رابط في الفقرة عند النقر عليه يتم توجيه المستخدم للصفحة الرئيسية في موقع هرمش.

             

مثال

         <p><a href="https://harmash.com">Go to harmash.com</a></p>         

جرب الكود

إظهار تلميح عند تمرير الماوس فوق الرابط

    

في حال أردت إظهار تلميح عند تمرير الماوس فوق الرابط فيمكنك إضافة الخاصية 

title في الوسم <a> و تمرير التلميح الذي تريد عرضه كقيمة لها.


   
    

في المثال التالي قمنا بإضافة تلميح للرابط يتم إظهاره عند تمرير الماوس فوقه.

             

مثال

         <p><a href="https://harmash.com" title="Go to harmash.com">harmash</a> teaches you every thing you need.</p>         

جرب الكود

وضع رابط لبريد إلكتروني محدد

    

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

mailto: يليها البريد الإلكتروني الذي تريده أن يتلقى رسالة المستخدم كقيمة للخاصية href.


   
    

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

             

مثال

         <p><a href="mailto:someone@example.com">Send Email</a></p>         

جرب الكود

روابط لعناصر محددة في الصفحة

    

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

id و عندها الرابط الذي نريده أن يوجه المستخدم لذاك العنصر يجب أن نضع في نهايته الرمز # يليه id العنصر.


   
    

في المثال التالي قمنا بوضع رابط عند النقر عليه يقوم بنقل المستخدم لعنصر محدد في نفس الصفحة.

             

المثال الأول

         <a href="#P5">Jump to Paragraph 5</a>         

جرب الكود

   

    

في المثال التالي قمنا بوضع رابط عند النقر عليه يقوم بنقل المستخدم لعنصر محدد في صفحة أخرى.

             

المثال الثاني

         <a href="sample.html#P5">Go to sample.html then jump to Paragraph 5</a>         

جرب الكود

   

إضافة رابط وهمي

    

أثناء تصميم الصفحة, المصمم لا يحتاج أن يحدد قيمة الخاصية 

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


   
    

في المثال التالي قمنا بإضافة رابطين, الأول يظهر كرابط عادي و لكن عند النقر عليه لا يحدث أي شيء و الثاني لا يظهر من الأساس كرابط.

             

مثال

         <a href="#">Go to harmash.com</a><a>Go to harmash.com</a>         

جرب الكود

تحديد أين سيتم فتح الرابط

    

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

    

في حال أردت تحديد أين سيتم فتح الرابط يجب أن تضيف الخاصية 

target في الوسم <a> و إعطائها إحدى القيم التالية:


    
  •           
  • _self

    في حال أردت أن يتم فتح محتوى الرابط في نفس الصفحة المفتوحة حالياً (هذا الخيار الإفتراضي).
  •          
  • _blank

    في حال أردت أن يتم فتح تبويب جديد في المتصفح و إظهار محتوى الرابط فيه.
  •          
  • _top

    في حال أردت أن يتم فتح محتوى الرابط في نفس الصفحة مع إزالة أي صفحات  متداخلة موضوعة في الصفحة الحالية.
  •          
  • _parent

    في حال أردت أن يتم فتح محتوى الرابط مكان الصفحة الموجودة فيها الصفحة الحالية.
  •      
   

    

ملاحظة

              

شيء طبيعي جداً أن لا تكون قد فهمت أي شيء قلناه عن ما تفعله القيمة 

_top و القيمة _parent في حال تم وضعهما كقيمة للخاصية target لأنك لم تقم حتى الآن بتعريف صفحة تقوم بعرض صفحة أخرى بداخلها.


         

قد لا تحتاج إلى استخدام القيمتين 

_top و _parent طوال حياتك و لكن في حال احتجتهما يوماً فإنك ستكون حينها قد علمت سبب الحاجة لهما و ما معنى عرض صفحة بداخل صفحة. لذا الآن لا تتعب نفسك بمحاولة معرفة الفارق بينهما.


       
    

في المثال التالي قمنا بإضافة رابط في الفقرة عند النقر عليه يتم توجيه المستخدم للصفحة الرئيسية في موقع هرمش.

             

مثال

         <p><a href="https://harmash.com" target="_self">Open harmash.com in the current window (iframe)</a></p><p><a href="https://harmash.com">Open harmash.com in a new tab</a></p><p><a href="https://harmash.com" target="_top">Open harmash.com in the full window</a></p><p><a href="https://harmash.com" target="_parent">Open harmash.com in the parent window (parent iframe)</a></p>         

جرب الكود

إضافة رابط كزر

    

في حال أردت وضع الرابط كزر بدل وضعه كنص, يمكنك وضعه بواسطة الوسم 

<button> على هذا النحو <button onlclick="document.location='url'">text</button>.


    
  •           
  • مكان الكلمة 

    text

    نضع النص الذي نريده أن يظهر على الزر.
  •          
  • مكان الكلمة 

    url

    نضع الرابط الذي نريد توجيه المستخدم إليه عند النقر على الزر.
  •      
   
    

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

             

مثال

         <button onclick="document.location='https://harmash.com'">Go to harmash.com</button>         

جرب الكود

إضافة رابط كصورة

    

في حال أردت وضع الرابط كصورة بدل وضعه كنص, يمكنك وضعه رابط عادي بواسطة الوسم 

<a> و بداخله تقوم بوضع الصورة التي تريد فتج الرابط عند النقر عليها.


    

ستتعلم كيفية التعامل مع الصور في درس خاص و لكن الآن عليك معرفة أنه لوضع صورة نستخدم الوسم 

<img> على هذا النحو <img src="image_url"/>.
    مكان الكلمة image_url نضع رابط الصورة التي سيتم عرضها.


   
    

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

             

مثال

         <a href="https://harmash.com/tutorials/html"><img src="/tutorials/html/links/html-5-icon.png"></a>         

جرب الكود

     

تعامل المتصفح مع محتوى الروابط

    

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

   
    

1- روابط صفحات ويب

    

إذا وجد المتصفح أن الرابط هو رابط لملف إمتداده 

.html فإنه يعرض لك نتيجة الكود الموجود فيه, أي يعرضه لك كصفحة ويب عادية.
    مثال: عند النقر على هذا الرابط سيتم فتح الصفحة الأولى في دورة "تعلم الكتابة" بجانب الصفحة الحالية.


   
    

2- روابط صور

    

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

   
    

3- روابط ملفات نصية

    

إذا وجد المتصفح أن الرابط هو رابط لملف نصي إمتداده 

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


   
    

4- روابط ملفات غير نصية

    

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

harmash-log.zip أم لا.

مفهوم الجدول

    

الجدول ( Table ) يسمح لك بعرض المعلومات بشكل مرتب و مقسم لأعمدة و أسطر.
    في هذا الدرس ستتعلم كيف تنشئ جدول, كيف تضيف فيه أسطر, كيف تضيف فيه أعمدة و كيف تدمج الأعمدة و الأسطر مع بعضها.

إضافة جدول في الصفحة

    

لعرض جدول في الصفحة نستخدم الوسوم التالية لبنائه بالشكل الذي نريده:

    
  •           
  • <table> </table>

    هو الوسم الأساسي الذي يجب أن تضعه لإعلام المتصفح أنك تريد عرض البيانات بداخل جدول.
  •          
  • <tr> </tr>

    تستخدمه لإضافة سطر في الجدول.
  •          
  • <th> </th>

    تستخدمه لإضافة خانة في السطر تمثل عنوان, أي النص الذي تضعه فيها يظهر بخط عريض و في المنتصف.
  •          
  • <td> </td>

    تستخدمه لإضافة خانة في السطر تمثل معلومة عادية, أي النص الذي تضعه فيها يظهر كنصر عادي.
  •      
   
    

معلومة تقنية

    

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

    

بالتأكيد CSS توفر لك إمكانيات هائلة لتصميم الجدول و لكن بما أننا ندرس و نركز على ما توفره لنا لغة HTML فقط, سنتطرق للخصائص التي توفرها لنا هي فقط.

   
    

في المثال التالي قمنا بإضافة جدول يتألف من 4 أسطر و كل سطر فيه 3 خانات.

             

مثال

         <table>    <!-- هنا قمنا بتعريف السطر الأول في الجدول و بداخله وضعنا 3 خانات عبارة عن عناوين -->    <tr>        <th>ID</th>        <th>Name</th>        <th>Mark</th>    </tr>    <!-- هنا قمنا بتعريف السطر الثاني في الجدول و بداخله وضعنا 3 خانات عادية -->    <tr>        <td>1</td>        <td>Mhamad Harmush</td>        <td>A</td>    </tr>    <!-- هنا قمنا بتعريف السطر الثالث في الجدول و بداخله وضعنا 3 خانات عادية -->    <tr>        <td>2</td>        <td>Rima Houssayni</td>        <td>C</td>    </tr>    <!-- هنا قمنا بتعريف السطر الرابع في الجدول و بداخله وضعنا 3 خانات  عادية -->    <tr>        <td>3</td>        <td>Youssef Jabber</td>        <td>B</td>    </tr></table>         

جرب الكود

خصائص الجدول

    

هناك ثلاث خصائص يمكنك إضافتها للعمود لجعله يظهر بشكل أفضل و هي التالية:

    
  •           
  • border

    يمكنك استخدامها لإظهار خطوط الجدول, الرقم الذي نعطيه لها يمثل حجم الخطوط التي سيتم وضعها بين الأسطر و الأعمدة.
  •          
  • width

    يمكنك استخدامها لتحديد عرض الجدول بنفسك بدل جعل المتصفح يفعل ذلك, الرقم الذي نعطيه لها يمثل عرض الجدول.
  •          
  • height

    يمكنك استخدامها لتحديد طول الجدول بنفسك بدل جعل المتصفح يفعل ذلك, الرقم الذي نعطيه لها يمثل طول الجدول.
  •      
    

سنضيف الخاصية 

border="1" في جميع الأمثلة التي نضعها حتى تظهر خطوط الجدول.


   
    

ملاحظة

              

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

       

    

في المثال التالي قمنا بإظهار خطوط الجدول حجمها 

1 بيكسل.


             

المثال الأول

         <table border="1">    ...</table>         

جرب الكود

   

    

في المثال التالي قمنا بجعل عرض الجدول 

100% و طوله 150 بيكسل.


             

المثال الثاني

         <table border="1" width="100%" height="150">    ...</table>         

جرب الكود

دمج خانات الجدول

    

في حال أردت دمج خانات الجدول فهناك خاصيّتين يمكنك استخدامهما لأجل ذلك:

    
  •           
  • colspan

    نستخدمها لدمج الخانات الموجودة على نفس السطر.
  •          
  • rowspan

    نستخدمها لدمج الخانات الموجودة على أكثر من سطر.
  •      
    

ملاحظة: 

colspan و rowspan يمكن استخدامهما مع الوسم <th> و الوسم <td> فقط.


   
    

في المثال التالي قمنا بدمج الخانة الأولى و الثانية الموجودتين في السطر الأول.

             

المثال الأول

         <table>    <tr>        <!-- سيتم عرضها على خانتين وراء بعض 'A' هنا قلنا أن الخانة التي يوجد فيها الحرف -->        <td colspan="2">A</td>        <td>B</td>    </tr>    <tr>        <td>C</td>        <td>D</td>        <td>E</td>    </tr></table>         

جرب الكود

   

    

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

             

المثال الثاني

         <table>    <tr>        <!-- سيتم عرضها على خانتين تحت بعض 'B' هنا قلنا أن الخانة التي يوجد فيها الحرف -->        <td>A</td>        <td rowspan="2">B</td>        <td>C</td>    </tr>    <tr>        <td>D</td>        <td>E</td>    </tr></table>         

جرب الكود

   

    

في المثال التالي قمنا بدمج الخانة الثانية و الثالثة في السطر الثاني مع الخانة الثانية و الثالثة الموجودة تحتها في السطر الثالث.

             

المثال الثالث

         <table>    <tr>        <td>A</td>        <td>B</td>        <td>C</td>    </tr>    <tr>        <!-- سيتم عرضها على خانتين في نفس السطر و خانتين تحتهما مباشرةً 'E' هنا قلنا أن الخانة التي يوجد فيها الحرف -->        <td>D</td>        <td colspan="2" rowspan="2">E</td>    </tr>    <tr>        <td>F</td>    </tr></table>         

جرب الكود

وضع عنوان خاص للجدول

    

إذا أردت وضع عنوان خاص للجدول, يمكنك كتابة العنوان بداخل الوسم 

<caption> </caption> مع الإشارة إلى أنه يجب وضع هذا الوسم كأول وسم في الجدول.


   
    

في المثال التالي قمنا بوضع عنوان للجدول بواسطة الوسم

<caption>.


             

مثال

         <table>    <caption>Final semester marks</caption>    ...</table>         

جرب الكود


مفهوم القوائم المرتبة

    

القائمة المرتبة ( Ordered ) يقصد بها عرض مجموعة عناصر مع إظهار رقم كل عنصر تم إدخاله فيها.
    من أهم ما يميز هذه القوائم أنه يمكنك عرض الترقيم بالشكل الذي تريده, فمثلاً يمكنك عرض أرقام عادية, أحرف أبجدية, أرقام رومانية إلخ..

إضافة قائمة مرتبة في الصفحة

    

بشكل عام, نستخدم الوسم 

<ol> </ol> لإعلام المتصفح أننا نريد عرض قائمة مرتبة في الصفحة.
    أي عنصر نريد إضافته فيها يجب وضعه بداخل الوسم <li> </li>.


    

معلومة: 

ol إختصار لكلمة Ordered التي تعني قائمة مرتبة و li إختصار لكلمة Item التي تعني عنصر في القائمة.


   
    

في المثال التالي قمنا بإضافة قائمة مرتبة و بداخلها ثلاث عناصر.

             

مثال

         <ol>    <li>Apple</li>    <li>Orange</li>    <li>Mango</li></ol>         

جرب الكود

أنواع الترقيم

    

لتحديد نوع الترقيم الذي سيظهر في بداية كل عنصر يمكنك إضافة الخاصية 

type للوسم <ol> و تمرير إحدى الأحرف التالية لها كقيمة:


    
  •           
  • type="A"

    لإظهار ترقيم أبجدي بأحرف كبيرة قبل كل عنصر.
  •          
  • type="a"

    لإظهار ترقيم أبجدي بأحرف صغيرة قبل كل عنصر.
  •          
  • type="I"

    لإظهار ترقيم روماني بأحرف كبيرة قبل كل عنصر.
  •          
  • type="i"

    لإظهار ترقيم روماني بأحرف صغيرة قبل كل عنصر.
  •          
  • type="1"

    لإظهار ترقيم عادي قبل كل عنصر و هذه القيمة الإفتراضية التي يتم وضعها في حال لم تحدد القيمة بنفسك.
  •      
   

    

في المثال التالي قمنا بتغيير نوع الترقيم إلى ترقيم أبجدي بأحرف كبيرة.

             

المثال الأول

         <ol type="A">    <li>Apple</li>    <li>Orange</li>    <li>Mango</li></ol>         

جرب الكود

   

    

في المثال التالي قمنا بتغيير نوع الترقيم إلى ترقيم أبجدي بأحرف صغيرة.

             

المثال الثاني

         <ol type="a">    <li>Apple</li>    <li>Orange</li>    <li>Mango</li></ol>         

جرب الكود

   

    

في المثال التالي قمنا بتغيير نوع الترقيم إلى ترقيم روماني بأحرف كبيرة.

             

المثال الثالث

         <ol type="I">    <li>Apple</li>    <li>Orange</li>    <li>Mango</li></ol>         

جرب الكود

   

    

في المثال التالي قمنا بتغيير نوع الترقيم إلى ترقيم روماني بأحرف صغيرة.

             

المثال الرابع

         <ol type="i">    <li>Apple</li>    <li>Orange</li>    <li>Mango</li></ol>         

جرب الكود

   

    

في المثال التالي قمنا بتحديد أن نوع الترقيم هو ترقيم عادي و بالطبع لن نلاحظ أي فرق لأن نوع الترقيم الإفتراضي في الأساس هو عددي.

             

المثال الخامس

         <ol type="1">    <li>Apple</li>    <li>Orange</li>    <li>Mango</li></ol>         

جرب الكود

تحديد من أين يبدأ الترقيم

    

في حال أردت تحديد من أي رقم ستبدأ القائمة في إظهار الترقيم يمكنك إضافة الخاصية 

start للوسم <ol> و تمرير الرقم الذي تريدها أن تبدأ من عنده.


   
    

في المثال التالي قمنا بتحديد أن الترقيم سيبدأ من الرقم

5.


             

المثال الأول

         <ol start="5">    <li>Apple</li>    <li>Orange</li>    <li>Mango</li></ol>         

جرب الكود

   

    

في المثال التالي قمنا بتحديد أن الترقيم سيبدأ من الرقم 

3 و أن نوع الترقيم سيكون أحرف إنجليزية صغيرة.


             

المثال الثاني

         <ol start="3" type="a">    <li>Apple</li>    <li>Orange</li>    <li>Mango</li></ol>         

جرب الكود

قطع الترقيم الحالي

    

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

value للعنصر (أي للوسم <li>) و تمرير الرقم الذي تريده أن يبدأ من عنده.


   
    

في المثال التالي قمنا بتغيير الترقيم عند العنصر الرابع إلى

7.


             

مثال

         <ol>    <li>Apple</li>    <li>Orange</li>    <li>Mango</li>    <li value="7">Carrot</li>    <li>Banana</li>    <li>Peach</li></ol>         

جرب الكود

وضع قائمة بداخل قائمة

    

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

   
    

في المثال التالي قمنا بتعريف عنصرين و كل عنصر وضعنا فيه قائمة أخرى.

             

مثال

         <ol>    <!-- العنصر الأول وضعنا فيه قائمة فيها ثلاث عناصر -->    <li>Front-End        <ol>            <li>HTML</li>            <li>CSS</li>            <li>Javascript</li>        </ol>    </li>    <!-- العنصر الثاني وضعنا فيه قائمة فيها عنصرين -->    <li>Back-End        <ol>            <li>MySQL</li>            <li>Aspnetcore</li>        </ol>    </li></ol>         

جرب الكود


مفهوم القوائم الغير مرتبة

    

القائمة الغير مرتبة ( Unordered ) يقصد بها عرض مجموعة عناصر بدون الإهتمام ما إن كان يجب عرض عنصر قبل الآخر.

    

في هذا النوع من القوائم يمكنك تحديد الرمز الذي سيظهر في بداية كل عنصر و هنا يوجد ثلاث رموز يمكنك عرضها هي مربع, دائرة, أو قرص.

إضافة قائمة غير مرتبة في الصفحة

    

بشكل عام, نستخدم الوسم 

<ul> </ul> لإعلام المتصفح أننا نريد عرض قائمة غير مرتبة في الصفحة.
    أي عنصر نريد إضافته فيها يجب وضعه بداخل الوسم <li> </li>.


    

معلومة: 

ul إختصار لكلمة Unordered التي تعني قائمة غير مرتبة و li إختصار لكلمة Item التي تعني عنصر في القائمة.


   
    

في المثال التالي قمنا بإضافة قائمة غير مرتبة و بداخلها ثلاث عناصر.

             

مثال

         <ul>    <li>Apple</li>    <li>Orange</li>    <li>Mango</li></ul>         

جرب الكود

أنواع الرموز التي يمكن عرضها في أول العناصر

    

لتحديد نوع الرموز التي ستظهر قبل العناصر يمكنك إضافة الخاصية 

type للوسم <ul> و تمرير إحدى الكلمات التالية لها كقيمة:


    
  •           
  • type="square"

    لإظهار مربع في بداية كل عنصر.
  •          
  • type="circle"

    لإظهار دائرة في بداية كل عنصر.
  •          
  • type="disc"

    لإظهار قرص (أي نقطة كبيرة) في بداية كل عنصر و هذه القيمة الإفتراضية التي يتم وضعها في حال لم تحدد القيمة بنفسك.
  •          
  • type="none"

    لعدم إظهار رمز في بداية كل عنصر.
  •      
   

    

في المثال التالي قمنا بتحديد أن الرمز الذي سيظهر قبل كل عنصر هو مربع.

             

المثال الأول

         <ul type="square">    <li>Apple</li>    <li>Orange</li>    <li>Mango</li></ul>         

جرب الكود

   

    

في المثال التالي قمنا بتحديد أن الرمز الذي سيظهر قبل كل عنصر هو دائرة.

             

المثال الثاني

         <ul type="circle">    <li>Apple</li>    <li>Orange</li>    <li>Mango</li></ul>         

جرب الكود

   

    

في المثال التالي قمنا بتحديد أن الرمز الذي سيظهر قبل كل عنصر هو قرص و بالطبع لن نلاحظ أي فرق سواء وضعناها أم لا لأنه النوع الإفتراضي.

             

المثال الثالث

         <ul type="disc">    <li>Apple</li>    <li>Orange</li>    <li>Mango</li></ul>         

جرب الكود

   

    

في المثال التالي قمنا بتحديد أنه قبل كل عنصر لن يتم إظهار رمز.

             

المثال الرابع

         <ul type="none">    <li>Apple</li>    <li>Orange</li>    <li>Mango</li></ul>         

جرب الكود

تغيير نوع الرمز الذي سيظهر قبل عنصر محدد في القائمة

    

في حال أردت تغيير نوع الرمز الذي سيظهر قبل عنصر محدد في القائمة يمكنك إضافة الخاصية 

type للعنصر (أي للوسم <li>) و تمرير النوع الذي تريده أن يبدأ به.


   
    

في المثال التالي قمنا بتغيير نوع الرمز الذي سيظهر قبل العنصر الثاني فقط إلى

circle.


             

مثال

         <ul>    <li>Apple</li>    <li type="circle">Orange</li>    <li>Mango</li></ul>         

جرب الكود

وضع قائمة بداخل قائمة

    

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

   
    

معلومة تقنية

    

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

type لتحديد نوع الرموز التي ستظهر قبل عناصر القائمة الخارجية و القائمة الداخلية إن أردت.


   
    

في المثال التالي قمنا بتعريف قائمة فيها عنصرين و كل عنصر وضعنا فيه قائمة أخرى.

             

مثال

         <ul>    <!-- العنصر الأول وضعنا فيه قائمة فيها ثلاث عناصر -->    <li>Front-End        <ul>            <li>HTML</li>            <li>CSS</li>            <li>Javascript</li>        </ul>    </li>    <!-- العنصر الثاني وضعنا فيه قائمة فيها عنصرين -->    <li>Back-End        <ul>            <li>MySQL</li>            <li>Aspnetcore</li>        </ul>    </li></ul>         

جرب الكود


مفهوم قوائم الوصف

    

قائمة الوصف ( Description ) يقصد بها عرض مجموعة مصطلحات و كل مصطلح معه وصف.

    

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

إضافة قائمة وصف

    

لعرض قائمة وصف في الصفحة نستخدم الوسوم التالية:

    
  •           
  • <dl> </dl>

    هو الوسم الأساسي الذي يجب أن تضعه لإعلام المتصفح أنك تريد عرض البيانات بداخل قائمة وصف.
  •          
  • <dt> </dt>

    تستخدمه لإضافة مصطلح أو عنوان لما سيوضع تحته في القائمة.
  •          
  • <dd> </dd>

    تستخدمه لإضافة شرح للمصطلح أو خيار يندرج تحته.
  •      
   
    

في المثال التالي قمنا بإضافة قائمة وصف بداخلها عنوانين و خمس خيارات.

             

مثال

         <dl>  <dt>Hot Drinks</dt>  <dd>- Coffee</dd>  <dd>- Nescafe</dd>  <dd>- Tee</dd>  <dt>Cold Drinks</dt>  <dd>- Red Bull</dd>  <dd>- Pepsi</dd></dl>         

جرب الكود


مفهوم المسار

    

كلمة مسار ( Path ) يقصد بها المكان الذي يوجد فيه ملف محدد.

    

عند إضافة رابط في الصفحة سواء لصورة, فيديو, أغنية, برنامج, ملف مضغوط, صفحة أخرى إلخ.. فلا بد من تحديد المسار الموجود فيه بدقة و بدون أي خطأ لأنه في حال وجود خطأ في حرف واحد فإنه لن يعمل.

    

بشكل عام, هناك أسلوبين يمكنك إعتمادهما عند تحديد مكان وجود الملف و هما:

    
  •           
  • وضع مسار نسبي ( Relative Path ) له و معنى ذلك أن مسار الملف يوضع نسبةً لمكان الصفحة التي سيتم إضافته فيها.
  •          
  • وضع مسار كامل ( Absolute Path ) له و معنى ذلك أن مسار الملف يوضع كما هو بالنسبة للحاسوب.
  •      
   

    

ملاحظة

              

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

.css و ملفات .js في صفحاتك أو حتى حين تقوم بعرض صور المستخدمين في المواقع التي تبنيها حينها.


     

أمثلة شاملة حول وضع مسارات نسبية

    

في الأمثلة التالية سنفترض أننا نريد عرض صورة في الصفحة و في كل مرة سنفترض أن الصورة موجودة في مكان مختلف بالنسبة للصفحة التي سنعرضها فيها حتى تعرف كيف يمكنك تحديد مكانها بأسلوب Relative Path في أي مكان تكون موجودة فيه.

   
    

معلومة

    

لعرض صورة نستخدم الوسم 

<img src=""> و مسار الصورة نمرره كقيمة للخاصية src.
    في الدرس التالي ستتعرف على جميع الخصائص التي يمكن إضافتها للصور, و لكن الآن ركز فقط على أسلوب تحديد المسارات.


   
    

المثال الأول

    

في المثال التالي سنفترض أننا نريد عرض صورة في الصفحة إسمها 

logo.png و هي موجودة بجانب الصفحة التي سنعرضها فيها كالتالي.


    

    

في برنامج VSCode سيظهر شكل الملفات كالتالي مع الإشارة إلى أننا قمنا باعتماد أسلوب Relative Path عند تحديد مسار الصورة.

    

    

⇓ تحميل المثال

   

    

المثال الثاني

    

نفس المسار السابق كان بإمكانك إضافة 

./ في بدايته ليصبح ./logo.png و هكذا سيعلم المتصفح أن الصورة موجودة في نفس المكان.
    إذاً سواء وضعت ./ أم لم تضع فإن ذلك لن يشكل أي فرق و هذا الأسلوب أيضاً يعتبر Relative Path.


    

في برنامج VSCode سيظهر شكل الملفات كالتالي.

    

    

⇓ تحميل المثال

   

    

المثال الثالث

    

في المثال التالي سنفترض أن الصورة موجودة بداخل مجلد إسمه 

images كالتالي.


    

    

في برنامج VSCode سيظهر شكل الملفات كالتالي مع الإشارة إلى أننا قمنا باعتماد أسلوب Relative Path عند تحديد مسار الصورة.

    

    

⇓ تحميل المثال

   

    

المثال الرابع

    

في المثال التالي سنفترض أن الصفحة موجودة بداخل مجلد إسمه 

pages و الصورة التي سيعرضها فيها موجودة بجانب هذا المجلد كالتالي.


    

    

في برنامج VSCode سيظهر شكل الملفات كالتالي مع الإشارة إلى أننا قمنا باعتماد أسلوب Relative Path عند تحديد مسار الصورة.
    ملاحظة: وضع 

../ في بداية المسار مهم جداً لأنه يعلم المتصفح بأنه يجب الرجوع خطوة واحدة للوراء حتى يجد الصورة.


    

    

⇓ تحميل المثال

   

    

المثال الخامس

    

في المثال التالي سنفترض أن الصفحة موجودة بداخل مجلد إسمه 

pages و الصورة التي سيعرضها فيها موجودة في مجلد إسمه imagesكالتالي.


    

    

في برنامج VSCode سيظهر شكل الملفات كالتالي مع الإشارة إلى أننا قمنا باعتماد أسلوب Relative Path عند تحديد مسار الصورة.
    إذاَ للوصول إلى الصورة من الصفحة, يجب الرجوع خطوة للوراء لذلك وضعنا 

../ في بداية المسار, بعدها يجب الدخول للمجلد images بالضبط كما فعلنا.


    

    

⇓ تحميل المثال

أمثلة شاملة حول وضع مسارات كاملة

    

وضع مسار كامل يعني وضع المسار كاملاً بالنسبة للحاسوب أو الموقع الذي يوجد الملف عليه.

   
    

المثال الأول

    

في المثال التالي سنفترض أننا نريد عرض صورة في الصفحة إسمها 

logo.png موجودة في المسار D://workspaces/html/images/ في الحاسوب الذي نعمل عليه باعتماد أسلوب Absolute Path كالتالي.


             

مثال

         <img src="D://workspaces/html/images/logo.png">         

هنا كأننا نقول للمتصفح, إذهب للقرص 

D ثم أدخل للمجلد workspaces ثم أدخل للمجلد images حتى تجد الصورة logo.png.


   

    

المثال الثاني

    

في المثال التالي سنفترض أننا نريد عرض صورة في الصفحة إسمها 

harmash-logo.png موجودة في موقعنا في المسار https://harmash.com/tutorials/html/files-paths/ باعتماد أسلوب Absolute Path كالتالي.


             

مثال

         <img src="https://harmash.com/tutorials/html/files-paths/harmash-logo.png">         

جرب الكود

وضع نفس المسار بشكل كامل و بشكل نسبي

    

يمكنك دائماً وضع المسار بالأسلوب الذي تريده طالما أنك تعرف أين توجد الملفات بالضبط في حاسوبك أو في موقعك.

   
    

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

             

مثال

         <!-- هنا وضعنا مسار الصورة الكامل في موقعنا --><img src="https://harmash.com/tutorials/html/files-paths/harmash-logo.png"><!-- هنا وضعنا مسار الصورة النسبي في موقعنا بالنسبة للمحرر --><img src="../tutorials/html/files-paths/harmash-logo.png">         

جرب الكود

هل أستخدم المسار الكامل أو المسار النسبي؟

    

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

    

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


أهمية الصور و أنواعها

    

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

   
    

أنواع الصور التي يمكن عرضها

    

هناك أنواع كثيرة من الصور منها ما هو مدعوم من قبل جميع المتصفحات و منها ما هو مدعوم من بعض المتصفحات.

    

أنواع الصور التي تعمل على جميع أنواع المتصفحات المشهورة (Chrome, Edge, Firefox, Safari, Opera):
    

.png - .apng - .gif - .jpg - .jpeg - .ico - .cur -.jfif - .pjpeg - .pjp - .svg


   
    

أحجام الصور و حقوق النشر

    

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

    

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

إضافة صورة في الصفحة

    

بشكل عام نستخدم الوسم 

<img> على هذا النحو <img src="url"> لعرض صورة في الصفحة.
    مكان الكلمة url نضع مسار الصورة التي نريد عرضها.


   
    

في المثال التالي قمنا بإضافة صورة في الصفحة باستخدام الوسم

<img>.


             

مثال

         <img src="https://harmash.com/tutorials/html/images/html-5-icon.PNG">         

جرب الكود

وضع نص بديل للصورة

    

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

    

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

    

لوضع نص بديل للصورة نضيف الخاصية 

alt و نمرر لها النص الذي سيظهر في حال لم يتم عرض الصورة.


   
    

في المثال التالي قمنا بإضافة صورة في الصفحة مسارها غير صحيح عمداً و بدون وضع نص بديل أيضاً.
    ملاحظة: في حال عدم وجود الصورة التي سيتم عرضها يقوم المتصفح بالعادة بوضع أيقونة تشير أن الصورة المراد عرضها لم يتم العثور عليها.

             

المثال الأول

         <img src="my-photo.PNG">         

جرب الكود

   

    

في المثال التالي قمنا بإضافة صورة في الصفحة مسارها غير صحيح عمداً و قمنا بوضع نص بديل حتى يظهر مكانها.

             

المثال الثاني

         <img src="my-photo.PNG" alt="Mhamad Harmush">         

جرب الكود

تحديد حجم الصورة

    

الصور التي تعرضها في الصفحة يتم عرضها بنفس حجمها الحقيقي طالما أنك لم تحدد الحجم بنفسك.

    

في العادة حجم الصور نقوم بتحديده بواسطة كود CSS لأنها توفر طرق سهلة و أفضل لذلك و لكن بما أننا ندرس لغة HTML سنركز على الخصائص التي توفرها لنا لغة HTML لتحديد حجم الصور:

    
  •           
  • width

    نستخدمها لتحديد عرض الصورة التي سيتم عرضها بالبكسل.
  •          
  • height

    نستخدمها لتحديد طول الصورة التي سيتم عرضها بالبكسل.
  •      
   

    

أهمية تحديد حجم الصورة

    

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

    

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

   

    

في المثال التالي قمنا بإضافة صورة مع تحديد أن عرضها 200 بيكسل و طولها 200 بيكسل أيضاً.

             

مثال

         <img src="https://harmash.com/tutorials/html/images/mhamad-harmush.PNG" width="200" height="200">         

جرب الكود


وسوم و خصائص الفيديوهات

    

بشكل عام نستخدم الوسم 

<video> لإعلام المتصفح أننا نريد عرض فيديو في الصفحة.
    لتحديد الفيديو الذي نريد عرضه فيه نستخدم الوسم <source>.


   
    

أنواع الفيديوهات التي يمكن عرضها

    

الأنواع الثلاثة 

.mp4 و .webm و .ogg تعمل على جميع المتصفحات و نقصد بذلك أن المتصفحات مهيئة للتعامل مع هذه الأنواع بدون الحاجة لأي إضافات مع الإشارة إلى أنه في حال كان جهاز المستخدم ضعيف و الفيديو الموضوع في الصفحة دقته عالية جداً فهذا الأمر سيؤدي لعدم تمكن المتصفح من تشغيل الفيديو عنده.


    

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

360p تعمل عند جميع المستخدمين.


   
    

خصائص الفيديو

    

بالنسبة للوسم 

<video> هذه تعتبر أهم الخصائص الموجودة فيه:


    
  •           
  • width

    لتحديد عرض نافذة الفيديو, الرقم الذي نمرره لها يمثل العرض بالبيكسل.
  •          
  • height

    لتحديد طول نافذة الفيديو, الرقم الذي نمرره لها يمثل الطول بالبيكسل.
  •          
  • control

    لإظهار أزرار تحكم في نافذة الفيديو.
  •      
    

بالنسبة للوسم 

<source> هذه تعتبر أهم الخصائص الموجودة فيه:


    
  •           
  • src

    لتحديد مسار الفيديو الذي سيتم عرضه.
  •          
  • type

    لتحديد نوع الفيديو الذي سيتم عرضه.
  •      
   

    

معلومة تقنية

    

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

    

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

إضافة فيديو في الصفحة

    

في المثال التالي قمنا بإضافة فيديو في الصفحة مع إظهار أزرار التحكم بالفيديو و تحديد أن عرضه 360 بيكسل و طوله 200 بيكسل.

    

سبب إضافة وسمين 

<source> هو أننا قمنا بتجهيز نسختين من نفس الفيديو, الأولى نوعها .mp4 و الثانية نوعها .ogg بهدف جعل المتصفح يحاول تشغيل أول فيديو موضوع, و إن لم ينجح سيحاول تشغيل الفيديو الثاني.


    

النص 

Your browser does not support the video tag! يتم عرضه في الصفحة في حال كان متصفح المستخدم لا يدعم تشغيل الفيديو من الأساس.


             

مثال

         <video width="360" height="200" controls>    <source src="https://harmash.com/html/src/iron-man-mark-2.mp4" type="video/mp4">    <source src="https://harmash.com/html/src/iron-man-mark-2.ogg" type="video/ogg">    Your browser does not support the video tag!</video>         

جرب الكود

تشغيل الفيديو بشكل تلقائي

    

في حال أردت تشغيل الفيديو بشكل تلقائي عند فتح الصفحة كما هو الحال في يوتيوب فيمكنك إضافة الخاصية 

autoplay للوسم <video> مع الإشارة إلى أن هذه الخاصية لا تعمل على بعض الهواتف.


    

في المثال التالي قمنا بإضافة فيديو في الصفحة مع جعله يشتغل بشكل تلقائي عند فتح الصفحة.

             

مثال

         <video width="360" height="200" controls autoplay>    <source src="https://harmash.com/html/src/iron-man-mark-2.mp4" type="video/mp4">    <source src="https://harmash.com/html/src/iron-man-mark-2.ogg" type="video/ogg">    Your browser does not support the video tag!</video>         

جرب الكود


وسوم و خصائص الصوتيات

    

بشكل عام نستخدم الوسم 

<audio> لإعلام المتصفح أننا نريد عرض ملف صوتي في الصفحة.
    لتحديد الملف الصوتي الذي نريد تشغيله فيه نستخدم الوسم <source>.


   
    

أنواع الملفات الصوتية التي يمكن تشغيلها

    

الأنواع الثلاثة 

.mp3 و .wav و .ogg تعمل على أغلب المتصفحات و نقصد بذلك أن المتصفحات مهيئة للتعامل مع هذه الأنواع بدون الحاجة لأي إضافات.


   
    

خصائص الملف الصوتي

    
  •           
  • بالنسبة للوسم 

    <audio>

     نضيف الخاصية 

    controls

    لإظهار أزرار تحكم في نافذة الملف الصوتي.
  •          
  • بالنسبة للوسم 

    <source>

     نضيف 

    src

     لتحديد مسار الملف الصوتي الذي سيتم تشغيله, و الخاصية 

    type

    لتحديد نوع الملف الصوتي الذي سيتم تشغيله.
  •      

إضافة ملف صوتي في الصفحة

    

في المثال التالي قمنا بإضافة ملف صوتي في الصفحة مع إظهار أزرار التحكم به.

    

سبب إضافة وسمين 

<source> هو أننا قمنا بتجهيز نسختين من نفس الملف الصوتي, الأولى نوعها .mp3 و الثانية نوعها .ogg بهدف جعل المتصفح يحاول تشغيل أول ملف صوتي موضوع, و إن لم ينجح سيحاول تشغيل الملف الصوتي الثاني.


    

النص 

Your browser does not support the audio tag! يتم عرضه في الصفحة في حال كان متصفح المستخدم لا يدعم تشغيل الملف الصوتي من الأساس.


             

مثال

         <audio controls>    <source src="https://harmash.com/tutorials/html/audios/like-ras.mp3" type="audio/mpeg">    <source src="https://harmash.com/tutorials/html/audios/like-ras.ogg" type="audio/ogg">    Your browser does not support the audio tag!</audio>         

جرب الكود


مفهوم الأطر

    

إطار ( Frame ) تعني تخصيص مكان في الصفحة يتم فيه عرض محتوى موجود في صفحة أخرى.
    بمعنى آخر الإطار يتيح لك عرض محتوى صفحة HTML بداخل صفحة HTML أخرى.

إضافة إطار في الصفحة

    

بشكل عام نستخدم الوسم 

<iframe> على هذا النحو <iframe src="url"></iframe> لعرض إطار في الصفحة.
    مكان الكلمة url نضع مسار الصفحة التي نريد عرضها بداخله.


   
    

في المثال التالي قمنا بإضافة إطار في الصفحة باستخدام الوسم 

<iframe> و فيه قمنا بعرض الصفحة الرئيسية في موقع هرمش.


             

مثال

         <iframe src="https://harmash.com"></iframe>         

جرب الكود

تحديد حجم الإطار

    

الإطار الذي تعرضه في الصفحة يتم عرضه في مساحة صغيرة جداً فيها ما لم تحدد الحجم بنفسك كما رأيت في المثال السابق.

    

في العادة حجم الإطار نقوم بتحديده بواسطة كود CSS لأنها توفر طرق سهلة و أفضل لذلك و لكن بما أننا ندرس لغة HTML سنركز على الخصائص التي توفرها لنا لغة HTML لتحديد حجم الإطار:

    
  •           
  • width

    نستخدمها لتحديد عرض الإطار الذي سيتم عرضه بالبكسل.
  •          
  • height

    نستخدمها لتحديد طول الإطار الذي سيتم عرضه بالبكسل.
  •      
   

    

معلومة

    

العرض يمكنك تحديده بنسبة مئوية فمثلاً يمكنك جعل عرض الإطار 

100% حتى يساوي عرض كامل الصفحة.
الطول في حال وضعته 100% لن تلاحظ أي فرق و سبب ذلك أنك بحاجة لجعل طول الصفحة الأساسي هو 100% حتى يعمل.
    لا تشغل بالك بموضوع طول الإطار لأنك ستتعلم كيف تتلاعب فيه بكل سهولة حين تدرس لغة CSS.


   

    

في المثال التالي قمنا بعرض إطار في الصفحة مع تحديد أن عرضه 400 بكسل و طوله 400 بكسل و فيه سيتم عرض محتوى الصفحة الأولى في الدورة.

             

المثال الأول

         <iframe src="https://harmash.com/tutorials/html" width="400" height="400"></iframe>         

جرب الكود

   

    

في المثال التالي قمنا بعرض إطار في الصفحة مع تحديد أن عرضه 100% و طوله 400 بكسل و فيه سيتم عرض محتوى الصفحة الأولى في الدورة.

             

المثال الثاني

         <iframe src="https://harmash.com/tutorials/html" width="100%" height="400"></iframe>         

جرب الكود

إضافة عنوان للإطار

    

العنوان الذي نضعه للإطار ليس الهدف منه أن يتم عرضه في الصفحة, أي لا يتم عرضه في الصفحة أمام المستخدم.

    

أهمية العنوان الذي نضعه للإطار هو أنه في حال كان المستخدم كفيف و يعتمد على قارئ الشاشة ( Screen Reader ) حتى يقرأ له محتوى الصفحة, فإن القارئ سيقرأ العنوان الموضوع في الإطار و هكذا سيعلم المستخدم أنه يوجد إطار في الصفحة.

    

لوضع عنوان للإطار قم بإضافة الخاصية 

title للوسم <iframe> و تمرير العنوان لها كقيمة على هذا النحو <iframe title="text">.


   
    

في المثال التالي قمنا بوضع عنوان للإطار الذي أضفناه في الصفحة مع تحديد حجم الإطار و رابط الصفحة التي سيتم عرض محتواها فيه.

             

مثال

         <iframe src="https://harmash.com/tutorials/html" width="100%" height="400" title="First lesson in the HTML tutorial"></iframe>         

جرب الكود

فتح رابط بداخل إطار

    

في حال أردت فتح الرابط الموضوع في الصفحة بداخل إطار موضوع في نفس الصفحة, يمكنك إضافة الخاصية 

name للإطار و تمرير إسم خاص بها, بعدها تقوم بتمرير الإسم الذي وضعته نفسه للخاصية target في الرابط.


   
    

في المثال التالي قمنا بوضع رابط عند النقر عليه يتم فتح الصفحة التي يشير لها بداخل إطار موضوع في الصفحة.

             

مثال

         <a href="https://harmash.com/tutorials/html" target="my_iframe">Open HTML Tutorial</a><iframe name="my_iframe"></iframe>         

جرب الكود

عرض فيديو من يوتيوب في الصفحة

    

أي فيديو تجده في يوتيوب يمكنك عرضه بكل سهولة بداخل الصفحة بدون الحاجة لكتابة أي كود بنفسك حيث أن يوتيوب يوفر لك خيار إسمه تضمين ( Embed ) بمجرد النقر عليه يعطيك كود إطار يعرض الفيديو.

   
    

معلومة

    

لتجد خيار التضمين ( Embed ) أنقر على زر المشاركة ( Share ) الذي تجده تحت الفيديو و سيظهر لك.
    بعدها أنقر عليه حتى يعطيك الكود الذي يمكنك نسخه و وضعه في الصفحة.

   
    

في المثال التالي قمنا بوضع كود حصلنا عليه بعد النقر على زر التضمين ( Embed ) لفيديو موجود في يوتيوب.

             

مثال

         <iframe    width="560"    height="315"    src="https://www.youtube.com/embed/bfaPnlYE8Jo"    frameborder="0"    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"    allowfullscreen></iframe>         

جرب الكود


مفهوم النموذج

    

النموذج ( Form ) في العادة عبارة عن مجموعة عناصر توضع في الصفحة بهدف جعل المستخدم يدخل بيانات فيها.
    من الأمثلة الشائعة التي نتعامل فيها مع نماذج, هي صفحات تسجيل الدخول, صفحات إنشاء حساب جديد, إضافة تعليق, إضافة منشور إلخ..

    

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

    

في هذا الدرس سنتعرف على الخصائص التي يمكن وضعها في النموذج و دور كل منها.

   
    

معلومة تقنية

    

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

إضافة نموذج في الصفحة

    

بشكل عام نستخدم الوسم 

<form> على النحو التالي لإضافة نموذج في الصفحة.


    <form>    <!-- هنا يجب إضافة كل العناصر التابعة للنموذج --></form>    
    

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

             

مثال

         <form>    Username<br>    <input type="text"><br><br>    Password<br>    <input type="password"><br><br>    <input type="button" value="Login"></form>         

جرب الكود

إضافة زر لإرسال محتوى النموذج

    

كل نموذج تقوم بإنشائه يجب أن تضع فيه زر واحد نوعه 

submit على النحو التالي <input type="submit"> بهدف إعلام المتصفح أن هذا الزر مخصص لإرسال البيانات المدخلة في النموذج إلى الموقع.


   
    

معلومة تقنية

    

إفتراضياً, عند النقر على زر نوعه 

submit يتوقع المتصفح أنه يجب عرض صفحة جديدة للمستخدم نسبةً للبيانات التي تم تمريرها للنموذج.
    في حال لم يتم تحديد الصفحة التي سيتم نقل المستخدم إليها فإن المتصفح سيقوم بفتح الصفحة الحالية من جديد في الصفحة التي يوجد فيها النموذج.


    

طريقة تحديد الصفحة التي سيتم إرسال البيانات لها سنتعلمها بعد قليل و لكن الآن ركز فقط على فكرة زر إرسال المحتوى.

   
    

في المثال التالي قمنا بإضافة زر لإرسال بيانات النموذج مع الإشارة إلى أننا قمنا بإظهار الكلمة 

Login عليه.
    ملاحظة: عند النقر على زر الإرسال ستلاحظ أن المتصفح سيقوم بإعادة عرض كامل الصفحة مكان ظهور الصفحة الحالية و سبب ذلك أننا لم نحدد الصفحة التي نريد الإنتقال إليها عند إرسال بيانات النموذج.


             

مثال

         <form>    Username<br>    <input type="text"><br><br>    Password<br>    <input type="password"><br><br>    <input type="submit" value="Login"></form>         

جرب الكود

تحديد أسلوب إرسال بيانات النموذج

    

عند إرسال بيانات النموذج, يجب تحديد الأسلوب الذي سيتم إعتماده لنقل البيانات و هنا يوجد أسلوبين أساسيين هما 

post و get.
    لتحديد أسلوب إرسال البيانات في النموذج نضيف الخاصية method و نمرر لها إما القيمة get و إما القيمة post كالتالي.


    <!-- get إذا كنا سنستخدم أسلوب --><form method="get"><!-- post إذا كنا سنستخدم أسلوب --><form method="post">    

    

معلومات حول أسلوب get

    
  •           
  • البيانات المدخلة في النموذج يتم إضافتها لرابط الصفحة التي سيتم إرسالها لها.
  •          
  • رابط الصفحة محدود بعدد الأحرف حيث لا يمكن أن يتجاوز حجم الرابط 

    2048

    حرفاً.
  •          
  • بما أن كل البيانات التي يتم إرسالها تكون مرئية في الرابط فإن هذا الأسلوب لا يصلح في حال كانت البيانات المرسلة حساسة مثل كلمة مرور المستخدم.
  •          
  • هذا الأسلوب ممتاز في حال كنت تريد إتاحة حفظ الصفحة كمرجع ( Bookmark ).
  •      
   

    

معلومات حول أسلوب post

    
  •           
  • البيانات المدخلة في النموذج يتم إرسالها بشكل لا يراه المستخدم العادي.
  •          
  • يمكنك إرسال ما شئت من البيانات بدون القلق حول حجم البيانات التي سيتم إرسالها.
  •          
  • هذا الأسلوب جيد في حال كانت البيانات المرسلة حساسة مثل كلمة مرور المستخدم أو معلومات بطاقته الإئتمانية.
  •          
  • هذا الأسلوب غير مفيد في حال كنت تريد إتاحة حفظ الصفحة كمرجع ( Bookmark ).
  •      
   

    

ملاحظة

              

كمصمم صفحات ( Web Designer ) لا يهمك إطلاقاً معرفة الفرق بين أساليب إرسال البيانات لأن هذا الأمر يقع على عاتق مطور الموقع ( Web Developer ) الذي يتولى برمجته و بالطبع ستفهم ذلك بدقة أكثر حين تبدأ مستقبلاً بتعلم برمجة المواقع.

     

إعطاء أسماء للوسوم الموضوعة في النموذج

    

أي وسم موضوع في النموذج بهدف أن يدخل المستخدم بياناته فيه أو أن يختار بياناته منه يجب أن يملك الخاصية 

name مع الإشارة إلى أنه يجب إعطاء كل وسم قيمة مختلفة للخاصية name كالتالي.


             

مثال

         <form>    <!-- "username" و أعطيناها القيمة name هذا الوسم أضفنا فيه الخاصية -->    <input type="text" name="username">        <!-- "password" و أعطيناها القيمة name هذا الوسم أضفنا فيه الخاصية -->    <input type="password" name="password">        <!-- لأننا لن ندخل قيمة فيه name هذا الوسم لا يحتاج أن نضيف فيه الخاصية -->    <input type="submit"></form>        
    

الكلمة 

name المعطاة للوسوم لا تظهر أمام المستخدم و لكنها تجعل المتصفح يقوم بتخزين ما يدخله المستخدم في المربع الأول بإسم username و ما يدخله في المربع الثاني بإسم password بحيث تصبح كل معلومة تم إدخالها تملك قيمة مفتاحية تميزها عن غيرها.


    

هنا إذا إفترضنا أن المستخدم أدخل القيمة 

Mhamad في أول مربع نص و القيمة 1234 في ثاني مربع فإنه سيخزّن القيم برمجياً على هذا الشكل البسيط.


    [    username: "Mhamad",    password: "1234"]    

    

معلومة تقنية

    

عندما يتم إعطاء الوسم إسم بواسطة الخاصية 

name فإنك تجد المتصفح يصبح قادر على عرض إقتراحات لك عندما تقوم بملئه.
    كمثال بسيط, عندما تحاول تسجيل الدخول في أي موقع تجده يظهر لك المعلومات السابقة التي استخدمتها لتسجيل الدخول فيه في حال أردت اختيارها نفسها.


تحديد أين سيتم إرسال محتوى النموذج

    

لتحديد أين سيتم إرسال محتوى النموذج عند النقر على الزر الذي نوعه 

submit نقوم بإضافة الخاصية action و تمرير رابط الموقع الذي سيتلقى البيانات منها.


   
    

معلومة تقنية

    

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

   
    

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

post و من ثم عرضها كما هي.


             

مثال

         <form action="/tryit/submitted" method="post">    Username<br>    <input type="text" name="username"><br><br>    Password<br>    <input type="password" name="password"><br><br>    <input type="submit" value="Login"></form>         

جرب الكود

تفعيل الإكمال التلقائي في النموذج

    

في حال أردت جعل النموذج يظهر إقتراحات للمستخدم حين يقوم بملئ مربعات النصوص الموضوعة فيه يمكنك إضافة الخاصية 

autocomplete في الوسم <form> و إعطاءها القيمة on في حال أردت إظهار إقتراحات و إعطاءها القيمة off إن لم ترد ذلك.


    

إفتراضياً, الإكمال التلقائي يكون مفعلاً بشكل إفتراضي, أي يكون محدد على هذا النحو 

<form autocomplete="on"> حتى لو لم تحدد ذلك بنفسك.


   
    

في المثال التالي قمنا بتفعيل الإكمال التلقائي في النموذج.
    إذاَ هنا ستلاحظ عند تعبئة النموذج أن المتصفح سيقترح عليك اختيار معلومات قمت أنت في السابق بإدخالها في مربعات النصوص.

             

المثال الأول

         <form autocomplete="on">    ...</form>         

جرب الكود

   

    

في المثال التالي قمنا بإيقاف الإكمال التلقائي في النموذج.
    إذاَ هنا ستلاحظ عند تعبئة النموذج أن المتصفح لن يقترح عليك اختيار أي معلومات قمت سابقاً بإدخالها.

             

المثال الثاني

         <form autocomplete="off">    ...</form>         

جرب الكود

إلغاء التشييك على القيم المدخلة في النموذج

    

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

    

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

novalidate للوسم <form> على هذا النحو <form novalidate>.


    

ملاحظة: الخاصية 

novalidate تعمل على أغلب المتصفحات المشهورة باستثناء متصفح Safari.


   
    

في المثال التالي قمنا بإلغاء التشييك التلقائي على القيم المدخلة في النموذج.
    هنا قمنا بإضافة الخاصية 

novalidate للوسم <form> لجعل المتصفح لا يهتم بما إن كان البريد الإلكتروني الذي تم إدخاله صحيحاً أم لا.


             

مثال

         <form novalidate>    ...</form>         

جرب الكود

تحديد أين سيتم فتح الصفحة التي تستقبل بيانات النموذج

    

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

    

في حال أردت تحديد أين سيتم فتح الصفحة التي تستقبل البيانات يجب أن تضيف الخاصية 

target في الوسم <form> و إعطائها إحدى القيم التالية:


    
  •           
  • _self

    في حال أردت أن يتم فتح الصفحة الجديدة مكان الصفحة المفتوحة حالياً (هذا الخيار الإفتراضي).
  •          
  • _blank

    في حال أردت أن يتم فتح تبويب جديد في المتصفح و فتح الصفحة فيه.
  •          
  • _top

    في حال أردت أن يتم فتح الصفحة الجديدة في نفس الصفحة الحالية مع إزالة أي صفحات  متداخلة موضوعة فيها.
  •          
  • _parent

    في حال أردت أن يتم فتح الصفحة الجديدة مكان الصفحة الموجودة فيها الصفحة الحالية.
  •          
  • framename

     في حال أردت أن يتم فتح الصفحة الجديدة بداخل إطار ( <iframe> ) موجود في نفس الصفحة.
  •      
   

    

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

             

المثال الأول

         <form>    ...</form>         

جرب الكود

   

    

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

my_iframe.


             

المثال الثاني

         <form target="my_iframe">    ...</form><iframe name="my_iframe"></iframe>         

جرب الكود

أهم الوسوم التي تستخدم مع النماذج

    

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

    

فيما يلي ذكرنا أهم الوسوم التي عليك معرفتها:

    
  •           
  • <label>

    يستخدم لوضع إسم خاص للعنصر الموضوع في النموذج.
  •          
  • <button>

    يستخدم للحصول على زر.
  •          
  • <textarea>

    يستخدم للحصول على مربع نص يتألف من أكثر من سطر.
  •          
  • <select>

    يستخدم للحصول على قائمة منسدلة يجب إختيار أحد قيمها.
  •          
  • <datalist>

    يستخدم للحصول على قائمة منسدلة يمكن إختيار أحد قيمها.
  •          
  • <fieldset>

    يستخدم لإضافة حدود للنموذج مما يظهره بشكل أجمل.
  •          
  • <input>

    يعتبر من أهم الوسوم حيث يمكن استخدامه للحصول على أشكال عديدة.
  •      
   
    

أشكال الوسم <input>

    

بالنسبة للأشكال التي يمكن الحصول عليها بواسطة هذا الوسم, فيجب أن تضيف الخاصية 

type له و إعطاؤه إحدى القيم المعرفة مسبقاً لتحديد الشكل الذي تريد الحصول عليه. هذه تعتبر أهم الأشكال التي يمكن الحصول عليها لأنها تعمل على جميع المتصفحات:


    
  •           
  • <input type="text">

    للحصول على مربع نص عادي و هذا هو النوع الإفتراضي له.
  •          
  • <input type="password">

    للحصول على مربع نص مخصص لإدخال كلمة المرور.
  •          
  • <input type="number">

    للحصول على مربع نص مخصص لإدخال الرقام.
  •          
  • <input type="email">

    للحصول على مربع نص مخصص لإدخال بريد إلكتروني.
  •          
  • <input type="button">

    للحصول على زر عادي.
  •          
  • <input type="submit">

    للحصول على زر خاص لإرسال بيانات النموذج.
  •          
  • <input type="reset">

    للحصول على زر خاص لإعادة القيم الأولية لجميع عناصر النموذج.
  •          
  • <input type="file">

    للحصول على زر خاص لجعل المستخدم يختار ملف في جهازه.
  •          
  • <input type="range">

    للحصول على شريط يمكن تحريكه لاختيار قيمة عددية.
  •          
  • <input type="checkbox">

    للحصول على زر مربع الشكل يمكن اختياره أو عدم إختياره.
  •          
  • <input type="radio">

    للحصول على زر دائري الشكل يمكن إختياره أو عدم اختياره.
  •      
   
    

ستتعلم كيفية التعامل مع هذه الوسوم في دروس لاحقة و نود الإشارة إلى أن بعض هذه الوسوم يمكن إضافة وسوم أخرى بداخلها أيضاً.


     

أهمية عنونة العناصر

    

في حال أضفت نص عادي كإسم لأي عنصر موضوع في النموذج فإن هذا الأسلوب لا يعتبر أفضل طريقة لفعل ذلك لأن المتصفح لن يعرف أنهما مرتبطين ببعضهما.
    طريقة وضع أسماء لعناصر النموذج كما فعلنا في الدرس السابق لا تُعتبر أفضل طريقة لفعل ذلك و ليست الطريقة التي يجب إتباعها لفعل ذلك.

   
    

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

Username مرتبط بمربع النص الموضوع بعده و بالتالي في حال قام المستخدم بالنقر على النص فإنه لن يعرف أنه يريد البدء بالكتابة بداخل مربع النص الخاص به و بالتالي سيضطر المستخدم بالنقر بداخل مربع النص حتى يتمكن من الكتابة فيه.


             

مثال

         Username<br><input type="text">         

جرب الكود

الطريقة الصحيحة لعنونة العناصر

    

أي عنصر في النموذج تريد وضع نص خاص له سواء بجانبه أو فوقه يفترض أن تضعه بداخل

<label> </label>.


    

عند إضافة النص بداخل 

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


    

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

    

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

   
    

الآن, لربط أي عنصر موضوع في النموذج بإسم خاص به يجب:

    
  1.           
  2. إضافة الخاصية 

    id

    للعنصر و إعطاؤها إسم خاص للعنصر.
  3.          
  4. إضافة الخاصية 

    for

     في الوسم 

    <label>

     و تمرير نفس قيمة الخاصية 

    id

    التي وضعناها للعنصر لها.
  5.      
   

    

في المثال التالي قمنا بإضافة مربع نص 

<input type="text"> مربوط بإسم <label> في النموذج.


             

مثال

         <label for="username">Username</label><br><input type="text" id="username">         

جرب الكود


إضافة مربع نص

    

لإضافة مربع نص في الصفحة يمكنك استخدام الوسم 

<input> مع الإشارة إلى أن هذا الوسم يمكن استخدامه لإضافة الكثير من الأشياء الأخرى و التي سنتعرف عليها في دروس لاحقة.


    

يمكنك إضافة الخصائص التالية لهذا الوسم:

    
  •           
  • id

     نضيفها له في حال أردنا ربطه بوسم <label>.
  •          
  • name

    نضيفها له حتى يتم إرسال القيمة الموضوعة فيه عند النقر على زر الإرسال.
  •          
  • type

    لتحديد النوع أو الشكل الذي سيتم عرضه مكان الوسم في الصفحة.
  •          
  • value

    لإعطائه قيمة أولية.
  •          
  • readonly

    لجعل قيمته غير قابلة للتغيير.
  •          
  • disabled

    لجعله يظهر بلون باهت و قيمته غير قابلة للنسخ أو التغيير.
  •          
  • size

    لتحديد كم حرف تريد أن يظهر بداخل المربع (كأنك تحدد حجمه نسبةً لعدد الأحرف التي يمكن إدخالها فيه).
  •          
  • maxlength

    لتحديد أقصى عدد أحرف يمكن أن إدخلها فيه.
  •          
  • placeholder

    لإظهار تلميح بداخل مربع النص يظهر في حال كان فارغاً.
  •          
  • required

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

    

تحديد نوع مربع النص

    

بالنسبة لنوع مربع النص الذي نحدده بواسطة الخاصية 

type فإن الأشكال التالية هي الأكثر أهمية:


    
  •           
  • <input type="text">

    للحصول على مربع نص عادي و هذا هو النوع الإفتراضي له.
  •          
  • <input type="password">

    للحصول على مربع نص مخصص لإدخال كلمة المرور.
  •          
  • <input type="number">

    للحصول على مربع نص مخصص لإدخال الرقام.
  •          
  • <input type="email">

    للحصول على مربع نص مخصص لإدخال بريد إلكتروني.
  •      
    

إفتراضياً في حال لم تحدد شكل الوسم 

<input> سيتم إعتبار أنك تريد عرض مربع نص عادي <input type="text">.


   
    

في المثال التالي قمنا بعرض مربع نص بدون تحديد نوعه.

             

المثال الأول

         <label for="username">Username</label><br><input id="username" name="username">         

جرب الكود

   

    

في المثال التالي قمنا بعرض مربع نص مخصص لإدخال بريد إلكتروني و مربع نص مخصص لإدخال كلمة مرور.
    ملاحظة: هنا في حال لم يدخل المستخدم نص يشبه البريد الإلكتروني فإنه لن يتمكن من النقر على زر إرسال البيانات .

             

المثال الثاني

         <label for="email">Email</label><br><input type="email" id="email" name="email"><br><br><label for="password">Password</label><br><input type="password" id="password" name="password">         

جرب الكود

   

    

في المثال التالي قمنا بعرض مربع نص مخصص لإدخال رقم.
    ملاحظة: هنا يسمح للمستخدم بإدخال أعداد فقط بداخل مربع النص.

             

المثال الثالث

         <label for="age">Your age</label><br><input type="number" id="age" name="age">         

جرب الكود

   

    

في المثال التالي قمنا بتحديد أن عدد الأحرف التي يمكن أن تظهر بداخل مربع النص هو 20 و عدد الأحرف الأقصى التي يمكن إدخالها فيه هو 25.

             

المثال الرابع

         <label for="username">Username</label><br><input type="text" id="username" name="username" size="20" maxlength="25">         

جرب الكود

   

    

في المثال التالي قمنا بإضافة قيمة أولية في مربع النص.

             

المثال الخامس

         <label for="username">Username</label><br><input type="text" id="username" name="username" value="mhamad">         

جرب الكود

   

    

في المثال التالي قمنا بجعل قيمة مربع النص قابلة للقراءة فقط, أي لا يمكن تغييرها.

             

المثال السادس

         <label for="username">Username</label><br><input type="text" id="username" name="username" value="mhamad" readonly>         

جرب الكود

   

    

في المثال التالي قمنا بجعل مربع النص يظهر بشكل غير مفعّل مما يعني أنه يظهر بلون باهت و قيمته غير قابلة للنسخ أو التغيير.

             

المثال السابع

         <label for="username">Username</label><br><input type="text" id="username" name="username" value="mhamad" disabled>         

جرب الكود

   

    

في المثال التالي قمنا بجعل مربعات النصوص تظهر تلميحات في حال كانت فارغة.

             

المثال الثامن

         <label for="email">Email</label><br><input type="email" id="email" name="email" placeholder="Enter your email address"><br><br><label for="password">Password</label><br><input type="password" id="password" name="password" placeholder="Enter your password">         

جرب الكود

   

    

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

             

المثال التاسع

         <label for="email">Email</label><br><input type="email" id="email" name="email" required><br><br><label for="password">Password</label><br><input type="password" id="password" name="password" required>         

جرب الكود

إضافة مربع نص متعدد الأسطر

    

نستخدم الوسم 

<textarea> على هذا النحو <textarea>text</textarea> لعرض مربع نص يتألف من أكثر من سطر.
    مكان الكلمة text نمرر كل النص الذي نريد عرضه بداخله.


    

في العادة نستخدم مربع نص متعدد الأسطر حين نطلب من المستخدم إدخال عنوانه أو نبذة عنه.

   
    

يمكنك إضافة الخصائص التالية لهذا الوسم:

    
  •           
  • id

     نضيفها له في حال أردنا ربطه بوسم <label>.
  •          
  • name

    نضيفها له حتى يتم إرسال القيمة الموضوعة فيه عند النقر على زر الإرسال.
  •          
  • readonly

    نضيفها له في حال أردنا جعل قيمته غير قابلة للتغيير.
  •          
  • disabled

    نضيفها له في حال أردنا جعله يظهر بلون باهت و قيمته غير قابلة للنسخ أو التغيير.
  •          
  • cols

    نضيفها له في حال أردنا تحديد كم حرف كحد أقصى يمكن أن يظهر فيه على نفس السطر, أي كأنك تحدد عرضه نسبةً لعدد الأحرف الأقصى التي يمكن إدخالها في كل سطر.
  •          
  • rows

    نضيفها له في حال أردنا تحديد كم سطر يمكن أن يظهر فيه في كل مرة, أي كأنك تحدد طوله نسبةً لعدد الأسطر التي تحددها له.
  •      
   

    

في المثال التالي قمنا بإضافة مربع نص يتألف من أكثر من سطر مع وضع قيمة أولية فيه.

             

المثال الأول

         <label for="biography">Biography</label><br><textarea name="biography" id="biography">Harmash.com is published in 2014.</textarea>         

جرب الكود

   

    

في المثال التالي قمنا بإضافة مربع نص يتألف من أكثر من سطر مع تحديد عدد الأحرف الأقصى التي يمكن أن تظهر في كل سطر و عدد الأسطر الإفتراضية التي ستظهر فيه.

             

المثال الثاني

         <label for="biography">Biography</label><br><textarea name="biography" id="biography" cols="40" rows="4">Harmash.com is published in 2014.</textarea>         

جرب الكود

   

    

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

             

المثال الثالث

         <label for="biography">Biography</label><br><textarea name="biography" id="biography" cols="40" rows="4" readonly>Harmash.com is published in 2014.</textarea>         

جرب الكود

   

    

في المثال التالي قمنا بإضافة مربع نص يتألف من أكثر من سطر مع تحديد حجمه و جعله غير مفعّل, أي لا يمكن تغيير قيمته أو نسخها.

             

المثال الرابع

         <label for="biography">Biography</label><br><textarea name="biography" id="biography" cols="40" rows="4" disabled>Harmash.com is published in 2014.</textarea>         

جرب الكود


أنواع الأزرار

    

بشكل عام هناك 4 أنواع مهمة من الأزرار التي يمكن إضافتها في النماذج و جميعها يمكن إضافها بواسطة الوسم

<input>.


    

لتحديد نوع الزر الذي سيتم إظهاره يجب إضافة الخاصية 

type للوسم و تمرير إحدى القيم المجهزة مسبقاً كالتالي:


    
  •           
  • <input type="button">

    للحصول على زر عادي.
  •          
  • <input type="submit">

    للحصول على زر مخصص لإرسال بيانات النموذج.
  •          
  • <input type="reset">

    للحصول على زر مخصص لإعادة تعيين البيانات الأولية في النموذج.
  •          
  • <input type="file">

    للحصول على زر مخصص لجعل المستخدم يختار ملف موجود في جهازه.
  •      
   

    

ملاحظة

              

إفتراضياً في حال لم تحدد شكل الوسم 

<input> سيتم إعتبار أنك تريد عرض مربع نص عادي <input type="text">.


     

إضافة زر عادي

    

للحصول على زر عادي يمكنك استخدام الوسم 

<button type="button">text</button> أو استخدام الوسم <input type="button" value="text">.
    طبعاً, في الحالتين مكان الكلمة text يجب أن تمرر النص الذي تريده أن يظهر على الزر.


    

الفرق الأساسي بينهما هو أن الوسم 

<button> يمكن وضع وسم آخر بداخله في حين أن الوسم <input> يمكن وضع نص فقط بداخله.
    كمثال بسيط, يمكنك وضع وسم <img> بداخل الوسم <button> لعرض أيقونة في الزر.


   
    

معلومة تقنية

    

بالنسبة لتحديد ما سيحدث عند النقر على الزر يجب أن تستخدم لغة جافا سكريبت لأجل ذلك.
    لا تشغل بالك بهذا الأمر الآن لأنه يعتبر من أسهل الأمور التي ستتعلمها حين تدرس لغة جافا سكريبت مستقبلاً.

   
    

في المثال التالي قمنا بعرض زرين, الأول بواسطة الوسم 

<button> و الثاني بواسطة الوسم <input>.


             

المثال الأول

         <button type="button">Button 1</button><input type="button" value="Button 2">         

جرب الكود

   

    

في المثال التالي قمنا بعرض زرين, الأول بواسطة الوسم 

<button> و الثاني بواسطة الوسم <input>.


    

عند النقر على أي زر منهما سيتم عرض رسالة تنبيه للمستخدم بداخلها النص

"Hello User".
    بالمبدأ قمنا بإضافة الخاصية onclick للزرين و تمرير نص الذي نريد عرضه عند النقر عليهما بواسطة كود جافا سكريبت.


             

المثال الثاني

         <button type="button" onclick="alert('Hello User');">Display Message</button><input type="button" value="Display Message" onclick="alert('Hello User');">         

جرب الكود

   

    

في المثال التالي قمنا بوضع أيقونة بداخل الزر.

             

المثال الثالث

         <button type="button">Play <img src="play.PNG"></button>         

جرب الكود

إضافة زر لإرسال بيانات النموذج

    

لإضافة زر يقوم بإرسال بيانات النموذج بشكل تلقائي للموقع عندما يتم النقر عليه نستخدم الوسم 

<input> مع تحديد أن نوعه submit.


    

إفتراضياً في حال لم تحدد النص الذي سيظهر على الزر الذي نوعه 

submit سيظهر عليه الكلمة Submit.
    لتحديد الكلمة التي ستظهر عليه يمكنك إضافة الخاصية value له و تمرير النص الذي تريد عرضه عليه كقيمة لها.


   
    

في المثال التالي قمنا بإضافة زر خاص لإرسال بيانات النموذج.

             

مثال

         <input type="submit" value="Login">         

جرب الكود

إضافة زر لإعادة تعيين قيم النموذج

    

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

<input> مع تحديد أن نوعه reset.


    

إفتراضياً في حال لم تحدد النص الذي سيظهر على الزر الذي نوعه 

reset سيظهر عليه الكلمة Reset.
    لتحديد الكلمة التي ستظهر عليه يمكنك إضافة الخاصية value له و تمرير النص الذي تريد عرضه عليه كقيمة لها.


   
    

في المثال التالي قمنا بإضافة زر خاص لإعادة قيم النموذج الأولية.

             

مثال

         <input type="reset" value="Reset Values">         

جرب الكود

إضافة زر يتيح للمستخدم اختيار ملف من حاسوبه

    

لإضافة زر يتيح للمستخدم اختيار ملف موجود في جهازه عندما يقوم بالنقر عليه نستخدم الوسم 

<input> مع تحديد أن نوعه file.
    ملاحظة: على هذا الزر بالتحديد يظهر النص "Choose File" مع الإشارة إلى أن هذا النص ثابت لا يمكنك تغييره.


   
    

في المثال التالي قمنا بإضافة زر يسمح للمستخدم باختيار ملف في حاسوبه.

             

مثال

         <input type="file">         

جرب الكود


مفهوم خانة الاختيار

    

خانة الاختيار ( Check Box ) عبارة عن زر مربع الشكل عند النقر عليه يظهر بداخله علامة صح تشير إلى أنه قد تم اختياره و عند النقر عليه مجدداً تختفي علامة الصح للإشارة إلى أنه لم يعد مختاراً.

    

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

إضافة خانة اختيار

    

لإضافة خانة اختيار يمكنك استخدام الوسم 

<input> على هذا النحو <input type="checkbox">.


    

يمكنك إضافة الخصائص التالية لهذا الوسم:

    
  •           
  • id

     نضيفها له في حال أردنا ربطه بوسم <label>.
  •          
  • name

    نضيفها له حتى يتم إرسال القيمة الموضوعة فيه عند النقر على زر الإرسال.
  •          
  • value

    لإعطائه القيمة التي سيتم إرسالها عند النقر على زر الإرسال.
  •          
  • disabled

    لجعله يظهر بلون باهت و قيمته غير قابلة للتغيير.
  •          
  • checked

    نضيفها له لجعله مختاراً بشكل افتراضي عندما تفتح الصفحة.
  •      
   

    

معلومة تقنية

    

بالنسبة للنص الذي ستظهره بجانب الخانة, قم دائماً بوضعه بواسطة الوسم 

<label> مع ربطه بالخانة لأن المتصفح سيعتبر المستخدم نقر على الخانة نفسها عندما ينقر على النص المربوط بها.


    

بالنسبة للإسم الذي تضعه للخانة بواسطة الخاصية 

name فيمكنك إعطاء الخانات أسماء مختلفة في حال أردت إرسال إسم و قيمة كل خيار موضوع سواء قام المستخدم باختياره أم لم يفعل على هذا النحو option1=arabic & option2=english & option3=null و يمكنك إعطاءهم نفس الإسم في حال أردت إرسال القيم التي اختارها منهم فقط على شكل مصفوفة على هذا النحو [arabic, english].


    

لا تقلق في حال لم تفهم ما ذكرناه حول الخاصية 

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


   
    

في المثال التالي قمنا بعرض ثلاث خانات اختيار مع إعطاء إسم و قيمة مختلفة لكل واحد منهم.

             

المثال الأول

         <input type="checkbox" id="ar" name="option1" value="arabic"><label for="ar">Arabic</label><br><input type="checkbox" id="en" name="option2" value="english"><label for="en">English</label><br><input type="checkbox" id="fr" name="option3" value="french"><label for="fr">French</label>         

جرب الكود

   

    

في المثال التالي قمنا بعرض ثلاث خانات اختيار مع إعطائهم نفس الأسماء.

    

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

             

المثال الثاني

         <input type="checkbox" id="ar" name="languages[]" value="arabic"><label for="ar">Arabic</label><br><input type="checkbox" id="en" name="languages[]" value="english"><label for="en">English</label><br><input type="checkbox" id="fr" name="languages[]" value="french"><label for="fr">French</label>         

جرب الكود

   

    

ملاحظة

              

عند إعطاء الخانات نفس الإسم بواسطة الخاصية 

name يجب إضافة الرمز [] في نهاية الإسم حتى يعلم المتصفح أن المستخدم قد يرسل أكثر من قيمة مما يجعله يقوم بإرسال جميع القيم التي يختارها عند النقر على زر إرسال البيانات كما فعلنا في المثال السابق حيث وضعنا name="languages[]" و ليس name="languages".


       

    

في المثال التالي قمنا بعرض ثلاث خانات اختيار مع جعل الأول يظهر مُختاراً بشكل إفتراضي.

             

المثال الثالث

         <input type="checkbox" id="ar" name="option1" value="arabic" checked><label for="ar">Arabic</label><br><input type="checkbox" id="en" name="option2" value="english"><label for="en">English</label><br><input type="checkbox" id="fr" name="option3" value="french"><label for="fr">French</label>         

جرب الكود

   

    

في المثال التالي قمنا بعرض ثلاث خانات اختيار مع جعل الأول يظهر مُختاراً بشكل إفتراضي و غير مفعّل أيضاً لجعل المستخدم غير قادر على تغيير قيمته.

             

المثال الرابع

         <input type="checkbox" id="ar" name="option1" value="arabic" checked disabled><label for="ar">Arabic</label><br><input type="checkbox" id="en" name="option2" value="english"><label for="en">English</label><br><input type="checkbox" id="fr" name="option3" value="french"><label for="fr">French</label>         

جرب الكود


مفهوم زر الراديو

    

زر الراديو ( Radio Button ) عبارة عن زر دائري الشكل عند النقر عليه يظهر بداخله نقطة كبيرة تشير إلى أنه قد تم اختياره.
    نستخدم أزرار الراديو في العادة لعرض عدة خيارات أمام المستخدم و جعله قادراً على اختيار أحدها فقط.

إضافة زر راديو

    

لإضافة زر راديو يمكنك استخدام الوسم 

<input> على هذا النحو <input type="radio">.


    

يمكنك إضافة الخصائص التالية لهذا الوسم:

    
  •           
  • id

     نضيفها له في حال أردنا ربطه بوسم <label>.
  •          
  • name

    نضيفها له حتى يتم إرسال القيمة الموضوعة فيه عند النقر على زر الإرسال.
  •          
  • value

    لإعطائه القيمة التي سيتم إرسالها عند النقر على زر الإرسال.
  •          
  • disabled

    لجعله يظهر بلون باهت و قيمته غير قابلة للتغيير.
  •          
  • checked

    نضيفها له لجعله مختاراً بشكل افتراضي عندما تفتح الصفحة.
  •      
   

    

معلومة تقنية

    

كل مجموعة أزرار راديو يتم إضافتها في الصفحة يجب إعطاؤها نفس الإسم - أي إعطاؤها 

name موحّد - لأنه حين يجد المتصفح أزرار راديو تملك نفس الإسم سيفهم مباشرةً أنها تنتمي لمجموعة واحدة و بالتالي يجب جعل المستخدم قادر على اختيار أحدها فقط و ليس كلها.


    

و بالنسبة للنص الذي ستظهره بجانب الزر, قم دائماً بوضعه بواسطة الوسم 

<label> مع ربطه بالزر لأن المتصفح سيعتبر المستخدم نقر على الزر نفسها عندما ينقر على النص المربوط به.


   
    

في المثال التالي قمنا بعرض ثلاث أزرار راديو.

             

المثال الأول

         <input type="radio" id="ar" name="language" value="arabic"><label for="ar">Arabic</label><br><input type="radio" id="en" name="language" value="english"><label for="en">English</label><br><input type="radio" id="fr" name="language" value="french"><label for="fr">French</label>         

جرب الكود

   

    

في المثال التالي قمنا بعرض ثلاث أزرار راديو مع جعل الأول يظهر مُختاراً بشكل إفتراضي.

             

المثال الثاني

         <input type="radio" id="ar" name="language" value="arabic" checked><label for="ar">Arabic</label><br><input type="radio" id="en" name="language" value="english"><label for="en">English</label><br><input type="radio" id="fr" name="language" value="french"><label for="fr">French</label>         

جرب الكود

   

    

في المثال التالي قمنا بعرض ثلاث أزرار راديو مع جعل الأول يظهر مُختاراً بشكل إفتراضي و الثالث غير مفعّل لجعل المستخدم غير قادر على تغيير قيمته.

             

المثال الثالث

         <input type="radio" id="ar" name="language" value="arabic" checked><label for="ar">Arabic</label><br><input type="radio" id="en" name="language" value="english"><label for="en">English</label><br><input type="radio" id="fr" name="language" value="french" disabled><label for="fr">French</label>         

جرب الكود

   

    

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

gender و الثانية أعطيناها الإسم language.


             

المثال الرابع

         <!-- ينتمي للمجموعة الأولى "gender" كل زر راديو يملك الإسم --><input type="radio" id="male" name="gender" value="male" checked><label for="male">Male</label><br><input type="radio" id="female" name="gender" value="female"><label for="female">Female</label><br><!-- ينتمي للمجموعة الثانية "language" كل زر راديو يملك الإسم --><input type="radio" id="ar" name="language" value="arabic" checked><label for="ar">Arabic</label><br><input type="radio" id="en" name="language" value="english"><label for="en">English</label><br><input type="radio" id="fr" name="language" value="french"><label for="fr">French</label>         

جرب الكود


مفهوم القائمة المنسدلة

    

القائمة المنسدلة ( Dropdown ) عبارة عن قائمة تشبه الزر عند النقر عليها تظهر جميع العناصر الموجودة فيها.

    

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

إضافة قائمة منسدلة

    

لإظهار قائمة منسدلة تحتوي مجموعة عناصر يمكن إختيار أحدها, يمكنك إضافة الوسم 

<select> </select> لإعلام المتصفح أنك تريد عرض قائمة منسدلة و كل عنصر تريد وضعه بداخلها تضعه بداخل <option> </option>.


   
    

خصائص الوسم <select>

    
  •           
  • id

     نضيفها له في حال أردنا ربطه بوسم <label>.
  •          
  • name

    نضيفها له حتى يتم إرسال القيمة المختار فيه عند النقر على زر الإرسال.
  •          
  • size

    نضيفها له في حال أردنا تحديد عدد العناصر التي ستظهر بداخل القائمة, إفتراضياً يظهر عنصر واحد.
  •          
  • multiple

    نضيفها له في حال أردنا جعل المستخدم قادر على اختيار أكثر من قيمة في نفس الوقت.
  •          
  • disabled

    نضيفها له في حال أردنا جعله غير مفعّل, أي ليظهر بلون باهت و لا يمكن النقر على أي قيمة موضوعة فيه.
  •      
   

    

خصائص الوسم <option>

    
  •           
  • value

     نضيفها له لنحدد قيمة الخيار و يجب وضع قيمة مختلفة لكل <option>.
  •          
  • selected

    نضيفها له في حال أردنا جعل العنصر مختاراً بشكل إفتراضي.
  •          
  • disabled

    نضيفها له في حال أردنا جعله يظهر بلون باهت و لا يمكن اختياره.
  •      
   

    

معلومة تقنية

    

النص الذي تظهره بجانب القائمة, قم دائماً بوضعه بواسطة الوسم 

<label> مع ربطه بها لأن المتصفح سيعتبر المستخدم نقر على القائمة نفسها عندما ينقر على النص المربوط به. و هنا نود الإشارة إلى أن القائمة قد لا تفتح عند النقر على النص المربوط بها و لكن سيظهر بشكل واضح للمستخدم أنه يقف عندها الآن و في حال كان يستخدم حاسوب فإنه سيتمكن من تغيير القيمة المختارة فيها بواسطة الأسهم الموجودة في الكيبورد.


   
    

في المثال التالي قمنا بإضافة قائمة منسدلة تحتوي على 4 عناصر.

             

المثال الأول

         <label for="languages">Choose your language:</label><select id="languages" name="languages">    <option value="arabic">Arabic</option>    <option value="english">English</option>    <option value="french">French</option>    <option value="spanish">Spanish</option></select>         

جرب الكود

   

    

في المثال التالي قمنا بإضافة قائمة مع تحديد أن العنصر الثالث سيكون مختاراً بشكل إفتراضي عندما تفتح الصفحة.

             

المثال الثاني

         <label for="languages">Choose your language:</label><select id="languages" name="languages">    <option value="arabic">Arabic</option>    <option value="english">English</option>    <option value="french" selected>French</option>    <option value="spanish">Spanish</option></select>         

جرب الكود

   

    

في المثال التالي قمنا بإضافة قائمة مع جعلها تظهر أربع عناصر (أي كل العناصر الموضوعة فيها) و يمكن إختيار أكثر من عنصر فيها.
    معلومة: حتى تتمكن من اختيار أكثر من عنصر يجب أن تبقي إصبعك على الزر Ctrl عند اختيار العناصر.

             

المثال الثالث

         <label for="languages">Choose your languages:</label><select id="languages" name="languages[]" size="4" multiple>    <option value="arabic">Arabic</option>    <option value="english">English</option>    <option value="french">French</option>    <option value="spanish">Spanish</option></select>         

جرب الكود

   

    

ملاحظة

              

عند استخدام الخاصية 

multiple يجب إضافة الرمز [] في آخر الإسم الذي تعطيه للقائمة بواسطة الخاصية name حتى يعلم المتصفح أن المستخدم قد يرسل أكثر من قيمة مما يجعله يقوم بإرسال جميع القيم التي يختارها عند النقر على زر إرسال البيانات كما فعلنا في المثال السابق حيث وضعنا name="languages[]" و ليس name="languages".


       

    

في المثال التالي قمنا بإضافة قائمة مع جعل آخر عنصرين في القائمة غير قابلين للإختيار.

             

المثال الرابع

         <label for="languages">Choose your language:</label><select id="languages" name="languages">    <option value="arabic">Arabic</option>    <option value="english">English</option>    <option value="french" disabled>French</option>    <option value="spanish" disabled>Spanish</option></select>         

جرب الكود

   

    

في المثال التالي قمنا بإضافة قائمة مع جعلها غير مفعّلة, أي لا يمكن تغيير قيمة العنصر المختار فيها.

             

المثال الخامس

         <label for="languages">Choose your language:</label><select id="languages" name="languages" disabled>    <option value="arabic">Arabic</option>    <option value="english">English</option>    <option value="french">French</option>    <option value="spanish">Spanish</option></select>         

جرب الكود


مفهوم نطاق الإختيار

    

نطاق الإختيار ( Range ) عبارة عن شريط مخصص لاختيار قيم رقمية ضمن نطاق محدد مثلاً من 0 إلى 100.
    هذا الشريط يكون عليه زر يمكن تحريكه لاختيار قيمة.

إضافة نطاق إختيار

    

لإضافة نطاق إختيار يمكنك استخدام الوسم 

<input> على هذا النحو <input type="range">.


    

يمكنك إضافة الخصائص التالية لهذا الوسم:

    
  •           
  • id

     نضيفها له في حال أردنا ربطه بوسم <label>.
  •          
  • name

    نضيفها له حتى يتم إرسال القيمة الموضوعة فيه عند النقر على زر الإرسال.
  •          
  • value

    لإعطائه قيمة أولية.
  •          
  • min

    لتحديد أصغر قيمة فيه.
  •          
  • max

    لتحديد أكبر قيمة فيه.
  •          
  • step

    لتحديد كم ستزيد قيمته كلما تم إزاحته.
  •          
  • disabled

    لجعله يظهر بلون باهت و قيمته غير قابلة للتغيير.
  •      
   

    

في المثال التالي قمنا بعرض نطاق قيمه يمكن أن تتراوح بين 

0 و 20 و قيمته الإفتراضية هي 10.


             

المثال الأول

         <label for="volume">Volume between (0 and 20):</label><input type="range" id="volume" name="volume" min="0" max="20" step="1" value="10">         

جرب الكود

   

    

في المثال التالي قمنا بعرض نطاق قيمه يمكن أن تتراوح بين 

0 و 20 و قيمته الإفتراضية هي 10.
    بالإضافة لذلك جعلنا قيمته تزيد أو تقل بمقدار 5 وحدات كلما تم تحريكه.


             

المثال الثاني

         <label for="volume">Volume between (0 and 20):</label><input type="range" id="volume" name="volume" min="0" max="20" step="5" value="10">         

جرب الكود

   

    

في المثال التالي قمنا بعرض نطاق قيمه يمكن أن تتراوح بين 

0 و 20 و قيمته الإفتراضية هي 7.
    هنا قمنا بجعل النطاق غير مفعّل و بالتالي لا يمكن تغيير قيمته.


             

المثال الثالث

         <label for="volume">Volume between (0 and 20):</label><input type="range" id="volume" name="volume" min="0" max="20" step="1" value="7" disabled>         

جرب الكود


مفهوم تجميع العناصر

    

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

إضافة حدود حول العناصر

    

يستخدم الوسم 

<fieldset> لإضافة حدود على شكل مربع حول عناصر النموذج مع إمكانية إضافة عنوان مميز له.
    عنوان النموذج يتم إضافته بواسطة الوسم <legend> حتى يظهر بشكل جميل جداً ضمن خطوط المربع.


   
    

في المثال التالي قمنا بإضافة حدود و عنوان للنموذج نفسه.

             

المثال الأول

         <form>    <fieldset>        <legend>Login Form</legend>        <!-- هنا نضيف العناصر التي ستظهر بداخل الحدود -->    </fieldset></form>         

جرب الكود

   

    

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

             

المثال الثاني

         <form>    <fieldset>        <fieldset>            <legend>Name</legend>            <!-- هنا وضعنا حدود و عنوان للمجموعة الأولى بداخل النموذج -->        </fieldset>                <fieldset>            <legend>Favourite Language</legend>            <!-- هنا وضعنا حدود و عنوان للمجموعة الأولى بداخل النموذج -->        </fieldset>    </fieldset></form>         

جرب الكود

   

    

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

             

المثال الثالث

         <form>    <fieldset>        <legend>Questionnaire</legend>        <!-- هنا وضعنا حدود و عنوان لكل العناصر التي ستظهر بداخل النموذج -->                <fieldset>            <legend>Name</legend>            <!-- هنا وضعنا حدود و عنوان للمجموعة الأولى بداخل النموذج -->        </fieldset>                <fieldset>            <legend>Favourite Language</legend>            <!-- هنا وضعنا حدود و عنوان للمجموعة الأولى بداخل النموذج -->        </fieldset>    </fieldset></form>         

جرب الكود


طريقة عرض رموز الإيموجي

    

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

    

الأحرف التي نستخدمها لعرض الرموز يمكن وضعها بأسلوب عشري ( Decimal ) أو بأسلوب سداسي عشري ( Hexadecimal ).

   
    

قاعدة عامة

    
  •           
  • عند استخدام الأسلوب Decimal يجب إضافة &# قبل وضع أحرف الرمز.
  •          
  • عند استخدام الأسلوب Hexadecimal يجب إضافة &#x قبل وضع أحرف الرمز.
  •      
    

كما أنه يفضّل دائماً وضع فاصلة منقوطة ; بعد كتابة أحرف الرمز و هذا أمر اختياري و لكننا ننصح بفعله.

   
    

في الجدول التالي قمنا بذكر كل الرموز المتاحة التي يمكن استخدامها لعرض رموز الإيموجي.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
الرمزDecimalHexadecimalإسمهمثال
&#8986;&#x231A;Watchجربه
&#8987;&#x231B;Hourglass Doneجربه
&#9193;&#x23E9;Fast-Forward Buttonجربه
&#9194;&#x23EA;Fast Reverse Buttonجربه
&#9195;&#x23EB;Fast Up Buttonجربه
&#9196;&#x23EC;Fast Down Buttonجربه
&#9197;&#x23ED;Next Track Buttonجربه
&#9198;&#x23EE;Last Track Buttonجربه
&#9199;&#x23EF;Play or Pause Buttonجربه
&#9200;&#x23F0;Alarm Clockجربه
&#9201;&#x23F1;Stopwatchجربه
&#9202;&#x23F2;Timer Clockجربه
&#9203;&#x23F3;Hourglass Not Doneجربه
&#9208;&#x23F8;Pause Buttonجربه
&#9209;&#x23F9;Stop Buttonجربه
&#9210;&#x23FA;Record Buttonجربه
&#9410;&#x24C2;Circled Mجربه
&#9748;&#x2614;Umbrella with Rain Dropsجربه
&#9749;&#x2615;Hot Beverageجربه
&#9757;&#x261D;Index Pointing Upجربه
&#9800;&#x2648;Ariesجربه
&#9801;&#x2649;Taurusجربه
&#9802;&#x264A;Geminiجربه
&#9803;&#x264B;Cancerجربه
&#9804;&#x264C;Leoجربه
&#9805;&#x264D;Virgoجربه
&#9806;&#x264E;Libraجربه
&#9807;&#x264F;Scorpioجربه
&#9808;&#x2650;Sagittariusجربه
&#9809;&#x2651;Capricornجربه
&#9810;&#x2652;Aquariusجربه
&#9811;&#x2653;Piscesجربه
&#9823;&#x265F;Chess Pawnجربه
&#9855;&#x267F;Wheelchair Symbolجربه
&#9875;&#x2693;Anchorجربه
&#9889;&#x26A1;High Voltageجربه
&#9898;&#x26AA;White Circleجربه
&#9899;&#x26AB;Black Circleجربه
&#9917;&#x26BD;Soccer Ballجربه
&#9918;&#x26BE;Baseballجربه
&#9924;&#x26C4;Snowman Without Snowجربه
&#9925;&#x26C5;Sun Behind Cloudجربه
&#9934;&#x26CE;Ophiuchusجربه
&#9935;&#x26CF;Pickجربه
&#9937;&#x26D1;Rescue Worker’s Helmetجربه
&#9939;&#x26D3;Chainsجربه
&#9940;&#x26D4;No Entryجربه
&#9961;&#x26E9;Shinto Shrineجربه
&#9962;&#x26EA;Churchجربه
&#9968;&#x26F0;Mountainجربه
&#9969;&#x26F1;Umbrella on Groundجربه
&#9970;&#x26F2;Fountainجربه
&#9971;&#x26F3;Flag in Holeجربه
&#9972;&#x26F4;Ferryجربه
&#9973;&#x26F5;Sailboatجربه
&#9975;&#x26F7;Skierجربه
&#9976;&#x26F8;Ice Skateجربه
&#9977;&#x26F9;Person Bouncing Ballجربه
&#9978;&#x26FA;Tentجربه
&#9981;&#x26FD;Fuel Pumpجربه
&#9986;&#x2702;Scissorsجربه
&#9989;&#x2705;White Heavy Check Markجربه
&#9992;&#x2708;Airplaneجربه
&#9993;&#x2709;Envelopeجربه
&#9994;&#x270A;Raised Fistجربه
&#9995;&#x270B;Raised Handجربه
&#9996;&#x270C;Victory Handجربه
&#9997;&#x270D;Writing Handجربه
&#9999;&#x270F;Pencilجربه
&#10002;&#x2712;Black Nibجربه
&#10004;&#x2714;Heavy Check Markجربه
&#10006;&#x2716;Heavy Multiplication Xجربه
&#10013;&#x271D;Latin Crossجربه
&#10017;&#x2721;Star of Davidجربه
&#10024;&#x2728;Sparklesجربه
&#10035;&#x2733;Eight-Spoked Asteriskجربه
&#10036;&#x2734;Eight-Pointed Starجربه
&#10052;&#x2744;Snowflakeجربه
&#10055;&#x2747;Sparkleجربه
&#10060;&#x274C;Cross Markجربه
&#10062;&#x274E;Cross Mark Buttonجربه
&#10067;&#x2753;Question Markجربه
&#10068;&#x2754;White Question Markجربه
&#10069;&#x2755;White Exclamation Markجربه
&#10071;&#x2757;Exclamation Markجربه
&#10083;&#x2763;Heavy Heart Exclamationجربه
&#10084;&#x2764;Red Heartجربه
&#10133;&#x2795;Heavy Plus Signجربه
&#10134;&#x2796;Heavy Minus Signجربه
&#10135;&#x2797;Heavy Division Signجربه
&#10145;&#x27A1;Right Arrowجربه
&#10160;&#x27B0;Curly Loopجربه
&#10175;&#x27BF;Double Curly Loopجربه
&#10548;&#x2934;Right Arrow Curving Upجربه
&#10549;&#x2935;Right Arrow Curving Downجربه
&#11013;&#x2B05;Left Arrowجربه
&#11014;&#x2B06;Up Arrowجربه
&#11015;&#x2B07;Down Arrowجربه
&#11035;&#x2B1B;Black Large Squareجربه
&#11036;&#x2B1C;White Large Squareجربه
&#11088;&#x2B50;Starجربه
&#11093;&#x2B55;Heavy Large Circleجربه
&#12336;&#x3030;Wavy Dashجربه
&#12349;&#x303D;Part Alternation Markجربه
&#12951;&#x3297;
جربه
&#12953;&#x3299;Japanese “Congratulations” Buttonجربه
?&#126980;&#x1F004;Mahjong Red Dragonجربه
?&#127183;&#x1F0CF;Jokerجربه
?&#127344;&#x1F170;A Button (Blood Type)جربه
?&#127345;&#x1F171;B Button (Blood Type)جربه
?&#127358;&#x1F17E;O Button (Blood Type)جربه
?&#127359;&#x1F17F;P Buttonجربه
?&#127374;&#x1F18E;Ab Button (Blood Type)جربه
?&#127377;&#x1F191;Cl Buttonجربه
?&#127378;&#x1F192;Cool Buttonجربه
?&#127379;&#x1F193;Free Buttonجربه
?&#127380;&#x1F194;Id Buttonجربه
?&#127381;&#x1F195;New Buttonجربه
?&#127382;&#x1F196;Ng Buttonجربه
?&#127383;&#x1F197;Ok Buttonجربه
?&#127384;&#x1F198;Sos Buttonجربه
?&#127385;&#x1F199;Up! Buttonجربه
?&#127386;&#x1F19A;Vs Buttonجربه
?&#127489;&#x1F201;Japanese “Here” Buttonجربه
?&#127490;&#x1F202;Japanese “Service Charge” Buttonجربه
?&#127514;&#x1F21A;Japanese “Free of Charge” Buttonجربه
?&#127535;&#x1F22F;Japanese “Reserved” Buttonجربه
?&#127538;&#x1F232;Japanese “Prohibited” Buttonجربه
?&#127539;&#x1F233;Japanese “Vacancy” Buttonجربه
?&#127540;&#x1F234;Japanese “Passing Grade” Buttonجربه
?&#127541;&#x1F235;Japanese “No Vacancy” Buttonجربه
?&#127542;&#x1F236;Japanese “Not Free of Charge” Buttonجربه
?&#127543;&#x1F237;Japanese “Monthly Amount” Buttonجربه
?&#127544;&#x1F238;Japanese “Application” Buttonجربه
?&#127545;&#x1F239;Japanese “Discount” Buttonجربه
?&#127546;&#x1F23A;Japanese “Open For Business” Buttonجربه
?&#127568;&#x1F250;Japanese “Bargain” Buttonجربه
?&#127569;&#x1F251;Japanese “Acceptable” Buttonجربه
?&#127744;&#x1F300;Cycloneجربه
?&#127745;&#x1F301;Foggyجربه
?&#127746;&#x1F302;Closed Umbrellaجربه
?&#127747;&#x1F303;Night with Starsجربه
?&#127748;&#x1F304;Sunrise Over Mountainsجربه
?&#127749;&#x1F305;Sunriseجربه
?&#127750;&#x1F306;Cityscape At Duskجربه
?&#127751;&#x1F307;Sunsetجربه
?&#127752;&#x1F308;Rainbowجربه
?&#127753;&#x1F309;Bridge At Nightجربه
?&#127754;&#x1F30A;Water Waveجربه
?&#127755;&#x1F30B;Volcanoجربه
?&#127756;&#x1F30C;Milky Wayجربه
?&#127757;&#x1F30D;Globe Showing Europe-Africaجربه
?&#127758;&#x1F30E;Globe Showing Americasجربه
?&#127759;&#x1F30F;Globe Showing Asia-Australiaجربه


                
                 




تم عمل هذا الموقع بواسطة