Animaciones y transiciones

Transitions

Pulser 1

	
<div class="pulser1"></div>
<style>
.pulser1 {
width: 30px;
height: 30px;
background-color: #09f;
border-radius: 50%;
position: relative;
}
.pulser1:hover {
scale: 2;
background: purple;
box-shadow: 0 0 10px purple;
}
</style>
Copy

Pulser 2

	
<div class="pulser2"></div>
<style>
.pulser2 {
width: 30px;
height: 30px;
background-color: #09f;
border-radius: 50%;
position: relative;
transition: 1s;
}
.pulser2:hover {
scale: 2;
background: purple;
box-shadow: 0 0 10px purple;
}
</style>
Copy

Pulser 3

	
<div class="pulser3"></div>
<style>
.pulser3 {
width: 30px;
height: 30px;
background-color: #09f;
border-radius: 50%;
position: relative;
}
.pulser3:hover {
scale: 2;
background: purple;
box-shadow: 0 0 10px purple;
}
.pulser3 {
transition: 1s;
}
.pulser3 {
transition-property: background-color, scale;
}
</style>
Copy

Animaciones

Small Solar system

	
<svg width="220" height="220" viewBox="0 0 220 220">
<title xml:lang="en">Planets loader</title>
<circle id="orbit1" cx="50%" cy="50%" r="55px" fill="none" stroke="#f8f3dc" />
<circle id="orbit2" cx="50%" cy="50%" r="75px" fill="none" stroke="#f8f3dc" />
<circle id="orbit3" cx="50%" cy="50%" r="95px" fill="none" stroke="#f8f3dc" />
<circle id="sun" cx="50%" cy="50%" r="28px" fill="#fecb2f" />
<circle id="mars" cx="50%" cy="50%" r="8px" fill="#69b3b2" />
<circle id="mercury" cx="50%" cy="50%" r="8px" fill="#fa3757" />
<circle id="saturn" cx="50%" cy="50%" r="8px" fill="#ffa4a4" />
</svg>
<style>
@keyframes rotation {
from {
transform: rotate(0deg)
translate(var(--translate))
rotate(0deg);
}
to {
transform: rotate(360deg)
translate(var(--translate))
rotate(-360deg);
}
}
#mercury {
--translate: -55px;
animation: rotation 4s linear infinite;
}
#mars {
--translate: -75px;
animation: rotation 5s -1s linear infinite;
}
#saturn {
--translate: -95px;
animation: rotation 8s -3s linear infinite;
}
</style>
Copy
Planets loader

Target range inside

	
<section class="porto">
<div class="content-container flex-wrapper">
<div class="vertical-scroll-container">
<img onerror="this.parentNode.removeChild(this)" src="https://marianabeldi.github.io/scroll-driven-sardinas/img/porto1.svg" alt="sardinas bajo en sodio">
<img onerror="this.parentNode.removeChild(this)" src="https://marianabeldi.github.io/scroll-driven-sardinas/img/porto2.svg" alt="sardinas sin piel">
<img onerror="this.parentNode.removeChild(this)" src="https://marianabeldi.github.io/scroll-driven-sardinas/img/porto3.svg" alt="sardinas en agua">
<img onerror="this.parentNode.removeChild(this)" src="https://marianabeldi.github.io/scroll-driven-sardinas/img/porto4.svg" alt="sardinas al limon">
</div>
</div>
</section>
<style>
.porto {
color: #f5dbc8;
padding: 32px;
text-align: center;
}
.porto p {
font-size: 1.1rem;
font-weight: 500;
letter-spacing: 0.03em;
max-width: 40ch;
}
.flex-wrapper {
align-items: center;
display: flex;
justify-content: center;
gap: 2rem;
}
.content-container {
margin-inline: auto;
width: 90vw;
}
.vertical-scroll-container {
align-items: center;
display: flex;
flex-direction: column;
/* flex: 1 1 50%; */
gap: 6rem 0;
min-width: 400px;
overflow-y: scroll;
scrollbar-color: #3848a0 #1b2767;
scroll-snap-type: y mandatory;
padding: 200px 20px;
height: 100px;
}
.vertical-scroll-container img {
scroll-snap-align: center;
width: 400px;
animation: slideInOut;
animation-timeline: view();
}
@keyframes slideInOut {
from {
transform: scale(.8) translateY(100px);
opacity: 0;
}
to {
transform: scale(1) translateY(0);
opacity: 1;
}
0% {
transform: scale(1) translateY(0);
opacity: 1;
}
100% {
transform: scale(.8) translateY(-100px);
opacity: 0
}
}
@media screen and (max-width: 40em) {
.vertical-scroll-container img {
padding: 0;
width: 300px;
}
}
</style>
Copy
sardinas bajo en sodio sardinas sin piel sardinas en agua sardinas al limon

