<style>
#igariPaint{
width:100%;
max-width:200px;
margin:auto;
border:2px solid #444;
background:#d4d0c8;
font-family:Tahoma,Arial,sans-serif;
box-shadow:4px 4px 0 #777;
overflow:hidden;
}
/* HEADER */
#paintTitle{
background:#733861;
color:#fff;
padding:3px 6px;
display:flex;
justify-content:space-between;
font-size:12px;
font-weight:bold;
}
/* MENU */
#paintMenu{
background:#ece9d8;
padding:3px 6px;
font-size:11px;
border-bottom:2px solid #999;
display:flex;
justify-content:space-between;
}
/* CANVAS */
#canvasWrap{
width:100%;
position:relative;
padding-top:100%;
overflow:hidden;
}
#paintCanvas{
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
display:block;
background:#fff;
cursor:crosshair;
touch-action:none;
box-shadow: inset 0 0 0 1px #bbb;
}
/* TOOLBAR */
#toolbar{
background:#d8c2b8 !important;
padding:6px;
text-align:center;
}
/* PALETA */
#palette{
display:none;
text-align:center;
margin-bottom:6px;
}
.palette-row{
display:block;
margin:2px 0;
}
/* 🎨 COLORES REALMENTE MÁS GRANDES (VISIBLE EN BLOGGER) */
.color{
width:25px !important;
height:25px !important;
display:inline-block;
margin:1px;
border:1px solid #555;
box-shadow:
inset 1px 1px #fff,
inset -1px -1px #888;
cursor:pointer;
}
/* 🎚️ SLIDER REALMENTE VISIBLE */
#size{
width:120px;
display:block;
margin:6px auto;
accent-color:#8f1d1d;
background:#f2eee8 !important;
border:1px solid #b8b0a8;
border-radius:10px;
height:10px;
}
#togglePalette{
display:block;
margin:4px auto 0;
}
</style>
<div id="igariPaint">
<div id="paintTitle">
<div>🍋 Dibuja</div>
<div>▁ □ ✕</div>
</div>
<div id="paintMenu">
<button onclick="clearCanvas()">Clear</button>
<button onclick="saveCanvas()">Save</button>
</div>
<div id="canvasWrap">
<canvas id="paintCanvas"></canvas>
</div>
<div id="toolbar">
<div id="palette">
<div class="palette-row">
<div class="color" style="background:#000" onclick="setColor('#000')"></div>
<div class="color" style="background:#2b2b2b" onclick="setColor('#2b2b2b')"></div>
<div class="color" style="background:#fff" onclick="setColor('#fff')"></div>
<div class="color" style="background:#b42c2c" onclick="setColor('#b42c2c')"></div>
</div>
<div class="palette-row">
<div class="color" style="background:#d46a6a" onclick="setColor('#d46a6a')"></div>
<div class="color" style="background:#f2b6b6" onclick="setColor('#f2b6b6')"></div>
<div class="color" style="background:#6b8f6b" onclick="setColor('#6b8f6b')"></div>
<div class="color" style="background:#9fbf9f" onclick="setColor('#9fbf9f')"></div>
</div>
<div class="palette-row">
<div class="color" style="background:#cfe3cf" onclick="setColor('#cfe3cf')"></div>
<div class="color" style="background:#6f8fbf" onclick="setColor('#6f8fbf')"></div>
<div class="color" style="background:#9fbbe0" onclick="setColor('#9fbbe0')"></div>
<div class="color" style="background:#d6e6ff" onclick="setColor('#d6e6ff')"></div>
</div>
</div>
<input type="range" id="size" min="1" max="18" value="3" />
<button id="togglePalette" onclick="togglePalette()">🎨 Paleta</button>
</div>
</div>
<script>
const c=document.getElementById("paintCanvas");
const x=c.getContext("2d");
function resizeCanvas(){
c.width=c.offsetWidth;
c.height=c.offsetHeight;
x.lineCap="round";
x.lineJoin="round";
}
window.addEventListener("resize",resizeCanvas);
resizeCanvas();
let drawing=false,color="#000",lx=0,ly=0;
function setColor(v){color=v;}
function togglePalette(){
const p=document.getElementById("palette");
p.style.display = (p.style.display==="block") ? "none" : "block";
}
/* CURSOR FIX */
function pos(e){
const rect=c.getBoundingClientRect();
const clientX = e.touches ? e.touches[0].clientX : e.clientX;
const clientY = e.touches ? e.touches[0].clientY : e.clientY;
return {
x:(clientX-rect.left)*(c.width/rect.width),
y:(clientY-rect.top)*(c.height/rect.height)
};
}
c.onmousedown=e=>{drawing=true;let p=pos(e);lx=p.x;ly=p.y};
c.onmouseup=()=>drawing=false;
c.onmouseleave=()=>drawing=false;
c.onmousemove=e=>{
if(!drawing)return;
let p=pos(e);
x.strokeStyle=color;
x.lineWidth=document.getElementById("size").value;
x.beginPath();
x.moveTo(lx,ly);
x.lineTo(p.x,p.y);
x.stroke();
lx=p.x;ly=p.y;
};
c.addEventListener("touchstart",e=>{
drawing=true;let p=pos(e);lx=p.x;ly=p.y;
});
c.addEventListener("touchmove",e=>{
e.preventDefault();
if(!drawing)return;
let p=pos(e);
x.strokeStyle=color;
x.lineWidth=document.getElementById("size").value;
x.beginPath();
x.moveTo(lx,ly);
x.lineTo(p.x,p.y);
x.stroke();
lx=p.x;ly=p.y;
},{passive:false});
c.addEventListener("touchend",()=>drawing=false);
function clearCanvas(){
x.clearRect(0,0,c.width,c.height);
}
function saveCanvas(){
let a=document.createElement("a");
a.href=c.toDataURL("image/png");
a.download="igari-paint.png";
a.click();
}
</script>
∘₊✧──────────────────✧₊∘
Tutorial de contador de tiempo:
<style>
/* Contenedor principal - centrado y adaptado a 281px */
.tiempo-contador {
background: rgba(180, 150, 200, 0.15);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
padding: 10px 15px;
border-radius: 8px;
border: 1.5px solid rgba(180, 150, 200, 0.3);
box-shadow: 0 2px 12px rgba(180, 150, 200, 0.15);
text-align: center;
font-family: 'Segoe UI', 'Courier New', monospace;
width: 100%;
max-width: 281px;
margin: 0 auto;
/* Centrado automático */
display: block;
transition: all 0.3s ease;
box-sizing: border-box;
}
/* Efecto hover sutil */
.tiempo-contador:hover {
border-color: rgba(241, 196, 15, 0.5);
box-shadow: 0 2px 20px rgba(180, 150, 200, 0.25);
}
/* Línea decorativa amarilla superior */
.tiempo-contador .linea-amarilla {
width: 30px;
height: 2px;
background: linear-gradient(90deg, rgba(241, 196, 15, 0.3), rgba(241, 196, 15, 0.8));
margin: 0 auto 6px auto;
border-radius: 10px;
transition: width 0.3s ease;
}
.tiempo-contador:hover .linea-amarilla {
width: 50px;
}
/* Contenedor del tiempo - horizontal */
.tiempo-contador .tiempo-wrapper {
display: flex;
align-items: baseline;
justify-content: center;
gap: 2px;
}
/* Número del contador - formato digital */
.tiempo-contador .numero {
color: #6b4c7a;
font-size: 28px;
font-weight: 600;
font-family: 'Courier New', monospace;
letter-spacing: 1px;
line-height: 1;
text-shadow: 0 1px 3px rgba(107, 76, 122, 0.1);
}
/* Separador de dos puntos */
.tiempo-contador .separador {
color: rgba(180, 150, 200, 0.5);
font-size: 20px;
font-weight: 300;
margin: 0 1px;
animation: parpadeo 1s step-end infinite;
}
@keyframes parpadeo {
0%,
100% {
opacity: 1;
}
50% {
opacity: 0.2;
}
}
/* Etiqueta pequeña debajo */
.tiempo-contador .etiqueta {
color: rgba(107, 76, 122, 0.6);
font-size: 9px;
text-transform: uppercase;
letter-spacing: 1.5px;
font-weight: 400;
margin-top: 3px;
font-family: 'Segoe UI', sans-serif;
}
/* Icono pequeño de reloj */
.tiempo-contador .icono {
font-size: 14px;
opacity: 0.5;
display: inline-block;
margin-right: 6px;
}
/* Diseño flexible para que el contador sea rectangular */
.tiempo-contador .contenido {
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
}
/* Fila superior: icono + tiempo */
.tiempo-contador .fila-tiempo {
display: flex;
align-items: center;
justify-content: center;
gap: 4px;
width: 100%;
}
/* Ajuste para que el contador ocupe todo el ancho de la barra */
.tiempo-contador .tiempo-wrapper {
flex: 1;
justify-content: center;
}
</style>
<div class="tiempo-contador">
<div class="contenido">
<!-- Línea decorativa amarilla -->
<div class="linea-amarilla"></div>
<!-- Fila principal: icono + contador -->
<div class="fila-tiempo">
<span class="icono">⏱</span>
<div class="tiempo-wrapper">
<span class="numero" id="contador-minutos">00</span>
<span class="separador">:</span>
<span class="numero" id="contador-segundos">00</span>
</div>
</div>
<!-- Etiqueta pequeña -->
<div class="etiqueta">Tiempo en el blog</div>
</div>
</div>
<script>
// Función para actualizar el contador con formato 00:00
function actualizarContador() {
const ahora = new Date().getTime();
const segundosTranscurridos = Math.floor((ahora - tiempoInicio) / 1000);
// Calcular minutos y segundos
const minutos = Math.floor(segundosTranscurridos / 60);
const segundos = segundosTranscurridos % 60;
// Formatear con dos dígitos (00:00)
const minutosStr = String(minutos).padStart(2, '0');
const segundosStr = String(segundos).padStart(2, '0');
// Actualizar los elementos
document.getElementById('contador-minutos').textContent = minutosStr;
document.getElementById('contador-segundos').textContent = segundosStr;
}
// Guardar el momento exacto en que el usuario carga la página
const tiempoInicio = new Date().getTime();
// Actualizar cada segundo
setInterval(actualizarContador, 1000);
// Actualizar inmediatamente al cargar
actualizarContador();
</script>
No hay comentarios:
Publicar un comentario