الخطوط والنصوص في CSS: font-family والأحجام
أغلب ما يفعله زائر موقعك هو القراءة. لذلك فإن اختيار الخط وحجمه والمسافة بين الأسطر يصنع فرقاً كبيراً بين صفحة مريحة يقرؤها حتى آخرها، وصفحة متعبة يغلقها بعد سطرين. في هذا الدرس ستتعلم خصائص CSS الخاصة بالخطوط والنصوص، مع نصائح خاصة بالنص العربي.
اختيار الخط: font-family
Section titled “اختيار الخط: font-family”body { font-family: Tahoma, Arial, sans-serif;}لاحظ أننا كتبنا عدة خطوط مفصولة بفواصل. هذه تسمى قائمة احتياطية (Fallback): المتصفح يجرّب الخط الأول، فإن لم يجده على جهاز الزائر انتقل للثاني، وهكذا.
تخيّلها مثل طلبك في مطعم: «أريد عصير مانجو، فإن لم يوجد فبرتقال، فإن لم يوجد فأي عصير». والكلمة الأخيرة sans-serif هي «أي عصير»: نوع عام من الخطوط موجود دائماً.
الأنواع العامة الأشهر:
sans-serif: خطوط بسيطة بلا زوائد، مريحة على الشاشات.serif: خطوط بزوائد صغيرة في أطراف الحروف، تشبه خطوط الكتب المطبوعة.monospace: كل الحروف بنفس العرض، وتُستخدم لعرض الكود.
خطوط من الإنترنت: Google Fonts
Section titled “خطوط من الإنترنت: Google Fonts”لا تعتمد على الخطوط المثبتة على جهاز الزائر فقط. موقع Google Fonts يقدم مئات الخطوط المجانية، منها خطوط عربية جميلة مثل Cairo و Tajawal و IBM Plex Sans Arabic. تختار الخط من الموقع، فيعطيك سطر <link> تضعه في <head>:
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Cairo:wght@400;700&display=swap">ثم تستخدمه في CSS باسمه:
body { font-family: "Cairo", sans-serif;}حجم الخط ووحداته
Section titled “حجم الخط ووحداته”h1 { font-size: 2rem; }p { font-size: 18px; }أشهر ثلاث وحدات:
| الوحدة | معناها |
|---|---|
px |
بكسل: حجم ثابت ودقيق |
rem |
نسبة إلى حجم خط الصفحة الأساسي (غالباً 16px). 2rem = 32px |
em |
نسبة إلى حجم خط العنصر الأب |
لماذا يفضّل المحترفون rem؟ لأن بعض المستخدمين، خاصة كبار السن وضعاف البصر، يكبّرون حجم الخط الافتراضي من إعدادات المتصفح. مع rem يكبر موقعك معهم تلقائياً، أما px فقد يتجاهل رغبتهم.
سمك الخط ونمطه
Section titled “سمك الخط ونمطه”.title { font-weight: 700; } /* عريض */.note { font-weight: 400; } /* عادي */.quote { font-style: italic; } /* مائل */font-weight يقبل أرقاماً من 100 (رفيع جداً) إلى 900 (سميك جداً)، أو الكلمتين normal (تساوي 400) و bold (تساوي 700). لكن الخط نفسه يجب أن يدعم هذا السمك، وإلا اختار المتصفح أقرب سمك متاح.
ارتفاع السطر
Section titled “ارتفاع السطر”line-height تحدد المسافة بين أسطر الفقرة، وهي من أهم خصائص راحة القراءة:
p { line-height: 1.8;}القيمة 1.8 بدون وحدة تعني «1.8 ضعف حجم الخط». الحروف العربية فيها نقاط وتشكيل فوق الحرف وتحته، لذلك تحتاج مسافة أكبر من الإنجليزية؛ وقيمة بين 1.7 و 2 مريحة للنص العربي. موقعنا هذا مثلاً يستخدم 1.9.
محاذاة النص وتزيينه
Section titled “محاذاة النص وتزيينه”h1 { text-align: center; } /* توسيط */p { text-align: justify; } /* ضبط الطرفين */a { text-decoration: none; } /* إزالة الخط تحت الرابط */.old { text-decoration: line-through; } /* خط في منتصف النص */قيم text-align: start و end و center و justify. واستخدم start بدلاً من right أو left، لأنها تعني «بداية السطر» حسب اتجاه الصفحة: اليمين في العربية، واليسار في الإنجليزية. هكذا يعمل تنسيقك صحيحاً في الاتجاهين.
وهناك أيضاً letter-spacing للمسافة بين الحروف، لكن لا تستخدمها مع العربية، لأنها تقطع اتصال الحروف ببعضها.
جرّب بنفسك
Section titled “جرّب بنفسك”جرّب تغيير line-height إلى 1.2 ولاحظ كيف يصبح النص العربي مزدحماً، ثم أعده. وجرّب font-weight بقيم مختلفة، و text-align: center للفقرة:
الناتج
أخطاء شائعة
Section titled “أخطاء شائعة”- نسيان النوع العام في آخر font-family: إذا لم يجد المتصفح أي خط من قائمتك، سيختار خطاً افتراضياً قد لا يناسب تصميمك. أنهِ القائمة دائماً بـ
sans-serifأوserif. - سطور متلاصقة:
line-heightصغير يجعل النص العربي متعباً جداً. ابدأ من1.7فأكثر. - نص صغير جداً على الموبايل: حجم أقل من 16px للنص الأساسي يجبر الزائر على التكبير بأصابعه.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
إذا كان حجم الخط الأساسي للصفحة 16px، فكم يساوي 2rem؟
rem نسبة إلى حجم الخط الأساسي، فـ 2rem تساوي 2 × 16 = 32px.
سؤال
لماذا نكتب أكثر من خط في font-family؟
المتصفح يستخدم أول خط متاح في القائمة، والباقي بدائل احتياطية.
الخلاصة
Section titled “الخلاصة”font-familyبقائمة احتياطية تنتهي بنوع عام مثلsans-serif، و Google Fonts لخطوط إضافية.font-sizeبوحدةremغالباً، لتحترم إعدادات المستخدم.font-weightللسمك، وتجنّب الخط المائل وletter-spacingمع العربية.line-heightبين1.7و2يجعل النص العربي مريحاً.text-align: startبدلrightوleft، وtext-decorationلتزيين النص.