jonmircha /
youtube-html-css
En este repositorio encontrarás los recursos para seguir los Curso de HTML & CSS de @jonmircha
Loading repository data…
sergiecode / repository
En este repositorio colocaré novedades de CSS Avanzado con algunas explicaciones y ejemplos
El selector :has() es una pseudo-clase que permite seleccionar elementos basándose en sus elementos hijos o descendientes. Es conocido como el "selector padre" porque finalmente nos permite seleccionar elementos padres basándonos en sus hijos.
/* Selecciona párrafos que contienen imágenes */
p:has(img) {
display: flex;
align-items: center;
}
/* Estiliza el contenedor cuando tiene elementos específicos */
.container:has(.elemento-especial) {
background-color: #f0f0f0;
padding: 20px;
}
/* Modifica el diseño cuando hay múltiples elementos */
.galeria:has(> img:nth-child(3)) {
grid-template-columns: repeat(3, 1fr);
}
Estos selectores son pseudo-clases que permiten simplificar y optimizar la escritura de selectores complejos en CSS:
:is(): Agrupa selectores y mantiene la especificidad del selector más específico:where(): Similar a :is() pero con especificidad cero:not(): Selecciona elementos que no coinciden con el selector dado/* Usando :is() para simplificar selectores */
:is(header, main, footer) p {
margin-bottom: 1rem;
}
/* Usando :where() para estilos de baja especificidad */
:where(article, section) > h2 {
color: #333;
}
/* Combinando :not() con otros selectores */
.menu-item:not(.active) {
opacity: 0.7;
}
Esta pseudo-clase permite seleccionar elementos específicos de un tipo particular dentro de un conjunto de hermanos, utilizando una expresión numérica.
/* Selecciona el segundo párrafo entre elementos p */
:nth-child(2 of p) {
font-weight: bold;
}
/* Estiliza cada tercer elemento de tipo .card */
:nth-child(3n of .card) {
margin-right: 0;
}
/* Aplica estilos al primer elemento de tipo .imagen */
:nth-child(1 of .imagen) {
border: 2px solid #blue;
}
Mientras que los Media Queries se basan en las dimensiones de la ventana del navegador, los Container Queries permiten aplicar estilos basados en el tamaño del contenedor padre más cercano.
/* Definiendo un contenedor */
.card-container {
container-type: inline-size;
container-name: card;
}
/* Aplicando estilos basados en el tamaño del contenedor */
@container card (min-width: 400px) {
.card {
display: grid;
grid-template-columns: 200px 1fr;
}
}
Los Container Queries requieren la definición explícita de contenedores de consulta mediante la propiedad container-type, permitiendo que los elementos hijos respondan al tamaño de su contenedor.
/* Configuración básica de un contenedor */
.sidebar {
container-type: inline-size;
}
/* Adaptando componentes según el contenedor */
@container (min-width: 300px) {
.widget {
grid-template-columns: repeat(2, 1fr);
gap: 1rem;
}
}
Un componente adaptable es aquel que modifica su diseño y comportamiento basándose en el espacio disponible en su contenedor, independientemente del viewport.
/* Configuración del contenedor principal */
.product-card {
container-type: inline-size;
container-name: product;
}
/* Estilos base */
.product-content {
display: flex;
flex-direction: column;
}
/* Adaptaciones según el tamaño del contenedor */
@container product (min-width: 500px) {
.product-content {
flex-direction: row;
align-items: center;
}
.product-image {
width: 40%;
}
.product-info {
width: 60%;
padding-left: 2rem;
}
}
Estas funciones son herramientas fundamentales para realizar cálculos y manipular valores en CSS de manera dinámica y flexible:
var(): Permite usar variables CSS personalizadascalc(): Realiza operaciones matemáticasclamp(): Define un valor entre un mínimo y máximomin() y max(): Seleccionan el valor menor o mayor entre varios:root {
--spacing-base: 1rem;
--font-size-base: 16px;
}
.contenedor {
/* Usando calc() con variables */
padding: calc(var(--spacing-base) * 2);
/* Usando clamp() para tamaños responsivos */
width: clamp(300px, 80%, 1200px);
/* Combinando min() y max() */
font-size: max(var(--font-size-base), min(2vw, 24px));
}
La API @property permite definir propiedades personalizadas con tipos de datos específicos, valores iniciales y comportamientos de animación.
/* Definiendo una propiedad numérica animable */
@property --rotacion {
syntax: '<angle>';
initial-value: 0deg;
inherits: false;
}
/* Definiendo una propiedad de color */
@property --color-principal {
syntax: '<color>';
initial-value: #007bff;
inherits: true;
}
Un tema dinámico utiliza variables CSS para modificar la apariencia de una interfaz de manera consistente y mantenible.
/* Definición de variables para el tema */
:root {
--color-fondo: #ffffff;
--color-texto: #333333;
--color-primario: #0066cc;
--espaciado: 1rem;
}
/* Tema oscuro */
[data-theme="dark"] {
--color-fondo: #1a1a1a;
--color-texto: #ffffff;
--color-primario: #66b3ff;
}
/* Aplicación de variables */
.componente {
background-color: var(--color-fondo);
color: var(--color-texto);
padding: var(--espaciado);
border: 1px solid var(--color-primario);
}
La función color-mix() permite mezclar dos colores directamente en CSS, especificando el espacio de color y el porcentaje de mezcla deseado.
.elemento {
/* Mezcla básica de colores */
background-color: color-mix(in srgb, #ff0000 50%, #0000ff);
/* Creando un color semi-transparente */
border-color: color-mix(in srgb, var(--color-primario) 75%, transparent);
/* Mezclando en espacio de color LCH */
color: color-mix(in lch, #3f0f9c 60%, #d9376e);
}
La función color-contrast() selecciona automáticamente el color con mejor contraste de una lista de opciones, garantizando la legibilidad.
.texto {
/* Selección automática del mejor contraste */
color: color-contrast(var(--color-fondo) vs
black, white, #767676);
}
.boton {
background: var(--color-primario);
/* Asegurando texto legible */
color: color-contrast(var(--color-primario) vs
white, black);
}
Estos son nuevos espacios de color que proporcionan una representación más precisa y perceptualmente uniforme de los colores.
.elemento {
/* Usando OKLCH para colores vibrantes */
background-color: oklch(70% 0.15 340);
/* Transiciones suaves con OKLAB */
color: oklab(80% -0.02 0.13);
/* Usando HWB para colores intuitivos */
border-color: hwb(280 10% 20%);
}
/* Gradiente usando OKLCH */
.gradiente {
background: linear-gradient(
to right,
oklch(80% 0.12 30),
oklch(65% 0.15 180)
);
}
Estas propiedades permiten crear animaciones que se ejecutan en función de la posición del scroll, sin necesidad de JavaScript, utilizando el timeline de vista como controlador.
.elemento {
animation: aparecer linear;
animation-timeline: view();
animation-range: entry 20% cover 50%;
}
@keyframes aparecer {
from {
opacity: 0;
transform: translateY(50px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
Estas propiedades permiten aplicar efectos visuales avanzados a elementos y sus fondos, creando efectos de superposición y mezcla.
.modal {
backdrop-filter: blur(10px) brightness(90%);
background: rgba(255, 255, 255, 0.1);
}
.imagen-overlay {
mix-blend-mode: overlay;
background: linear-gradient(45deg, #ff6b6b, #4ecdc4);
}
Un efecto de animación en scroll combina diferentes propiedades para crear una experiencia visual interactiva mientras el usuario desplaza la página.
Selected from shared topics, language and repository description—not editorial ratings.
jonmircha /
En este repositorio encontrarás los recursos para seguir los Curso de HTML & CSS de @jonmircha
eduardofierropro /
En este repositorio veremos como centrar etiquetas en HTML según su position.
DevelopeandoHub /
En este repositorio encontrarás una licuadora modelada utilizando HTML y CSS y controlada por un script en JS.
elliotgaramendi /
En este repositorio 📂 muestro cómo voy aprendiendo 🧑💻 desde cero ⚛️ y poco a poco de Idat 🧠 y <>Elliot Leo Garamendi Sarmiento</>, las tecnologías de mi interés 🚀 y todo lo relacionado al Frontend 🌌.
Antonio-Richaud /
Este repositorio publico lo ocupare para ir subiendo poco a poco ideas cool en CSS 🎨
arceprogramando /
Este repositorio contiene un proyecto para la tecnicatura universitaria en programación hecho para practicar con Astro