Ejemplos de Componentes con Styled Components en React
Styled Components es una biblioteca de JavaScript que permite definir estilos para los componentes de React utilizando JavaScript y CSS. Con Styled Components, los estilos se definen dentro de los componentes y se integran directamente en el código del componente, lo que permite un mayor control y mejora la cohesión entre el estilo y la funcionalidad del componente.
¿Por qué usar Styled Components?
Hay varias razones por las que los desarrolladores recurren a Styled Components en sus proyectos de React:
Permite un mayor control sobre los estilos y una mejor integración con el componente.
Facilita la resolución de conflictos de estilos y la eliminación de estilos no deseados.
Proporciona una forma fácil y eficiente de crear componentes personalizados.
Permite la reutilización de estilos y la creación de temas y estilos globales.
Creación de un Componente con Styled Components
A continuación, se presenta un ejemplo de código para crear un componente de botón con Styled Components:
import React from 'react';
import styled from 'styled-components';
const Button = styled.button`
background-color: palevioletred;
color: white;
padding: 10px 20px;
border-radius: 5px;
font-size: 16px;
`;
export default function App() {
return (
<Button>
Botón
</Button>
);
}
Ejemplos de Componentes con Styled Components
A continuación, se presentan varios ejemplos de componentes creados con Styled Components:
Botón con estilo personalizado
import React from 'react';
import styled from 'styled-components';
const CustomButton = styled.button`
background-color: palevioletred;
color: white;
padding: 10px 20px;
border-radius: 5px;
font-size: 16px;
`;
export default function CustomButtonExample() {
return (
<CustomButton>
Botón con estilo personalizado
</CustomButton>
);
}
2. Tarjetas personalizadas
Otro componente común que podemos crear con Styled Components son las tarjetas personalizadas. Por ejemplo, podemos crear una tarjeta con un fondo gris y un borde redondeado.
import React from "react";
import styled from "styled-components";
const CustomCard = styled.div`
background-color: lightgray;
border-radius: 10px;
padding: 20px;
`;
function App() {
return (
<div>
<CustomCard>
<h2>Título de la Tarjeta</h2>
<p>Contenido de la Tarjeta</p>
</CustomCard>
</div>
);
}
export default App;
3. Modales Personalizados con Styled Components
Los modales son una forma efectiva de proporcionar más información o una acción al usuario sin tener que redirigirlo a otra página o sección de la aplicación. Con Styled Components, podemos crear fácilmente modales personalizados para nuestra aplicación.
Para crear un modal personalizado, podemos usar el componente Modal
proporcionado por React y estilizarlo con Styled Components. A continuación, presentamos un ejemplo de código de un modal personalizado que incluye un título, un mensaje y dos botones:
import React from "react";
import styled from "styled-components";
const ModalOverlay = styled.div`
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
background-color: rgba(0, 0, 0, 0.7);
display: flex;
align-items: center;
justify-content: center;
`;
const ModalContainer = styled.div`
background-color: white;
border-radius: 5px;
padding: 20px;
max-width: 500px;
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
`;
const ModalTitle = styled.h2`
font-size: 24px;
margin-bottom: 20px;
`;
const ModalMessage = styled.p`
font-size: 16px;
margin-bottom: 20px;
`;
const ModalButtonContainer = styled.div`
display: flex;
justify-content: flex-end;
`;
const ModalButton = styled.button`
padding: 10px 20px;
font-size: 16px;
border-radius: 5px;
margin-left: 10px;
background-color: ${props => (props.cancel ? "#F44336" : "#4CAF50")};
color: white;
cursor: pointer;
`;
const Modal = ({ title, message, onClose, onConfirm }) => (
<ModalOverlay>
<ModalContainer>
<ModalTitle>{title}</ModalTitle>
<ModalMessage>{message}</ModalMessage>
<ModalButtonContainer>
<ModalButton cancel onClick={onClose}>
Cancelar
</ModalButton>
<ModalButton onClick={onConfirm}>Confirmar</ModalButton>
</ModalButtonContainer>
</ModalContainer>
</ModalOverlay>
);
export default Modal;