اذهب إلى المحتوى

السؤال

نشر (معدل)

السلام عليكم ورحمة الله وبركاته,

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

ولا أريد تصغير حجم الخط لأنني أرى بأن الحجم مناسب للكلمات القصيرة,

فهل يوجد حل لهذه المشكلة ؟

مع العلم أنني استخدم مكتبة Material UI مع React JS

Screenshot2023-11-26001508.thumb.png.c1a7ce71aefbc9f4911febd4bba321bf.png

Screenshot2023-11-26001353.thumb.png.fc1d69ff913d6ce1547d31d1c3bec4d7.png

وشكرًا لكم

تم التعديل في بواسطة Muhannad Bahurmoz

Recommended Posts

  • 0
نشر

حسب ما فهمت فإنه يمكنك تحقيق هذا السلوك بواسطة تكوين الخط بناءً على طول النص.

في React JS مع Material UI، يمكنك تحقيق ذلك باستخدام Typography . 

import React from 'react';
import Typography from '@material-ui/core/Typography';

const DynamicFontSizeText = ({ text }) => {
  // تحديد حجم الخط بناءً على طول النص
  const fontSize = text.length > 10 ? '16px' : '24px';

  return (
    <Typography variant="body1" style={{ fontSize }}>
      {text}
    </Typography>
  );
};

export default DynamicFontSizeText;

في هذا المثال، إذا كانت النصوص قصيرة (10 حروف أو أقل)، سيتم تعيين حجم الخط إلى 24px، وإلا سيتم تعيينه إلى 16px، يمكنك ضبط هذه القيم وفقًا لاحتياجات التصميم الخاصة بك.

يمكنك استخدام هذا المكون في مكان أي مكون Typography في تطبيقك وتمرير النص كخاصية text:

<DynamicFontSizeText text="هنا يكون النص" />
  • 0
نشر

عليك أستخدام خاصية  overflow-wrap مع بعض التنسيقات الأخرى لضمان عدم حدوث أية مشاكل، وإليك مثال:

HTML:

<div class="container">
    <p class="long-text">هذا هو نص طويل جدا يحتوي على الكثير من الكلمات والجمل. هذا هو نص طويل جدا يحتوي على الكثير من الكلمات والجمل.</p>
</div>

CSS:

.long-text {
  overflow-wrap: break-word; /* يُستخدم لتحديد تكسير الكلمات في حال تجاوزت الحاوية حدودها، للحفاظ على التنسيق. */
  hyphens: auto; /* تُستخدم لتحديد ما إذا كانت الهوامش (الواصلات) مسموح بها لتقسيم الكلمات عند التمدد على السطر. */
  white-space: normal; /* يُستخدم لتحديد كيفية التعامل مع المسافات البيضاء داخل العنصر . */
}

 

  • 0
نشر

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

export default function Text(){

  const mediaQuery = window.matchMedia('(max-width: 600px)');
  const text = "the main text you want to be small if long enough"
  function handleMediaChange(mediaQuery) {
    let fontSizeClass
    if (mediaQuery) {
		if (text.length > 15) { // you can change this threshold
        	fontSizeClass = "16px" // an example
        } else {
        	fontSizeClass = "26px" // an example
        }
    }
    return fontSizeClass
  }
  
  mediaQuery.addListener(handleMediaChange);
  const finalFontSizeClass = handleMediaChange(mediaQuery);

  return (
  	<div style={{fontSize: finalFontSizeClass}}>
  		{text}
    </div>
  )
  
}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...