Modelo de Caja en React Native: Margen, Relleno y Bordes
En este artículo exploraremos cómo funcionan las propiedades relacionadas con el modelo de caja (Box Object Model) en React Native. Además, crearemos un ejemplo práctico para ilustrar su uso.
Propiedades del Modelo de Caja
El modelo de caja define cómo los elementos se distribuyen y se relacionan entre sí. En React Native, esto incluye propiedades como margen (margin
), relleno (padding
) y bordes (border
).
Margen (margin
)
El margen es el espacio externo que separa un elemento de los demás. React Native ofrece las siguientes propiedades:
margin
: Aplica margen uniforme a todos los lados.marginTop
: Aplica margen en la parte superior.marginBottom
: Aplica margen en la parte inferior.marginLeft
: Aplica margen a la izquierda.marginRight
: Aplica margen a la derecha.marginVertical
: Aplica margen tanto en la parte superior como en la inferior.marginHorizontal
: Aplica margen a ambos lados (izquierda y derecha).
Ejemplo:
style={{
margin: 10, // Margen uniforme
marginHorizontal: 5, // Margen a los lados
marginVertical: 15, // Margen arriba y abajo
}}
Relleno (padding
)
El relleno es el espacio interno entre el contenido de un elemento y su borde. Sus propiedades son similares a las de margin
:
padding
: Aplica relleno uniforme.paddingTop
: Relleno superior.paddingBottom
: Relleno inferior.paddingLeft
: Relleno a la izquierda.paddingRight
: Relleno a la derecha.paddingVertical
: Relleno superior e inferior.paddingHorizontal
: Relleno a los lados.
Ejemplo:
style={{
padding: 10, // Relleno uniforme
paddingVertical: 20, // Relleno arriba y abajo
paddingHorizontal: 15, // Relleno a los lados
}}
Bordes (border
)
Las propiedades relacionadas con bordes permiten definir el grosor, color y estilo de los bordes.
borderWidth
: Grosor uniforme de los bordes.borderTopWidth
: Grosor del borde superior.borderBottomWidth
: Grosor del borde inferior.borderLeftWidth
: Grosor del borde izquierdo.borderRightWidth
: Grosor del borde derecho.borderColor
: Color del borde.borderRadius
: Esquinas redondeadas.
Ejemplo:
style={{
borderWidth: 2, // Grosor uniforme
borderColor: 'blue', // Color del borde
borderTopWidth: 4, // Grosor del borde superior
borderRadius: 10, // Esquinas redondeadas
}}
Importante: El Padre Define el Tamaño del Hijo
En React Native, el tamaño de un componente hijo está influenciado por las restricciones definidas en el componente padre. Si el padre establece límites como flex
o tamaños específicos, el hijo debe ajustarse dentro de ellos.
Ejemplo:
<View style={{ flex: 1 }}>
<View style={{ height: 50, backgroundColor: 'red' }} />
</View>
En este caso, el elemento rojo tiene una altura fija de 50 dentro del contenedor padre.
Ejemplo Completo: BoxObjectModelScreen
A continuación, implementamos un componente que demuestra el uso de margen, relleno y bordes:
import React from 'react';
import { StyleSheet, View } from 'react-native';
import { Text } from 'react-native-paper';
export const BoxObjectModel = () => {
return (
<View style={styles.container}>
<View style={styles.purpleBox}>
<Text style={{ color: 'white' }}>Hola</Text>
</View>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#e8e8e8',
},
purpleBox: {
backgroundColor: 'purple',
height: 30,
marginVertical: 50, // Margen superior e inferior
marginHorizontal: 10, // Margen izquierdo y derecho
padding: 5, // Relleno interno
},
});
Explicación del Código
- Contenedor (
container
): Es el padre conflex: 1
para ocupar toda la pantalla. - Caja Morada (
purpleBox
): Demuestra el uso de márgenes y relleno.marginVertical
ymarginHorizontal
definen los márgenes.padding
ajusta el espacio interno.- La propiedad
height
fija la altura.