طريقة الاستخدام
- اختر الخاصية، واكتب أصغر حجم وأكبر حجم، ثم اختر وحدة الأحجام.
- اكتب العرضين في عرض الشاشة حيث يكون الحجم أصغر ما يمكن وعرض الشاشة حيث يكون الحجم أكبر ما يمكن، واختر وحدتهما.
- إذا استعملت rem في أي مكان، فتحقق من حجم الخط الجذري (px). تستعمل المتصفحات 16 px ما لم يضبط الموقع حجماً آخر.
- انسخ تعريف CSS، أو راجع خطوات الحساب والحجم عند أعراض شائعة للشاشة لترى النتيجة عند كل عرض.
كيف يجعل clamp() الحجم مرناً
تأخذ clamp(MIN, VAL, MAX) حداً أدنى وقيمة مفضلة وحداً أعلى. وتنص مواصفة قيم CSS ووحداتها (باللغة الإنجليزية) على أنها تمثل القيمة نفسها التي تمثلها max(MIN, min(VAL, MAX)). فلا ينزل الحجم عن MIN ولا يرتفع عن MAX، وفيما بينهما يتبع VAL، وهي هنا خط مستقيم يعتمد على عرض الشاشة.
يمتد الخط من أصغر حجم عند أضيق عرض إلى أكبر حجم عند أعرض عرض. وخارج هذين العرضين يبقى الحجم كما هو.
الميل = (أكبر حجم − أصغر حجم) ÷ (أكبر عرض − أصغر عرض)؛ نقطة التقاطع = أصغر حجم − الميل × أصغر عرض؛ القيمة المفضلة = نقطة التقاطع + الميل × 100vw
الميل ونقطة التقاطع وحد عرض الشاشة
الميل هو مقدار ما يكبر به الحجم مع كل بكسل من عرض الشاشة. ونقطة التقاطع هي مكان التقاء الخط نفسه بعرض شاشة صفر. ووحدة vw هي واحد في المئة من عرض الشاشة، فإذا ضُرب الميل في 100 أعطى الحد الذي يتبع النافذة.
تُحسب عروض الشاشة والأحجام كلها بالبكسلات قبل إيجاد الميل. وتُضرب قيمة rem في حجم الخط الجذري، فيعطي التصميم نفسه النتيجة نفسها بوحدة rem أو بوحدة px حين يكون الجذر 16 px.
- اجعل أكبر حجم أكبر من أصغر حجم أو مساوياً له. ترفض الأداة حجماً أكبر أصغر، لأن مثل هذا الخط يتقلص كلما كبرت الشاشة.
- لا يتبع حدّ vw إعداد حجم النص عند الزائر، أما نقطة التقاطع بوحدة rem فتتبعه. اختبر الصفحة عند تكبير 200٪، واجعل نقطة التقاطع بوحدة rem حيثما أمكن.
مثال محلول: خط من 16 px إلى 24 px
بين شاشة عرضها 320 px وشاشة عرضها 1200 px يكبر الخط من 16 px إلى 24 px. الميل هو (24 − 16) ÷ (1200 − 320) = 8 ÷ 880، أي 0.0091 بأربع منازل عشرية. ونقطة التقاطع هي 16 − 0.0091 × 320 = 13.0909 px، وحد عرض الشاشة هو 0.9091 vw.
القيمة هي clamp(16px, 13.0909px + 0.9091vw, 24px)، فتعريف CSS هو font-size: clamp(16px, 13.0909px + 0.9091vw, 24px);. وبوحدات rem، ينتقل الخط من 1rem إلى 1.5rem بين 20rem و75rem، وجذره 16 px، فتكون القيمة clamp(1rem, 0.8182rem + 0.9091vw, 1.5rem).
الأسئلة الشائعة
ماذا يحدث للحجم حين تكون الشاشة أضيق من أصغر عرض؟
يبقى الحجم عند أصغر حجم. فصيغة clamp() لا تدع القيمة تنزل عن حدها الأدنى، فيحتفظ النص بالحجم الذي حددته لأضيق عرض.
لماذا يُكتب جزء عرض الشاشة بوحدة vw؟
وحدة vw هي واحد في المئة من عرض الشاشة، فتتغير مع تغيّر حجم نافذة المتصفح. أما قيمة البكسل أو rem فلا تتغير مع النافذة، ولن يستطيع الحجم أن يتبعها.
لماذا يضع الكود أحياناً جزء vw أولاً؟
حين تكون نقطة التقاطع سالبة، يكتب الكود جزء vw أولاً ويطرح نقطة التقاطع، فتبدو الصيغة أوضح. والصيغتان تعطيان القيمة نفسها.
هل أستطيع استعمال القيمة للحشو أو الهامش أو الفجوة؟
نعم. اختر الحشو أو الهامش أو الفجوة تحت الخاصية. ويعمل الخط نفسه مع أي طول، فتكبر المسافة مع الشاشة بالطريقة نفسها التي يكبر بها حجم الخط.
أي المتصفحات تدعم clamp()؟
تدعمها كل المتصفحات الكبرى الحديثة. فإذا كان زوارك يستعملون إصدارات قديمة، فاختبر الصفحة فيها قبل الاعتماد على الحجم المرن.
هل يُحفظ ما أدخله أو يُرسل إلى خادم؟
لا. تُحسب القيمة داخل متصفحك، ولا يُخزَّن ما تكتبه ولا يُرسل إلى خادمنا. انسخ التعريف قبل أن تغادر الصفحة.
المصادر
- W3C: CSS Values and Units Level 4، clamp() (باللغة الإنجليزية)
- W3C: CSS Values and Units Level 4، الوحدات المرتبطة بعرض الشاشة (باللغة الإنجليزية)
- MDN: clamp() (باللغة الإنجليزية)
آخر مراجعة للأرقام والنص: الثلاثاء، 30 جمادى الأولى 1448 بعد الهجرة.