Holaa, wow dos entradas en una misma semana esto es un milagro, aquí les va la continuación del tutorial para decorar tu blog, más específicamente los códigos para los gadgets. Espero que les sirva de ayuda

Tal vez como yo, tú sabes programar en otros lenguajes o entiendes la lógica, pero cuando se trata de meter código en Blogger te pierdes. No sabes dónde ponerlo, cómo adaptarlo, o por qué a veces funciona y a veces no. Ahí es donde la IA me salva.
MINI PAINT
<link href="https://fonts.googleapis.com/css2?family=Fredoka+One&family=VT323&display=swap" rel="stylesheet" />
<style>
/* Mini paint*/
.paint-classic {
font-family: 'Courier New', monospace;
background: #FFE4F2;
border: 1.5px solid #FF69B4;
width: 220px;
margin: 0 auto;
box-sizing: border-box;
box-shadow: 2px 2px 0px #FFB6C1;
border-radius: 8px;
overflow: hidden;
}
/* BARRA DE TITULO */
.paint-titlebar {
background: linear-gradient(90deg, #FF69B4, #FFB6C1);
padding: 4px 8px;
display: flex;
justify-content: space-between;
align-items: center;
cursor: move;
}
.paint-title {
font-family: 'Courier New', monospace;
font-size: 8px;
font-weight: normal;
color: #FFFFFF;
text-shadow: 0.5px 0.5px 0px #FF1493;
}
.paint-close-btn {
width: 16px;
height: 14px;
background: #FF69B4;
border: 1px solid #FFFFFF;
border-radius: 3px;
font-size: 7px;
text-align: center;
line-height: 12px;
cursor: pointer;
color: #FFFFFF;
}
/* BARRA DE HERRAMIENTAS */
.paint-toolbar {
background: #FFF0F5;
padding: 5px;
display: flex;
gap: 6px;
justify-content: center;
border-bottom: 1px solid #FFB6C1;
}
.paint-tool {
width: 26px;
height: 26px;
background: #FFFFFF;
border: 1.5px solid #FFB6C1;
border-radius: 6px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
}
.paint-tool.active {
border: 1.5px solid #FF1493;
background: #FFE4F2;
}
/* AREA DEL CANVAS */
.paint-canvas-area {
background: #D0D0D0;
padding: 6px;
display: flex;
justify-content: center;
border-bottom: 1px solid #FFB6C1;
}
.paint-canvas {
display: block;
background: #FFFFFF;
border: 1.5px solid #FFB6C1;
border-radius: 4px;
cursor: crosshair;
width: 100%;
max-width: 196px;
height: auto;
touch-action: none;
}
/* CONTROLES - COMPACTOS Y ORDENADOS */
.paint-controls {
background: #FFF0F5;
padding: 5px 8px;
display: flex;
justify-content: space-between;
align-items: center;
gap: 6px;
border-bottom: 1px solid #FFB6C1;
}
.paint-size-control {
display: flex;
align-items: center;
gap: 5px;
background: #FFFFFF;
padding: 2px 6px;
border-radius: 12px;
border: 1px solid #FFB6C1;
}
.paint-size-label {
font-family: 'Courier New', monospace;
font-size: 7px;
color: #FF69B4;
}
.paint-size {
-webkit-appearance: none;
width: 55px;
height: 3px;
background: #FFB6C1;
border-radius: 3px;
}
.paint-size::-webkit-slider-thumb {
-webkit-appearance: none;
width: 8px;
height: 8px;
background: #FF69B4;
border: 1px solid #FF1493;
border-radius: 50%;
cursor: pointer;
}
.paint-size-value {
font-family: 'Courier New', monospace;
font-size: 7px;
color: #C71585;
background: #FFE4F2;
padding: 1px 4px;
border-radius: 8px;
min-width: 22px;
text-align: center;
}
/* BOTON LIMPIAR */
.paint-clear-btn {
font-family: 'Courier New', monospace;
background: #FFFFFF;
border: 1px solid #FFB6C1;
border-radius: 12px;
padding: 2px 8px;
font-size: 7px;
cursor: pointer;
color: #FF69B4;
}
.paint-clear-btn:hover {
background: #FF69B4;
color: #FFFFFF;
}
/* PALETA DE COLORES */
.paint-palette-area {
background: #FFF0F5;
padding: 5px;
display: flex;
justify-content: space-between;
align-items: center;
gap: 5px;
}
.paint-current-color {
width: 28px;
height: 28px;
border: 1.5px solid #FFB6C1;
border-radius: 6px;
background: #FF69B4;
cursor: pointer;
}
.paint-palette {
display: flex;
gap: 2px;
flex-wrap: wrap;
flex: 1;
background: #FFFFFF;
padding: 3px;
border-radius: 6px;
border: 1px solid #FFB6C1;
}
.paint-palette-color {
width: 14px;
height: 14px;
border: 1px solid #FFB6C1;
border-radius: 3px;
cursor: pointer;
}
.paint-palette-color:hover {
transform: scale(1.05);
border-color: #FF1493;
}
.paint-classic:hover {
transform: translateY(-1px);
box-shadow: 3px 3px 0px #FFB6C1;
}
</style>
<div class="paint-classic">
<div class="paint-titlebar">
<span class="paint-title">🎨 paint</span>
<div class="paint-close-btn">✕</div>
</div>
<div class="paint-toolbar">
<div class="paint-tool" id="toolPencil">✏️</div>
<div class="paint-tool" id="toolEraser">🧽</div>
<div class="paint-tool" id="toolFill">🪣</div>
</div>
<div class="paint-controls">
<div class="paint-size-control">
<span class="paint-size-label">size</span>
<input class="paint-size" type="range" min="2" max="15" value="5" id="sizeSlider" />
<span class="paint-size-value" id="sizeValue">5</span>
</div>
<button class="paint-clear-btn" id="clearBtn">clean</button>
</div>
<div class="paint-canvas-area">
<canvas class="paint-canvas" id="miniCanvas" width="196" height="130"></canvas>
</div>
<div class="paint-palette-area">
<div class="paint-current-color" id="currentColor" style="background:#FF69B4"></div>
<div class="paint-palette" id="colorPalette"></div>
</div>
</div>
<script>
(function() {
const canvas = document.getElementById('miniCanvas');
const ctx = canvas.getContext('2d');
let drawing = false;
let currentColor = '#FF69B4';
let currentTool = 'pencil';
let size = 5;
let lastX = 0, lastY = 0;
const paletteColors = [
'#000000', '#808080', '#800000', '#808000', '#008000', '#008080', '#000080', '#FF69B4',
'#FF1493', '#FFB6C1', '#C71585', '#FF8C00', '#FFD700', '#7FFF00', '#00BFFF', '#9370DB',
'#FFFFFF', '#FFE4F2'
];
const paletteDiv = document.getElementById('colorPalette');
paletteColors.forEach(color => {
const colorDiv = document.createElement('div');
colorDiv.className = 'paint-palette-color';
colorDiv.style.backgroundColor = color;
colorDiv.addEventListener('click', () => {
currentColor = color;
document.getElementById('currentColor').style.backgroundColor = color;
if (currentTool === 'eraser') {
currentTool = 'pencil';
document.getElementById('toolEraser').classList.remove('active');
document.getElementById('toolPencil').classList.add('active');
}
});
paletteDiv.appendChild(colorDiv);
});
const pencil = document.getElementById('toolPencil');
const eraser = document.getElementById('toolEraser');
const fill = document.getElementById('toolFill');
pencil.addEventListener('click', () => {
currentTool = 'pencil';
pencil.classList.add('active');
eraser.classList.remove('active');
fill.classList.remove('active');
});
eraser.addEventListener('click', () => {
currentTool = 'eraser';
eraser.classList.add('active');
pencil.classList.remove('active');
fill.classList.remove('active');
});
fill.addEventListener('click', () => {
currentTool = 'fill';
fill.classList.add('active');
pencil.classList.remove('active');
eraser.classList.remove('active');
});
pencil.classList.add('active');
const sizeSlider = document.getElementById('sizeSlider');
const sizeValue = document.getElementById('sizeValue');
sizeSlider.addEventListener('input', () => {
size = parseInt(sizeSlider.value);
sizeValue.textContent = size;
});
document.getElementById('clearBtn').addEventListener('click', () => {
ctx.fillStyle = '#FFFFFF';
ctx.fillRect(0, 0, canvas.width, canvas.height);
});
function getPos(e) {
const rect = canvas.getBoundingClientRect();
const scaleX = canvas.width / rect.width;
const scaleY = canvas.height / rect.height;
if (e.touches) {
return {
x: (e.touches[0].clientX - rect.left) * scaleX,
y: (e.touches[0].clientY - rect.top) * scaleY
};
}
return {
x: (e.clientX - rect.left) * scaleX,
y: (e.clientY - rect.top) * scaleY
};
}
function startDraw(e) {
e.preventDefault();
drawing = true;
const pos = getPos(e);
lastX = pos.x;
lastY = pos.y;
if (currentTool === 'fill') {
ctx.fillStyle = currentColor;
ctx.fillRect(0, 0, canvas.width, canvas.height);
drawing = false;
return;
}
ctx.beginPath();
ctx.arc(lastX, lastY, size / 2, 0, Math.PI * 2);
ctx.fillStyle = currentTool === 'eraser' ? '#FFFFFF' : currentColor;
ctx.fill();
}
function draw(e) {
e.preventDefault();
if (!drawing) return;
const pos = getPos(e);
ctx.beginPath();
ctx.moveTo(lastX, lastY);
ctx.lineTo(pos.x, pos.y);
ctx.strokeStyle = currentTool === 'eraser' ? '#FFFFFF' : currentColor;
ctx.lineWidth = size;
ctx.lineCap = 'round';
ctx.lineJoin = 'round';
ctx.stroke();
lastX = pos.x;
lastY = pos.y;
}
function stopDraw() { drawing = false; }
canvas.addEventListener('mousedown', startDraw);
canvas.addEventListener('mousemove', draw);
canvas.addEventListener('mouseup', stopDraw);
canvas.addEventListener('mouseleave', stopDraw);
canvas.addEventListener('touchstart', startDraw, { passive: false });
canvas.addEventListener('touchmove', draw, { passive: false });
canvas.addEventListener('touchend', stopDraw);
ctx.fillStyle = '#FFFFFF';
ctx.fillRect(0, 0, canvas.width, canvas.height);
let dragHeader = document.querySelector('.paint-titlebar');
let card = document.querySelector('.paint-classic');
let isDragging = false;
let dragOffsetX = 0, dragOffsetY = 0;
if (dragHeader) {
dragHeader.style.cursor = 'move';
dragHeader.addEventListener('mousedown', function(e) {
if (e.target === dragHeader || dragHeader.contains(e.target)) {
isDragging = true;
dragOffsetX = e.clientX - card.offsetLeft;
dragOffsetY = e.clientY - card.offsetTop;
card.style.position = 'relative';
card.style.left = card.offsetLeft + 'px';
card.style.top = card.offsetTop + 'px';
e.preventDefault();
}
});
document.addEventListener('mousemove', function(e) {
if (isDragging) {
card.style.left = (e.clientX - dragOffsetX) + 'px';
card.style.top = (e.clientY - dragOffsetY) + 'px';
}
});
document.addEventListener('mouseup', function() {
isDragging = false;
});
}
})();
</script>
Idea de nota con tu info para el perfil
<link href="https://fonts.googleapis.com/css2?family=Fredoka+One&family=VT323&display=swap" rel="stylesheet" />
<style>
/* NOTEPAD WINDOWS Lasito */
.lasito-notepad {
font-family: 'Courier New', 'Segoe UI', monospace;
background: #FFE4F2;
border: 2px solid #FF69B4;
width: 260px;
margin: 0 auto;
box-sizing: border-box;
box-shadow: 4px 4px 0px #FFB6C1;
}
/* BARRA DE TÍTULO */
.lasito-titlebar {
background: linear-gradient(90deg, #FF69B4, #FFB6C1);
padding: 6px 10px;
display: flex;
justify-content: space-between;
align-items: center;
cursor: move;
border-bottom: 1px solid #FF1493;
}
.lasito-title {
font-family: 'Segoe UI', 'Courier New', monospace;
font-size: 11px;
font-weight: normal;
color: #FFFFFF;
text-shadow: 1px 1px 0px #FF1493;
}
.lasito-titlebar-btns {
display: flex;
gap: 3px;
}
.lasito-close-btn {
width: 22px;
height: 18px;
background: #FF69B4;
border: 1px solid #FFFFFF;
font-size: 9px;
text-align: center;
line-height: 16px;
cursor: pointer;
color: #FFFFFF;
font-weight: normal;
}
/* ÁREA DE CONTENIDO */
.lasito-content {
background: #FFFFFF;
padding: 12px;
font-family: 'Courier New', monospace;
font-size: 10px;
color: #333333;
line-height: 1.6;
}
/* Avatar */
.lasito-avatar-wrap {
position: relative;
width: 70px;
height: 70px;
margin: 8px auto 12px;
background: #FFF0F5;
border: 2px solid #FF69B4;
border-radius: 50%;
padding: 3px;
}
.lasito-avatar-wrap img {
width: 100%;
height: 100%;
border-radius: 50%;
object-fit: cover;
display: block;
}
/* Corazón */
.lasito-heart {
position: absolute;
top: -12px;
right: -10px;
background: #FF69B4;
color: #FFFFFF;
width: 24px;
height: 24px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 13px;
border: 2px solid #FFE4F2;
box-shadow: 2px 2px 0px #FFB6C1;
animation: lsHeart 1.2s ease infinite;
}
@keyframes lsHeart {
0%,100% { transform: scale(1); }
25% { transform: scale(1.2); }
50% { transform: scale(1); }
}
/* Data box */
.lasito-data {
margin: 12px 0;
padding: 8px;
border: 1px solid #FFB6C1;
background: #FFF9F0;
border-radius: 8px;
}
.lasito-row {
display: flex;
justify-content: space-between;
margin-bottom: 5px;
font-size: 10px;
color: #C71585;
font-family: 'Courier New', monospace;
font-weight: normal;
}
.lasito-label {
opacity: 0.7;
color: #FF69B4;
}
.lasito-online {
animation: lsBlink 1s infinite;
color: #FF1493;
}
@keyframes lsBlink {
0%,49% { opacity: 1; }
50%,100% { opacity: 0.4; }
}
/* Tags */
.lasito-tags {
display: flex;
gap: 6px;
justify-content: center;
margin: 10px 0;
flex-wrap: wrap;
}
.lasito-tag {
font-family: 'Fredoka One', cursive;
color: #FF1493;
border: 1px solid #FF69B4;
background: #FFF0F5;
padding: 4px 10px;
border-radius: 20px;
font-size: 10px;
font-weight: normal;
cursor: pointer;
transition: all 0.2s;
}
.lasito-tag:hover {
background: #FF69B4;
color: #FFFFFF;
transform: scale(1.02);
}
/* Bio */
.lasito-bio {
margin: 10px 0;
padding: 8px;
background: #FFF9F0;
border-left: 3px solid #FF69B4;
border-radius: 5px;
font-size: 10px;
color: #C71585;
display: flex;
align-items: center;
flex-wrap: wrap;
font-family: 'Courier New', monospace;
}
.lasito-cursor {
animation: lsCursor 1s infinite;
margin-left: 3px;
font-weight: normal;
color: #FF1493;
}
@keyframes lsCursor {
0%,50% { opacity: 1; }
51%,100% { opacity: 0; }
}
/* Footer */
.lasito-footer {
display: flex;
justify-content: center;
margin-top: 10px;
padding: 6px;
background: #FFF0F5;
border-top: 1px solid #FFB6C1;
border-radius: 5px;
font-size: 8px;
color: #FF69B4;
font-family: 'Fredoka One', cursive;
font-weight: normal;
}
/* Efecto hover */
.lasito-notepad:hover {
transform: translateY(-2px);
box-shadow: 6px 6px 0px #FFB6C1;
transition: all 0.2s ease;
}
</style>
<div class="lasito-notepad">
<!-- Barra de título -->
<div class="lasito-titlebar">
<span class="lasito-title">📝 Lasito.Profile</span>
<div class="lasito-titlebar-btns">
<div class="lasito-close-btn">✕</div>
</div>
</div>
<!-- Área de contenido -->
<div class="lasito-content">
<div class="lasito-avatar-wrap">
<img src="https://i.ibb.co/2YCV6gyt/48050b0d7a158d474c0a966b48906109.jpg" alt="Lasito" />
<div class="lasito-heart">❤</div>
</div>
<div class="lasito-data">
<div class="lasito-row">
<span class="lasito-label">NOMBRE></span>
<span>LASITO</span>
</div>
<div class="lasito-row">
<span class="lasito-label">BIRTH></span>
<span>2007.LEO</span>
</div>
<div class="lasito-row">
<span class="lasito-label">STATUS></span>
<span class="lasito-online">ONLINE</span>
</div>
</div>
<div class="lasito-tags">
<span class="lasito-tag">[ARTISTA]</span>
<span class="lasito-tag">[PROGRAMADORA]</span>
</div>
<div class="lasito-bio">
<span>Me encantan los gatos y los perros ✨</span>
<span class="lasito-cursor">_</span>
</div>
<div class="lasito-footer">
<span>💕 LASITO.PROFILE 💕</span>
</div>
</div>
</div>
<script>
(function() {
// Efecto en los tags
var tags = document.querySelectorAll('.lasito-tag');
tags.forEach(function(tag) {
tag.addEventListener('click', function() {
this.style.transform = 'scale(0.95)';
var t = this;
setTimeout(function(){ t.style.transform = 'scale(1)'; }, 100);
});
});
// Efecto draggable (ventana movible)
var dragHeader = document.querySelector('.lasito-titlebar');
var card = document.querySelector('.lasito-notepad');
var isDragging = false;
var dragOffsetX = 0, dragOffsetY = 0;
if (dragHeader) {
dragHeader.style.cursor = 'move';
dragHeader.addEventListener('mousedown', function(e) {
if (e.target === dragHeader || dragHeader.contains(e.target)) {
isDragging = true;
dragOffsetX = e.clientX - card.offsetLeft;
dragOffsetY = e.clientY - card.offsetTop;
card.style.position = 'relative';
card.style.left = card.offsetLeft + 'px';
card.style.top = card.offsetTop + 'px';
e.preventDefault();
}
});
document.addEventListener('mousemove', function(e) {
if (isDragging) {
card.style.left = (e.clientX - dragOffsetX) + 'px';
card.style.top = (e.clientY - dragOffsetY) + 'px';
}
});
document.addEventListener('mouseup', function() {
isDragging = false;
});
}
})();
</script>
Como viste, no necesitas saber programar. Solo tienes que explicarle bien a la IA lo que quieres y ella hace el trabajo pesado por ti. Yo empecé así de simple y hoy mi blog está lleno de cositas que ni imaginaba, Byeee nos vemos en una próxima entrada
OMG AMO, AMO, AMO. Gracias por esto, de verdad me haces la vida mas fácil jsjsjsjsjs... Si puedes, amaría saber como pusiste el chat, desde hace rato me hace mucha ilusión poder poner uno <3
ResponderBorrarSiii claro, en el próximo tutorial explicaré como colocar el chat, me alegra que te haya gustado ( ╹▽╹ )
Borraromggg muchisimas gracias!!! 😭😭❤️❤️
ResponderBorrarDe nadaaa (≧▽≦)
Borrar