Crear una caja con resaltador de códigos en Blogger es una práctica común para aquellos que desean compartir tutoriales y ejemplos de código en su blog. Esta técnica permite que los códigos se muestren de forma más ordenada y estéticamente atractiva, lo que mejora la experiencia de los lectores al leer y comprender el contenido.
Al envolver el código en una caja de etiqueta vista previa, podemos lograr que el código se muestre con una fuente monoespaciada y con colores de resaltado para facilitar su lectura y comprensión. A continuación, te mostraré cómo crear una caja con resaltador de códigos en tu página web de Blogger:
1º Abrir Blogger / Tema / Editar HTML, aquí colocar el siguiente código CSS arriba del código de cierre ]]></b:skin> o </style>
/* ========== Code Box – Theme v2 (fijo alto y ancho) ========== */
:root{
--cbg:#0f1320;
--cbd:#1d2540;
--cglow:#2b3a73;
--ink:#eaf2ff;
--muted:#9fb0d1;
--accent:#00e0ff;
--accent-2:#7c4dff;
--ok:#14f195;
/* Tamaños fijos: AJUSTA A TU GUSTO */
--code-h: 380px; /* alto fijo del área de código */
--code-w: 720px; /* ancho fijo del cuadro */
}
.code-wrap{
position:relative;
margin:18px auto; /* centrado */
border-radius:14px;
background:linear-gradient(180deg,var(--cbg),#0b0f1d 70%);
border:1px solid var(--cbd);
box-shadow:0 12px 26px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.06);
overflow:hidden;
/* ancho fijo (no responsive) */
width:var(--code-w);
box-sizing:border-box;
}
.code-top{
display:flex; align-items:center; justify-content:space-between;
gap:10px; padding:10px 12px;
border-bottom:1px solid var(--cbd);
background:linear-gradient(180deg,#12182a,#0e1430);
}
.code-lang{
display:inline-flex; align-items:center; gap:8px;
font:700 12px/1 system-ui,Segoe UI,Roboto,Arial;
color:var(--muted); letter-spacing:.4px; text-transform:uppercase;
}
.code-dots{display:flex; gap:6px}
.code-dots i{width:10px;height:10px;border-radius:50%;display:inline-block}
.code-dots i:nth-child(1){background:#ff5f57}
.code-dots i:nth-child(2){background:#febc2e}
.code-dots i:nth-child(3){background:#28c840}
.code-copy{
appearance:none; border:0; cursor:pointer;
padding:8px 12px; border-radius:10px;
font:700 12px/1 system-ui,Segoe UI,Roboto,Arial;
color:#06101a; display:inline-flex; align-items:center; gap:8px;
background:linear-gradient(135deg,var(--accent),var(--accent-2));
box-shadow:0 8px 20px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.25);
transition:transform .12s ease, filter .12s ease;
white-space:nowrap;
}
.code-copy:hover{transform:translateY(-1px)}
.code-copy:active{transform:translateY(0)}
.code-copy[data-state="ok"]{background:linear-gradient(135deg,var(--ok),#3affc0)}
/* cuerpo */
pre.code{
margin:0; position:relative; background:transparent; border:0; border-radius:0;
box-sizing:border-box;
}
pre.code label{display:none}
/* Alto fijo + scroll interno (vertical y horizontal) */
pre.code code{
display:block; color:var(--ink);
font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;
font-size:13px; line-height:1.55;
padding:14px 16px;
height:var(--code-h); /* alto fijo */
width:100%; /* ocupa todo el ancho del wrap */
overflow:auto; /* barras internas */
-webkit-overflow-scrolling:touch;
white-space:pre; /* no envuelve líneas */
word-wrap:normal; /* evita cortes raros */
/* (sin min-width:max-content para que no empuje el contenedor) */
}
/* Hint */
.code-hint{
position:absolute; right:12px; top:12px;
color:var(--muted); font:600 11px/1 system-ui,Segoe UI,Roboto,Arial;
opacity:.85; pointer-events:none;
}
/* Colores */
.code-html code{color:#b8f1a6}
.code-css code{color:#a6b7ff}
.code-javascript code{color:#ffbf7a}
.code-jquery code{color:#6be7f0}
2º A continuación, debemos colocar el código script antes de la etiqueta de cierre </body><script type='text/javascript'>
//<![CDATA[
(function(){
// --- 1) Legacy: <i rel="pre">...</i> -> <pre class="code"><code>...</code></pre>
if (window.jQuery) {
// Con jQuery (como tu versión original)
jQuery('i[rel="pre"]').replaceWith(function(){
return jQuery('<pre class="code"><code>' + jQuery(this).html() + '</code></pre>');
});
} else {
// Sin jQuery
var legacy = document.querySelectorAll('i[rel="pre"]');
for (var L=0; L<legacy.length; L++){
var old = legacy[L];
var pre = document.createElement('pre'); pre.className = 'code';
var code = document.createElement('code'); code.textContent = old.textContent;
pre.appendChild(code);
old.parentNode.replaceChild(pre, old);
}
}
// --- 2) Doble clic para seleccionar (como tu script)
var pres = document.querySelectorAll('pre,kbd,blockquote');
for (var i=0; i<pres.length; i++){
pres[i].addEventListener('dblclick', function(){
var selection = window.getSelection();
var range = document.createRange();
range.selectNodeContents(this);
selection.removeAllRanges();
selection.addRange(range);
}, false);
}
// --- 3) Mejora: envolver <pre class="code ..."> con cabecera + botón Copiar
var nodes = document.querySelectorAll('pre.code');
for (var k=0; k<nodes.length; k++){
(function(pre){
if (pre.parentNode && pre.parentNode.classList && pre.parentNode.classList.contains('code-wrap')) return;
// Detectar lenguaje (por <label> o por clase)
var lang = 'CODE';
var lbl = pre.querySelector('label');
if (lbl){
lang = (lbl.textContent || 'CODE').replace(/\s+/g,' ').trim();
lbl.parentNode.removeChild(lbl);
} else if (/\bcode-html\b/.test(pre.className)){ lang='HTML';
} else if (/\bcode-css\b/.test(pre.className)){ lang='CSS';
} else if (/\bcode-javascript\b/.test(pre.className)){ lang='JS';
} else if (/\bcode-jquery\b/.test(pre.className)){ lang='jQuery'; }
// Crear contenedor
var wrap = document.createElement('div'); wrap.className = 'code-wrap';
var top = document.createElement('div'); top.className = 'code-top';
var left = document.createElement('div'); left.className = 'code-lang';
left.innerHTML = '<span class="code-dots"><i></i><i></i><i></i></span><span>'+lang+'</span>';
var btn = document.createElement('button');
btn.className = 'code-copy';
btn.type = 'button';
btn.setAttribute('aria-label','Copiar código');
btn.innerHTML =
'<span style="display:inline-block;vertical-align:middle;">' +
'<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">' +
'<path d="M16 1H4c-1.1 0-2 .9-2 2v12h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/>' +
'</svg></span><span style="margin-left:6px;">Copiar</span>';
top.appendChild(left);
top.appendChild(btn);
// Hint (doble clic)
var hint = document.createElement('span');
hint.className = 'code-hint';
hint.appendChild(document.createTextNode('doble clic para seleccionar'));
// Insertar estructura
pre.parentNode.insertBefore(wrap, pre);
wrap.appendChild(top);
wrap.appendChild(pre);
wrap.appendChild(hint);
// Acción copiar
btn.onclick = function(){
var codeEl = pre.querySelector('code') || pre;
var txt = codeEl.textContent || codeEl.innerText || '';
function ok(){
btn.setAttribute('data-state','ok');
btn.lastChild.textContent = 'Copiado';
setTimeout(function(){
btn.removeAttribute('data-state');
btn.lastChild.textContent = 'Copiar';
}, 1400);
}
function fallback(){
var r = document.createRange(); r.selectNodeContents(codeEl);
var s = window.getSelection(); s.removeAllRanges(); s.addRange(r);
alert('Seleccionado. Usa Ctrl/Cmd+C para copiar.');
}
if (navigator.clipboard && navigator.clipboard.writeText){
navigator.clipboard.writeText(txt).then(ok, fallback);
} else {
fallback();
}
};
})(nodes[k]);
}
})();
//]]>
</script>
3º Después de eso guardar los cambios en la plantilla.4º Para la aplicación de la caja de códigos dentro de las publicaciones o edición de entradas, utilizar el siguiente código en la pestaña Vista HTML, es obligatorio parsear el código html que deseamos compartir. Podemos elegir entre 4 tipos de resaltador de códigos HTML, CSS. JAVASCRIPT y JQUERY.
<pre class='code code-html'><label>HTML</label><code>CÓDIGO HTML</code></pre>
<pre class='code code-css'><label>CSS</label><code>CÓDIGO CSS</code></pre>
<pre class='code code-javascript'><label>JS</label><code>CÓDIGO JAVASCRIPT</code></pre>
<pre class='code code-jquery'><label>Jquery</label><code>CÓDIGO JQUERY</code></pre>
CUANDO QUIERAS AGREAGR LOS CODIGOS A TUS CAJAS CONTENEDORAS NO PUEDES SOLO COPIAR EL CODIGO Y PEGARLO, NECESITAS CONVERTIRLO DE HTML A XML AQUI TE DEJO UN CONVERTOR
0 Comentarios