محاذاة النص عمودياً في React Native قد تكون صعبة، حيث لا يوجد ما يعادل مباشرةً خاصية `vertical-align` في الويب. ومع ذلك، فإن الاستفادة من Flexbox يوفر حلولاً أنيقة. تتناول هذه المقالة طريقتين فعالتين: استخدام justifyContent
و alignItems
لمركز النص داخل حاوية.
محتويات الجدول
مركز النص باستخدام justifyContent
و alignItems
هذه الطريقة مثالية للسيناريوهات البسيطة حيث تريد مركز النص مباشرةً داخل حاويتها الأصلية. وهي تعتمد على قوة Flexbox للتعامل مع المحاذاة الرأسية والأفقية في وقت واحد.
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
const CenteredText = () => {
return (
<View style={styles.container}>
<Text style={styles.text}>هذا النص مُركز عمودياً وأفقياً!</Text>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
height: 200,
backgroundColor: 'lightblue',
},
text: {
fontSize: 20,
},
});
export default CenteredText;
شرح:
flex: 1
: يسمح لـView
بالتوسع لملء المساحة المتاحة للعنصر الأصل.justifyContent: 'center'
: يركز المحتوى عمودياً داخلView
.alignItems: 'center'
: يركز المحتوى أفقياً. هذا يضمن بقاء النص مُركزاً حتى لو تغير عرضه.height: 200
: تحديد ارتفاع ثابت أمر بالغ الأهمية. بدون ذلك، لن يكون لـjustifyContent
تأثير، حيث سيتخذ النص الوضع الافتراضي في الأعلى.
مركز متقدم: التعامل مع المكونات المتداخلة
للتخطيطات الأكثر تعقيداً مع المكونات المتداخلة، هناك حاجة إلى نهج مختلف قليلاً. تستخدم هذه الطريقة مزيجاً من flexDirection
و alignItems
و flex
لتحقيق محاذاة رأسية دقيقة.
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
const CenteredTextNested = () => {
return (
<View style={styles.container}>
<View style={styles.innerContainer}>
<Text style={styles.text}>هذا النص مُركز عمودياً وأفقياً أيضاً!</Text>
</View>
</View>
);
};
const styles = StyleSheet.create({
container: {
height: 200,
backgroundColor: 'lightcoral',
},
innerContainer: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
text: {
fontSize: 20,
},
});
export default CenteredTextNested;
شرح:
- الـ
View
الخارجي (container
) لا يحتاج إلىflexDirection: 'row'
. الـView
الداخلي يتعامل مع المحاذاة. flex: 1
علىView
الداخلي (innerContainer
) يسمح له بالتوسع لملء ارتفاع العنصر الأصل.justifyContent: 'center'
وalignItems: 'center'
علىinnerContainer
يركز النص عمودياً وأفقياً داخل تلك الحاوية.
تذكر ضبط الارتفاعات وألوان الخلفية حسب الحاجة للتصحيح البصري. اختر الطريقة التي تناسب بنية مكونك بشكل أفضل للحصول على رمز نظيف وسهل الصيانة.