Typewriter CSS

	
<div class="animation-contanier">
<div class="wrapper">
<div class="static-text">for your</div>
<ul class="dynamic-text">
<li><span>Slack Channels</span></li>
<li><span>GitHub Repositories</span></li>
<li><span>Jira Boards</span></li>
<li><span>Trello Boards</span></li>
<li><span>GitLab Repositories</span></li>
<li><span>Google Drives</span></li>
<li><span>One Drives</span></li>
<li><span>Slack Groups </span></li>
<li><span>Google Events</span></li>
<li><span>Microsoft Events</span></li>
<li><span>Keeper Folder</span></li>
</ul>
</div>
</div>
<style>
.wrapper {
display: inline-flex
}
.wrapper .static-text {
font-size: 2.7rem;
color: #fff;
font-weight: 400;
}
.wrapper .dynamic-text{
top: -4px;
margin-left: 15px;
height: 85px;
line-height: 1.5;
position: relative;
overflow: hidden;
}
.dynamic-text li{
color: yellow;
background-color: #1e263f;
list-style: none;
font-size: 2.7rem;
font-size: 60px;
position: relative;
animation: slide 22s steps(11) infinite;
top: 0;
}
@keyframes slide {
100% {
top: -990px;
}
}
.dynamic-text li span{
position: relative;
}
.dynamic-text li span::after{
content: "";
position: absolute;
height: 100%;
width: 100%;
border-left: 2px solid #fff;
background-color: #1e263f;
padding: 5px;
left: 0;
animation: typing 2s steps(17) infinite;
}
@keyframes typing {
60%, 100% {
left: 100%;
margin: 0 -40px 0 40px;
}
}
</style>
Copy
for your
  • Slack Channels
  • GitHub Repositories
  • Jira Boards
  • Trello Boards
  • GitLab Repositories
  • Google Drives
  • One Drives
  • Slack Groups
  • Google Events
  • Microsoft Events
  • Keeper Folder

Rotate Down Right

	
<div class="animated rotateInDownRight">Example</div>
<style>
@keyframes rotateInDownRight {
from {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
-webkit-transform: rotate3d(0, 0, 1, 45deg);
transform: rotate3d(0, 0, 1, 45deg);
opacity: 0;
}
to {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1;
}
}
.animated {
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
animation: rotateInDownRight 1s linear infinite;
}
</style>
Copy
Example

Seguir leyendo

MCP Durability: Servidor y Cliente con Persistencia para Tareas de Larga Duración

MCP Durability: Servidor y Cliente con Persistencia para Tareas de Larga Duración

Aprende a crear un servidor y cliente MCP con durabilidad para tareas de larga duración. Tutorial completo sobre Model Context Protocol con persistencia de datos usando SQLite, gestión de tareas en background y monitoreo en tiempo real. Implementa migración de datos, procesamiento por lotes y entrenamiento de modelos ML que sobreviven a reinicios del servidor. Código Python con FastMCP, recursos, herramientas y patrones de durabilidad para aplicaciones enterprise.

Stream información en MCP: Guía Completa para Actualizaciones de Progreso en Tiempo Real con FastMCP

Stream información en MCP: Guía Completa para Actualizaciones de Progreso en Tiempo Real con FastMCP

Aprende cómo implementar streaming en tiempo real en aplicaciones MCP (Model Context Protocol) usando FastMCP. Esta guía completa te muestra cómo crear servidores y clientes MCP que soportan actualizaciones de progreso e información streaming para tareas de larga duración. Construirás herramientas habilitadas para streaming que proporcionan retroalimentación en tiempo real durante el procesamiento de datos, subida de archivos, tareas de monitoreo y otras operaciones que requieren mucho tiempo. Descubre cómo usar StreamableHttpTransport, implementar manejadores de progreso con Context y crear barras de progreso visuales que mejoran la experiencia del usuario al trabajar con aplicaciones MCP que requieren retroalimentación continua.

Últimos posts -->

¿Has visto estos proyectos?

Horeca chatbot

Horeca chatbot Horeca chatbot
Python
LangChain
PostgreSQL
PGVector
React
Kubernetes
Docker
GitHub Actions

Chatbot conversacional para cocineros de hoteles y restaurantes. Un cocinero, jefe de cocina o camaeror de un hotel o restaurante puede hablar con el chatbot para obtener información de recetas y menús. Pero además implementa agentes, con los cuales puede editar o crear nuevas recetas o menús

Naviground

Naviground Naviground

Subtify

Subtify Subtify
Python
Whisper
Spaces

Generador de subtítulos para videos en el idioma que desees. Además a cada persona le pone su subtítulo de un color

Ver todos los proyectos -->

¿Quieres aplicar la IA en tu proyecto? Contactame!

¿Quieres mejorar con estos tips?

Últimos tips -->

Usa esto en local

Los espacios de Hugging Face nos permite ejecutar modelos con demos muy sencillas, pero ¿qué pasa si la demo se rompe? O si el usuario la elimina? Por ello he creado contenedores docker con algunos espacios interesantes, para poder usarlos de manera local, pase lo que pase. De hecho, es posible que si pinchas en alún botón de ver proyecto te lleve a un espacio que no funciona.

Flow edit

Flow edit Flow edit

Edita imágenes con este modelo de Flow. Basándose en SD3 o FLUX puedes editar cualquier imagen y generar nuevas

FLUX.1-RealismLora

FLUX.1-RealismLora FLUX.1-RealismLora
Ver todos los contenedores -->

¿Quieres aplicar la IA en tu proyecto? Contactame!

¿Quieres entrenar tu modelo con estos datasets?

short-jokes-dataset

Dataset de chistes en inglés

opus100

Dataset con traducciones de inglés a español

netflix_titles

Dataset con películas y series de Netflix

Ver más datasets -->