كيف تضبط حجم الخط في CSS
تضبط الخاصية font-size حجم النص. ضعها على أي عنصر وسيرث كل نص بداخله ذلك الحجم، ما لم يضبط ابن حجمه الخاص.
لتغيير حجم الخط في HTML تستخدم CSS أيضًا. أضف السمة style (<p style="font-size: 20px;">) أو قاعدة في ملف الأنماط. الوسم <font size="5"> من التسعينيات ملغى ولا مكان له في صفحة حديثة.
الوحدات التي تقبلها font-size
| القيمة | مثال | نسبةً إلى ماذا |
|---|---|---|
px | 16px | لا شيء: حجم ثابت |
rem | 1.25rem | حجم خط العنصر الجذر <html> (16px افتراضيًا) |
em | 1.2em | حجم خط العنصر الأب |
% | 120% | حجم خط الأب، مثل em (120% تساوي 1.2em) |
| كلمة مفتاحية | large | مقياس محدد مسبقًا حول القيمة الافتراضية medium |
| كلمة مفتاحية نسبية | smaller، larger | خطوة واحدة عن حجم الأب |
| نافذة العرض | 4vw | عرض نافذة العرض (4% منه) |
| دالة | clamp(1rem, 4vw, 2rem) | مرن بين حد أدنى وحد أقصى |
اكتب قيمة وشاهد الحجم الذي يحسبه المتصفح:
جرّب 20px و2em و150% وx-large وsmaller و5vw. القيمة غير الصالحة، مثل big، تُتجاهل ويحتفظ النص بآخر حجم صالح.
الفرق بين rem وem: الفرق الذي يفاجئك
تنظر rem دائمًا إلى العنصر الجذر، لذلك 1.2rem بالحجم نفسه أينما ظهرت. أما em فتنظر إلى الأب، فتتضاعف الأحجام حين تتداخل العناصر:
صندوق em الأعمق يساوي 16 × 1.2 × 1.2 × 1.2 = 27.648px. وصندوق rem الأعمق ما زال 19.2px. هذا التضاعف مفيد لمكوّن يجب أن تتغير أجزاؤه معًا، ومفاجئ في كل مكان آخر. تقارن صفحة الوحدات كل وحدات الطول.
الكلمات المفتاحية: من xx-small إلى xx-large
تقابل الكلمات المفتاحية المطلقة مقياسًا ثابتًا حول medium، التي تساوي الحجم الافتراضي للمستخدم (16px ما لم يغيّره):
مع الحجم الافتراضي 16px تكون small بحجم 13px، وlarge بحجم 18px، وx-large بحجم 24px، وxx-large بحجم 32px. الكلمات المفتاحية مناسبة للعمل السريع، لكن نظام التصميم يريد عادةً مقياسه الخاص بـ rem.
حجم خط مرن مع clamp()
العنوان الذي يجب أن يكبر مع الشاشة لكن لا يصبح صغيرًا جدًا أو كبيرًا جدًا هو استدعاء واحد لـ clamp(): الحد الأدنى، ثم حجم مفضل يتغير، ثم الحد الأقصى.
في معاينة بعرض 800px تساوي 5vw قيمة 40px، وهي بين 24px و48px، فتفوز. تشرح صفحة clamp الخطوط المرنة بعمق.
ضبط حجم أساسي للصفحة كلها
اضبط الحجم مرة واحدة على body (أو html) واجعل كل شيء آخر نسبيًا إليه:
html { font-size: 100%; } /* respects the user's setting, usually 16px */
body { font-size: 1rem; }
h1 { font-size: 2.25rem; }
small, .caption { font-size: 0.875rem; }
تجنب حيل html { font-size: 62.5%; } إلا إذا كان كل حجم في الصفحة مضبوطًا بعدها بـ rem، ولا تضبط أبدًا حجمًا ثابتًا بـ px على html: فهو يتجاوز حجم الخط الذي اختاره القارئ في متصفحه، وبعض الناس يعتمدون عليه كي يستطيعوا القراءة أصلًا.
ملاحظات حول سهولة الوصول
- نص الجسم بحجم 16px أو أكثر حد أدنى جيد للقراءة على الشاشات.
- الأحجام بـ
remوemتتبع إعداد الخط الافتراضي للمستخدم. أما الأحجام بـpxفتتبع تكبير الصفحة لكن لا تتبع ذلك الإعداد. - على iPhone يكبّر Safari الصفحة حين تركّز على حقل إدخال حجم خطه أقل من 16px. أعطِ حقول النماذج
font-size: 1remأو أكثر لتجنب ذلك.
أخطاء شائعة
- استخدام الوسم
<font>. إنه ملغى. استخدم الخاصيةfont-size. - أحجام
emمتداخلة تكبر أو تصغر بلا سيطرة. استخدمremما لم تكن تريد التضاعف. - حجم ثابت بـ
pxعلىhtml. يتجاوز إعداد الخط الخاص بالقارئ. - نسيان أن للعناوين حجمًا أصلًا.
<h1>حجمه2emافتراضيًا، لذلك تحتاج إلىh1 { font-size: 1em; }إن أردته بحجم نص الجسم. - وحدات نافذة العرض وحدها.
font-size: 3vwتصبح غير مقروءة على الهاتف وضخمة على شاشة عريضة. أحطها بـclamp().
الأسئلة الشائعة
كيف أغيّر حجم الخط في CSS؟
اضبط الخاصية font-size على العنصر: p { font-size: 18px; }. تقبل الأطوال (px وrem وem) والنسب المئوية والكلمات المفتاحية مثل large.
كيف أغيّر حجم الخط في HTML؟
عبر CSS، إما في ملف أنماط أو في السمة style: <p style="font-size: 20px;">. الوسم القديم <font size="5"> ملغى في HTML5 ويجب ألا يُستخدم.
ما حجم الخط الافتراضي في المتصفحات؟
16px لنص الجسم، ما لم يغيّره المستخدم في إعدادات المتصفح. هذه القيمة هي ما تساويه 1rem والكلمة المفتاحية medium افتراضيًا.
هل أستخدم px أم em أم rem لحجم الخط؟
استخدم rem لمعظم النصوص: تتغير مع إعداد خط المتصفح لدى المستخدم ولا تتضاعف. واستخدم em حين يجب أن يتبع الحجم أباه، مثل أيقونة داخل زر. أما px فلا تتبع حجم الخط الافتراضي الذي يضبطه القارئ في متصفحه، فتجنبها لنص الجسم.
لماذا يستمر حجم الخط بـ em في الكبر؟
لأن em نسبية إلى حجم خط الأب، فتتضاعف العناصر المتداخلة: 1.2em داخل 1.2em تساوي 1.44 ضعف الأساس. انتقل إلى rem، فهي نسبية دائمًا إلى العنصر الجذر.