<rss version="2.0"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:dc="http://purl.org/dc/elements/1.1/">
        <channel>
        <title>Magazine - css</title>
        <link>https://www.genbeta.com</link>
        <description>Publicación de noticias sobre gadgets y tecnología. Últimas tecnologías en electrónica de consumo y novedades tecnológicas en móviles, tablets, informática, etc</description>
        <pubDate>Sat, 13 Jun 2026 10:46:38 +0000</pubDate>
        <generator>https://www.genbeta.com</generator>
        <atom:link href="https://www.genbeta.com/tag/css/rss2.xml" rel="self" type="application/rss+xml" />
                                        <item>
                <title><![CDATA["El HTML está muerto", según este programador, y estas son las razones (también habla de cómo podríamos resucitarlo) ]]></title>
                <link>https://www.genbeta.com/desarrollo/html-esta-muerto-este-programador-estas-razones-tambien-habla-como-podriamos-resucitarlo</link>
                <guid>https://www.genbeta.com/desarrollo/html-esta-muerto-este-programador-estas-razones-tambien-habla-como-podriamos-resucitarlo</guid>
                <pubDate>Wed, 06 Aug 2025 13:30:09 +0000</pubDate>
                                         <dc:creator>Marcos Merino</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/0ee074/chatgpt-image-6-ago-2025-14_08_01/1024_2000.png" alt="&quot;El&#x20;HTML&#x20;est&#x00E1;&#x20;muerto&quot;,&#x20;seg&#x00FA;n&#x20;este&#x20;programador,&#x20;y&#x20;estas&#x20;son&#x20;las&#x20;razones&#x20;&#x28;tambi&#x00E9;n&#x20;habla&#x20;de&#x20;c&#x00F3;mo&#x20;podr&#x00ED;amos&#x20;resucitarlo&#x29;&#x20;">
    </p>
    <p>La web ha evolucionado enormemente desde sus inicios, pero en algunos aspectos cruciales sigue anclada en el pasado. Mientras tecnologías como WebAssembly (WASM) ganan terreno incluso en el servidor, las páginas web que usamos todos los días todavía funcionan con sistemas viejos como el DOM, HTML y CSS, que fueron creados hace décadas y no están pensados para las necesidades de hoy.</p>
<!-- BREAK 1 --><p>En su blog profesional, el desarrollador Steven Wittens ha expuesto con detalle esa idea (y dejado caer, al final, algunas posibles soluciones) en un <a rel="noopener, noreferrer" href="https://acko.net/blog/html-is-dead-long-live-html/">texto</a> que propone repensar, desde su misma base, los fundamentos del desarrollo web.</p>
<h2>¿Qué es el DOM y por qué es un lío?</h2>
<p>Cuando visitas una página web, tu navegador construye una especie de "árbol" interno para entender y mostrar el contenido. Ese árbol se llama <strong>DOM</strong>, que significa <em>Document Object Model</em> o "Modelo de Objetos del Documento".</p>
<!-- BREAK 2 --><p>Imagina que el DOM es como una maqueta de LEGO de la página, donde cada bloque representa un elemento: un título, una imagen, un botón, etc. Suena bien, ¿verdad? El problema es que este sistema se ha vuelto tan viejo y complicado que ya nadie lo entiende del todo bien… ni siquiera los expertos.</p>
<p>Por ejemplo, en Google Chrome, un solo bloque de esa maqueta (<code>document.body</code>, que es básicamente el cuerpo de la página) tiene más de <strong>350 funciones y propiedades</strong> diferentes. Y si hablamos del estilo (colores, márgenes, tamaños), hay más de <strong>660 opciones solo para eso</strong>.</p>
<!-- BREAK 3 --><p>Es como tener una caja de herramientas tan grande que ya no sabes qué usar, ni cómo. Además:</p>
<ul>
  <li>Muchas herramientas están obsoletas (ya no se usan, pero ahí siguen).</li>
  <li>Varias hacen lo mismo, pero de formas diferentes.</li>
  <li>Algunas cambian cosas en la página de maneras inesperadas.</li>
</ul>
<p>Debido a este caos, la mayoría de desarrolladores modernos evitan trabajar directamente con el DOM. Usan herramientas más fáciles y organizadas (como React o Vue), que simplifican todo.</p>
<!-- BREAK 4 --><p>Y aunque hay intentos por mejorar esto, como los <em>Web Components</em> (una forma más moderna de crear partes reutilizables de una página), llegaron tarde y no son muy populares porque son difíciles de usar.</p>
<h2>HTML: ¿Y la semántica, dónde quedó?</h2>
<p>HTML es el lenguaje básico con el que se construyen las páginas web. Su objetivo original era permitir que los sitios fueran claros y organizados: con títulos, párrafos, listas, artículos, comentarios… todo bien etiquetado.</p>
<!-- BREAK 5 --><p>Eso se llama <strong>semántica</strong>: usar etiquetas que explican <em>qué</em> es cada parte del contenido, no solo <em>cómo se ve</em>.</p>
<p>Pero, aunque han pasado más de 10 años desde que salió <a class="text-outboundlink" href="https://www.xataka.com/basics/que-html5-que-novedades-ofrece" data-vars-post-title="Qué es el HTML5 y qué novedades ofrece" data-vars-post-url="https://www.xataka.com/basics/que-html5-que-novedades-ofrece">la versión vigente de HTML (HTML5)</a>, seguimos sin tener etiquetas para cosas tan comunes como un hilo de conversación (<code>&lt;thread&gt;</code>) o un comentario (<code>&lt;comment&gt;</code>). Eso significa que los desarrolladores tienen que improvisar y usar etiquetas genéricas como <code>&lt;div&gt;</code> o <code>&lt;article&gt;</code>, que no dicen claramente lo que representan.</p>
<!-- BREAK 6 --><div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.genbeta.com/a-fondo/no-suele-considerarse-a-html-css-lenguajes-programacion-hay-quien-no-esta-acuerdo-tienen-buenos-argumentos" class="pivot-outboundlink" data-vars-post-title="No suele considerarse a HTML y CSS lenguajes de programación... pero hay quien no está de acuerdo (y tienen buenos argumentos) ">
     <img alt="No&#x20;suele&#x20;considerarse&#x20;a&#x20;HTML&#x20;y&#x20;CSS&#x20;lenguajes&#x20;de&#x20;programaci&#x00F3;n...&#x20;pero&#x20;hay&#x20;quien&#x20;no&#x20;est&#x00E1;&#x20;de&#x20;acuerdo&#x20;&#x28;y&#x20;tienen&#x20;buenos&#x20;argumentos&#x29;&#x20;" width="375" height="142" src="https://i.blogs.es/46f2ee/html_css_turing/375_142.webp" onerror='this.src="https://i.blogs.es/46f2ee/html_css_turing/375_142.jpeg"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.genbeta.com/a-fondo/no-suele-considerarse-a-html-css-lenguajes-programacion-hay-quien-no-esta-acuerdo-tienen-buenos-argumentos" class="desvio-taxonomy-anchor pivot-outboundlink" data-vars-post-title="No suele considerarse a HTML y CSS lenguajes de programación... pero hay quien no está de acuerdo (y tienen buenos argumentos) ">En Genbeta</a>
    </div>
    <a href="https://www.genbeta.com/a-fondo/no-suele-considerarse-a-html-css-lenguajes-programacion-hay-quien-no-esta-acuerdo-tienen-buenos-argumentos" class="desvio-title js-desvio-title pivot-outboundlink" data-vars-post-title="No suele considerarse a HTML y CSS lenguajes de programación... pero hay quien no está de acuerdo (y tienen buenos argumentos) ">No suele considerarse a HTML y CSS lenguajes de programación... pero hay quien no está de acuerdo (y tienen buenos argumentos) </a>
   </div>
  </div>
 </div>
</div>
<p><strong>Además, las reglas para usar las etiquetas "correctamente" son confusas</strong>. Por ejemplo, según algunas guías, un artículo dentro de otro artículo podría considerarse un comentario... pero eso no tiene mucho sentido, ¿verdad?</p>
<!-- BREAK 7 --><p>Hoy en día, las grandes decisiones sobre cómo evoluciona HTML las toman principalmente los creadores de navegadores (como Google o Apple), no una comunidad abierta. ¿Y qué han hecho? Pues en lugar de rediseñar o simplificar HTML, han ido agregando pequeñas cosas nuevas aquí y allá, como quien sigue parcheando una prenda vieja.</p>
<div class="article-asset-summary article-asset-normal article-asset-center">
 <div class="asset-content">
     <div class="sumario"> El resultado: tenemos un HTML estancado, anticuado y que no termina de cumplir bien con su propósito original</div>
   </div>
</div>
<h2>CSS: ¿por qué alinear cosas en la web es tan difícil?</h2>
<p>CSS (siglas en inglés de "hojas de estilo en cascada") es lo que usamos para darle forma y colores a una página web: tamaños, márgenes, colores, posiciones, etc. Pero a pesar de ser tan importante… muchas veces parece estar en contra nuestra.</p>
<!-- BREAK 8 --><p>¿Te ha pasado que simplemente quieres poner dos cosas una al lado de la otra, o que algo quede centrado en la pantalla, y por más que lo intentas <strong>no pasa lo que esperas</strong>? No estás solo.</p>
<p>El problema principal es que CSS no funciona como creemos.</p>
<p>Imagina que tienes una caja con dos cajones adentro y que quieres que cada cajón ocupe la mitad del espacio. Lógico, ¿no?</p>
<p><code>&lt;div&gt;<br>
 &nbsp;&lt;div style="height: 50%"&gt;...&lt;/div&gt;<br>
 &nbsp;&lt;div style="height: 50%"&gt;...&lt;/div&gt;<br>
&lt;/div&gt;</code></p>
<p>Pero CSS no lo entiende así. En realidad, necesita que primero le digas <strong>cuánto mide la caja grande</strong>. Si no lo haces, simplemente <strong>ignora tus instrucciones</strong>.</p>
<p>Esto es porque CSS trabaja de una forma algo rara: primero mira el contenido (lo que hay dentro) y luego decide qué tamaño debería tener el contenedor. Es como si compraras una caja para tus cosas... <strong>después</strong> de ver cuántas cosas tienes.</p>
<!-- BREAK 9 --><p><strong>¿Cómo se soluciona eso?</strong> Bueno, el CSS moderno tiene herramientas como <strong>Flexbox</strong>, que ayudan a distribuir mejor el espacio entre elementos. Pero hasta esas herramientas cuentan con sus propios problemas.</p>
<h2>SVG: potente pero caótico</h2>
<p>SVG son las siglas en inglés de "gráficos vectoriales escalables". Es una tecnología que permite dibujar cosas como iconos, gráficos, logotipos o ilustraciones directamente dentro de una página web, sin que se vean borrosas al hacer zoom. Resulta útil porque...</p>
<!-- BREAK 10 --><div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.genbeta.com/desarrollo/asi-se-ha-ido-complicando-arquitectura-detras-aplicaciones-web-ultimos-26-anos" class="pivot-outboundlink" data-vars-post-title="Así se ha ido complicando la arquitectura detrás de las aplicaciones web en los últimos 26 años">
     <img alt="As&#x00ED;&#x20;se&#x20;ha&#x20;ido&#x20;complicando&#x20;la&#x20;arquitectura&#x20;detr&#x00E1;s&#x20;de&#x20;las&#x20;aplicaciones&#x20;web&#x20;en&#x20;los&#x20;&#x00FA;ltimos&#x20;26&#x20;a&#x00F1;os" width="375" height="142" src="https://i.blogs.es/049646/web-hosting-5965504_1920/375_142.webp" onerror='this.src="https://i.blogs.es/049646/web-hosting-5965504_1920/375_142.jpg"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.genbeta.com/desarrollo/asi-se-ha-ido-complicando-arquitectura-detras-aplicaciones-web-ultimos-26-anos" class="desvio-taxonomy-anchor pivot-outboundlink" data-vars-post-title="Así se ha ido complicando la arquitectura detrás de las aplicaciones web en los últimos 26 años">En Genbeta</a>
    </div>
    <a href="https://www.genbeta.com/desarrollo/asi-se-ha-ido-complicando-arquitectura-detras-aplicaciones-web-ultimos-26-anos" class="desvio-title js-desvio-title pivot-outboundlink" data-vars-post-title="Así se ha ido complicando la arquitectura detrás de las aplicaciones web en los últimos 26 años">Así se ha ido complicando la arquitectura detrás de las aplicaciones web en los últimos 26 años</a>
   </div>
  </div>
 </div>
</div>
<ul>
  <li>Puedes cambiar el tamaño de un dibujo sin perder calidad.</li>
  <li>Puedes modificar colores, formas o posiciones con código.</li>
  <li>Incluso puedes hacer que reaccione al pasar el mouse o hacer clic.</li>
</ul>
<p>Pero, aunque <strong>SVG</strong> sea tan polivalente, usarlo en combinación con HTML y CSS puede volverse un lío por varias razones:</p>
<ul>
  <li><strong>No 'habla el mismo idioma' que CSS</strong>: Aunque a veces puedes aplicar estilos CSS a los dibujos SVG, no siempre funcionan igual. Hay reglas que se comportan diferente o simplemente no aplican.</li>
  <li><strong>Es complejo</strong>: Para hacer un dibujo, tienes que escribir instrucciones como <code>&lt;path d="M150 0 L75 200 L225 200 Z" /&gt;</code>. ¡Sí, eso es un triángulo! Pero no es precisamente amigable a la vista ni fácil de entender.</li>
  <li><strong>¿Cuándo usar SVG y cuándo HTML?</strong>: A veces puedes hacer una figura con HTML y CSS, otras veces necesitas SVG. Pero no hay una regla clara. Elegir entre uno u otro puede depender de detalles técnicos molestos.</li>
  <li><strong>Algunas cosas útiles solo están en SVG</strong>: Por ejemplo, si quieres detectar clics en formas con bordes irregulares (como una estrella), SVG lo hace fácil. HTML y CSS... no tanto.</li>
</ul>
<h2>La pesadilla del 'kitbashing web'</h2>
<p>A lo largo de los años, el desarrollo de interfaces web ha evolucionado a base de "parchar" las herramientas existentes. Esto ha dado lugar al fenómeno del <em>kitbashing</em>, un término tomado del modelismo donde se ensamblan modelos a partir de piezas que no estaban diseñadas para funcionar juntas. En la web, esto se traduce en construir interfaces sofisticadas combinando HTML, CSS y SVG en formas para las que nunca fueron concebidos.</p>
<!-- BREAK 11 --><p>Esto ocurre porque HTML y CSS <strong>no fueron pensados originalmente para hacer aplicaciones</strong>. Se crearon para mostrar documentos, como artículos o noticias, no para hacer cosas como editores de texto tipo Google Docs o chats como WhatsApp Web.</p>
<h3>Ejemplos de lo difícil que puede ser:</h3>
<ul>
  <li><strong>Un chat que se quede pegado abajo (como en WhatsApp):</strong><br>
Parece algo básico, ¿no? Pero lograr que la ventana del chat se quede abajo cuando llega un nuevo mensaje requiere escribir código personalizado cada vez. No hay una forma fácil y automática de hacerlo con HTML y CSS.</li>
  <li><strong>Copiar y pegar texto con formato:</strong> Si alguna vez copiaste texto de una página web y lo pegaste en otro lugar, sabrás que a veces se conserva el color o el estilo… y a veces no. Hacer que eso funcione bien en una app web requiere "trucos invisibles", como poner elementos escondidos fuera de la pantalla para que el sistema entienda qué se está copiando.</li>
  <li><strong>Listas y tablas muy largas (como una hoja de cálculo):</strong> Mostrar muchos datos (como en Excel) es difícil en una web. Si lo haces directamente, la página se vuelve lenta. Para solucionarlo, los desarrolladores tienen que "engañar" al navegador: solo muestran una parte de la lista y cambian lo que se ve a medida que el usuario se desplaza.</li>
  <li><strong>Cajas que se vean bien en diferentes tamaños de pantalla:</strong> Ajustar el diseño para que se vea bien en un celular y en una computadora suena lógico, pero hacerlo con HTML y CSS puede ser muy complicado. A veces hay que escribir muchas reglas específicas, o usar herramientas externas que tratan de hacerlo más fácil.</li>
</ul><div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.genbeta.com/desarrollo/estos-errores-que-todo-desarrollador-web-deberia-evitar-no-quiere-perder-tiempo-energia-este-experto" class="pivot-outboundlink" data-vars-post-title="Estos son los errores que todo desarrollador web debería evitar (si no quiere perder tiempo y energía), según este experto ">
     <img alt="Estos&#x20;son&#x20;los&#x20;errores&#x20;que&#x20;todo&#x20;desarrollador&#x20;web&#x20;deber&#x00ED;a&#x20;evitar&#x20;&#x28;si&#x20;no&#x20;quiere&#x20;perder&#x20;tiempo&#x20;y&#x20;energ&#x00ED;a&#x29;,&#x20;seg&#x00FA;n&#x20;este&#x20;experto&#x20;" width="375" height="142" src="https://i.blogs.es/eb27a3/chatgpt-image-29-jul-2025-15_17_53/375_142.webp" onerror='this.src="https://i.blogs.es/eb27a3/chatgpt-image-29-jul-2025-15_17_53/375_142.png"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.genbeta.com/desarrollo/estos-errores-que-todo-desarrollador-web-deberia-evitar-no-quiere-perder-tiempo-energia-este-experto" class="desvio-taxonomy-anchor pivot-outboundlink" data-vars-post-title="Estos son los errores que todo desarrollador web debería evitar (si no quiere perder tiempo y energía), según este experto ">En Genbeta</a>
    </div>
    <a href="https://www.genbeta.com/desarrollo/estos-errores-que-todo-desarrollador-web-deberia-evitar-no-quiere-perder-tiempo-energia-este-experto" class="desvio-title js-desvio-title pivot-outboundlink" data-vars-post-title="Estos son los errores que todo desarrollador web debería evitar (si no quiere perder tiempo y energía), según este experto ">Estos son los errores que todo desarrollador web debería evitar (si no quiere perder tiempo y energía), según este experto </a>
   </div>
  </div>
 </div>
</div>
<h2>Canvas: ¿una solución?</h2>
<p>Ante las limitaciones evidentes del DOM y CSS, algunos desarrolladores y estándares emergentes han puesto sus ojos en <strong>una alternativa radical</strong>: usar <code>&lt;canvas&gt;</code> como plataforma principal para renderizar interfaces. La propuesta más notable en esta línea es <a rel="noopener, noreferrer" href="https://github.com/WICG/html-in-canvas">HTML-in-Canvas</a>, que plantea la idea de renderizar fragmentos de HTML dentro de un <code>&lt;canvas&gt;</code>, permitiendo personalizar completamente su presentación visual.</p>
<!-- BREAK 12 --><p>Suena atractivo: ¿por qué no aprovechar la potencia gráfica de Canvas para superar las deficiencias del modelo de caja y de estilo del navegador? Pero este enfoque trae consigo una gran cantidad de obstáculos tanto técnicos como filosóficos.</p>
<p>Para empezar, <strong>la API propuesta sigue estando atada al DOM</strong>, lo que significa que los elementos a renderizar deben seguir existiendo dentro del árbol de documentos para ser interpretables. Esto introduce una contradicción: si necesitas <code>&lt;canvas&gt;</code> para librarte del DOM, ¿por qué seguir dependiendo de él para dibujar?</p>
<!-- BREAK 13 --><p>Además, para lograr interactividad, el sistema obliga a <strong>reimplementar el modelo de interacción desde cero</strong>: gestión de eventos de mouse, teclas, estados de foco, accesibilidad... todo debe recrearse manualmente.</p>
<p>Se trata de un sistema donde el desarrollador asume el control absoluto, pero también la carga completa, como si estuviera desarrollando usando un motor de videojuegos.</p>
<!-- BREAK 14 --><p>Uno de los principales argumentos a favor de usar canvas es que “al menos es programable”. Pero <strong>en realidad, es un recurso extremadamente limitado</strong>:</p>
<ul>
  <li>No tiene acceso directo a fuentes del sistema ni a APIs nativas de layout de texto.</li>
  <li>No ofrece herramientas nativas para manejar accesibilidad, localización o compatibilidad móvil.</li>
  <li>No permite reusar eficientemente estilos, efectos ni interacciones predefinidas del navegador.</li>
</ul>
<h2>¿Y entonces, qué?</h2>
<p>Después de todo lo que hemos visto, queda claro que el modelo actual de cómo se construyen las páginas web —usando HTML, CSS y el famoso DOM— está roto, pero eso no significa que no haya solución. De hecho, según Wittens <strong>es totalmente posible mejorar todo esto</strong>… si nos atrevemos a cambiar las bases. Así que, ¿qué deberíamos hacer?</p>
<!-- BREAK 15 --><h3>Empezar con una estructura más clara</h3>
<p>Hoy en día, cuando haces una web, terminas mezclando muchas cosas: contenido, estilo y comportamiento. Todo está enredado.<br>
Lo ideal sería separar mejor:</p>
<!-- BREAK 16 --><ul>
  <li><strong>Lo que se muestra</strong> (el diseño).</li>
  <li><strong>Cómo se comporta</strong> (la interacción).</li>
  <li><strong>Qué significa cada cosa</strong> (la semántica).</li>
</ul><div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.xataka.com/retro/internet-se-ha-convertido-lugar-confuso-que-hay-mucha-gente-anorando-web-1-0-neocities-puedes-revivirla" class="pivot-outboundlink" target="_blank" data-vars-post-title="La web se ha convertido en un lugar horrendo para mucha gente. Así que están reconstruyendo su versión 1.0 como refugio">
     <img alt="La&#x20;web&#x20;se&#x20;ha&#x20;convertido&#x20;en&#x20;un&#x20;lugar&#x20;horrendo&#x20;para&#x20;mucha&#x20;gente.&#x20;As&#x00ED;&#x20;que&#x20;est&#x00E1;n&#x20;reconstruyendo&#x20;su&#x20;versi&#x00F3;n&#x20;1.0&#x20;como&#x20;refugio" width="375" height="142" src="https://i.blogs.es/f7ee9c/lo-que-te-cuenta-netflix/375_142.webp" onerror='this.src="https://i.blogs.es/f7ee9c/lo-que-te-cuenta-netflix/375_142.jpeg"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.xataka.com/retro/internet-se-ha-convertido-lugar-confuso-que-hay-mucha-gente-anorando-web-1-0-neocities-puedes-revivirla" class="desvio-taxonomy-anchor pivot-outboundlink m-crosspost" target="_blank" data-vars-post-title="La web se ha convertido en un lugar horrendo para mucha gente. Así que están reconstruyendo su versión 1.0 como refugio">En Xataka</a>
    </div>
    <a href="https://www.xataka.com/retro/internet-se-ha-convertido-lugar-confuso-que-hay-mucha-gente-anorando-web-1-0-neocities-puedes-revivirla" class="desvio-title js-desvio-title pivot-outboundlink" target="_blank" data-vars-post-title="La web se ha convertido en un lugar horrendo para mucha gente. Así que están reconstruyendo su versión 1.0 como refugio">La web se ha convertido en un lugar horrendo para mucha gente. Así que están reconstruyendo su versión 1.0 como refugio</a>
   </div>
  </div>
 </div>
</div>
<p>Tener estos tres aspectos separados haría que todo fuese más fácil de desarrollar, mantener y escalar.</p>
<h3>Diseñar pensando en cómo se hacen apps hoy</h3>
<p>Las páginas web de hoy ya no son solo documentos, son <strong>aplicaciones completas</strong>, como redes sociales, editores de texto, videojuegos… Y para eso necesitamos herramientas más modernas. Cosas como React, Vue o Svelte existen precisamente porque el sistema base (HTML+CSS+DOM) no da la talla.</p>
<!-- BREAK 17 --><p>Así que ¿por qué no rediseñar esas bases para que lo moderno ya venga incorporado?</p>
<ul>
  <li>Que los cambios en la pantalla sean automáticos cuando cambie algo en el sistema.</li>
  <li>Que podamos mover elementos o cambiar estilos sin pelear con reglas raras de CSS.</li>
  <li>Que el código sea fácil de leer, escribir y entender.</li>
</ul>
<h3>Ya hay ejemplos funcionando</h3>
<p>Wittens insiste en que no estamos hablando de fantasías, pues ya hay proyectos reales que ya están probando cómo se podría hacer todo esto mejor. Uno de ellos, por ejemplo, es <a rel="noopener, noreferrer" href="https://usegpu.live/">Use.GPU</a>, un sistema visual hecho con tecnología nueva llamada WebGPU. ¿Qué logra?</p>
<!-- BREAK 18 --><ul>
  <li>Interfaces mucho más rápidas y suaves.</li>
  <li>Diseños con menos líneas de código.</li>
  <li>Posicionamiento de elementos que <strong>por fin tiene sentido</strong> (sí, centrar cosas es fácil).</li>
  <li>Efectos visuales sin trucos raros ni dolores de cabeza.</li>
</ul>
<p>Y esto lo ha hecho una sola persona, con un sistema más claro y moderno que toda la maquinaria actual del navegador.</p>
<p>También hay navegadores nuevos como <a rel="noopener, noreferrer" href="https://servo.org/">Servo</a> y <a rel="noopener, noreferrer" href="https://ladybird.org/">Ladybird</a> que están empezando de cero. No arrastran todo el peso de 30 años de web, así que pueden tomar decisiones más inteligentes desde el principio.</p>
<p>Imagen | Marcos Merino mediante IA</p>
<p>En Genbeta | <a class="text-outboundlink" href="https://www.genbeta.com/desarrollo/esto-consiste-labor-desarrollador-full-stack-perfil-laboral-todoterreno" data-vars-post-title="En esto consiste la labor de un desarrollador Full Stack: un perfil laboral todoterreno" data-vars-post-url="https://www.genbeta.com/desarrollo/esto-consiste-labor-desarrollador-full-stack-perfil-laboral-todoterreno">En esto consiste la labor de un desarrollador Full Stack: un perfil laboral todoterreno</a></p>
<script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
                                <item>
                <title><![CDATA[No suele considerarse a HTML y CSS lenguajes de programación... pero hay quien no está de acuerdo (y tienen buenos argumentos) ]]></title>
                <link>https://www.genbeta.com/a-fondo/no-suele-considerarse-a-html-css-lenguajes-programacion-hay-quien-no-esta-acuerdo-tienen-buenos-argumentos</link>
                <guid>https://www.genbeta.com/a-fondo/no-suele-considerarse-a-html-css-lenguajes-programacion-hay-quien-no-esta-acuerdo-tienen-buenos-argumentos</guid>
                <pubDate>Sun, 14 Jan 2024 18:01:45 +0000</pubDate>
                                         <dc:creator>Marcos Merino</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/46f2ee/html_css_turing/1024_2000.jpeg" alt="No&#x20;suele&#x20;considerarse&#x20;a&#x20;HTML&#x20;y&#x20;CSS&#x20;lenguajes&#x20;de&#x20;programaci&#x00F3;n...&#x20;pero&#x20;hay&#x20;quien&#x20;no&#x20;est&#x00E1;&#x20;de&#x20;acuerdo&#x20;&#x28;y&#x20;tienen&#x20;buenos&#x20;argumentos&#x29;&#x20;">
    </p>
    <p>En el mundo de la programación lleva mucho tiempo vigente un debate acerca de si <strong>los lenguajes HTML y CSS, que son la base del desarrollo web, son o no 'lenguajes de programación'</strong>. Sea en discusiones online o no, no es infrecuente encontrarnos con programadores de lenguajes de programación 'de verdad' siendo cortantes cuando oyen a alguien sugerir que sabe programar sólo porque ha aprendido HTML.</p>
<!-- BREAK 1 --><p>En StackOverflow, de hecho, se preguntan por qué tienden a <a rel="noopener, noreferrer" href="https://softwareengineering.stackexchange.com/questions/28098/why-does-it-matter-that-html-and-css-are-not-programming-languages/28250#28250">ser "tan pendantes"</a> con este tema, mientras que algunos diseñadores web consideran que los programadores con 'pedigree' son <strong>demasiado dogmáticos</strong> en su definición de lenguajes.</p>
<p>Pero no se trata de un debate baladí: <strong>a nivel técnico, es importante tener claro qué constituye un lenguaje de programación</strong> y qué no lo hace. Y también tener claro qué son realmente capaces de hacer HTML y CSS, para despejar cualquier duda sobre la etiqueta más correcta a aplicarles.</p>
<!-- BREAK 2 --><p>Lo primero que hay que tener claro es qué criterio utilizar para decidir qué es un lenguaje de programación y qué no. Y el más habitual y tradicional para ello es <strong>la capacidad de un lenguaje para ser 'Turing-completo'</strong>. Pero, ¿qué demonios es eso?</p>
<h2>¿Turing-Qué?</h2><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=1024 width=1792 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/76bf10/maquina/450_1000.webp 450w, https://i.blogs.es/76bf10/maquina/650_1200.webp 681w,https://i.blogs.es/76bf10/maquina/1024_2000.webp 1024w, https://i.blogs.es/76bf10/maquina/1366_2000.webp 1366w" src="https://i.blogs.es/76bf10/maquina/450_1000.webp" alt="Maquina" onerror="this.src='https://i.blogs.es/76bf10/maquina/450_1000.jpeg';this.srcset='https://i.blogs.es/76bf10/maquina/450_1000.jpeg 450w, https://i.blogs.es/76bf10/maquina/650_1200.jpeg 681w,https://i.blogs.es/76bf10/maquina/1024_2000.jpeg 1024w, https://i.blogs.es/76bf10/maquina/1366_2000.jpeg 1366w';return false;">
   <img alt="Maquina" class="centro_sinmarco" src="https://i.blogs.es/76bf10/maquina/450_1000.webp">
   
      </div>
</div>
<p>Un lenguaje de programación se considera Turing-completo cuando tiene la capacidad de <strong>realizar cualquier cálculo que una Máquina de Turing pueda llevar a cabo</strong>. La pregunta es obvia, entonces, es "¿Qué es una Máquina de Turing?".</p>
<!-- BREAK 3 --><p>Como habrás supuesto ya, el Turing al que no dejamos de hacer referencia es <a class="text-outboundlink" href="https://www.xatakaciencia.com/quien-es/8-cosas-sorprendentes-de-alan-turing-el-hombre-que-sento-las-bases-del-primer-cerebro-electronico" data-vars-post-title="8 cosas sorprendentes de Alan Turing, el hombre que sentó las bases del primer cerebro electrónico " data-vars-post-url="https://www.xatakaciencia.com/quien-es/8-cosas-sorprendentes-de-alan-turing-el-hombre-que-sento-las-bases-del-primer-cerebro-electronico">Alan Turing</a>, el padre de la computación moderna, popularizado por su trabajo con las <a class="text-outboundlink" href="https://www.espinof.com/estrenos/the-imitation-game-descifrando-enigma-la-pelicula" data-vars-post-title="'The Imitation Game (Descifrando Enigma)', la película" data-vars-post-url="https://www.espinof.com/estrenos/the-imitation-game-descifrando-enigma-la-pelicula">computadoras Enigma</a> durante la Segunda Guerra Mundial.</p>
<p>Pero esas no son las máquinas a las que nos referimos, sino a <strong>un dispositivo abstracto que Turing teorizó en 1936</strong>, que contaba con las siguientes características:</p>
<!-- BREAK 4 --><ul>
  <li>Consta de una cinta infinita dividida en celdas, una cabeza de lectura/escritura que se mueve a lo largo de la cinta y un conjunto finito de estados y reglas de transición.</li>
  <li>Puede leer y escribir símbolos en la cinta, cambiar de estado según las reglas y moverse hacia la izquierda o la derecha.</li>
</ul><div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.genbeta.com/a-fondo/estructura-if-then-else-su-origen-su-papel-creacion-inteligencia-artificial" class="pivot-outboundlink" data-vars-post-title="La estructura IF-THEN-ELSE: su origen y su papel en la creación de la inteligencia artificial ">
     <img alt="La&#x20;estructura&#x20;IF-THEN-ELSE&#x3A;&#x20;su&#x20;origen&#x20;y&#x20;su&#x20;papel&#x20;en&#x20;la&#x20;creaci&#x00F3;n&#x20;de&#x20;la&#x20;inteligencia&#x20;artificial&#x20;" width="375" height="142" src="https://i.blogs.es/a30d69/ifthen/375_142.webp" onerror='this.src="https://i.blogs.es/a30d69/ifthen/375_142.jpeg"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.genbeta.com/a-fondo/estructura-if-then-else-su-origen-su-papel-creacion-inteligencia-artificial" class="desvio-taxonomy-anchor pivot-outboundlink" data-vars-post-title="La estructura IF-THEN-ELSE: su origen y su papel en la creación de la inteligencia artificial ">En Genbeta</a>
    </div>
    <a href="https://www.genbeta.com/a-fondo/estructura-if-then-else-su-origen-su-papel-creacion-inteligencia-artificial" class="desvio-title js-desvio-title pivot-outboundlink" data-vars-post-title="La estructura IF-THEN-ELSE: su origen y su papel en la creación de la inteligencia artificial ">La estructura IF-THEN-ELSE: su origen y su papel en la creación de la inteligencia artificial </a>
   </div>
  </div>
 </div>
</div>
<p>Esta descripción puede parecer simple, pero es una abstracción utilísima con la que Turing demostró que -si bien hay problemas que, efectivamente, una computadora nunca podrá resolver- si un problema puede resolverse mediante un algoritmo, puede resolverse con una máquina de Turing.</p>
<!-- BREAK 5 --><p>Por lo tanto, ser 'Turing-completo' significa que <strong>el lenguaje en cuestión debe ser capaz de simular cualquier algoritmo de computación</strong>, realizando para ello tres tareas fundamentales:</p>
<ul>
  <li>Leer y escribir sobre un medio de almacenamiento.</li>
  <li>Controlar el flujo de ejecución mediante instrucciones condicionales (como if/else) y bucles (como for o while).</li>
  <li>Modificar su propio código o estado durante la ejecución.</li>
</ul>
<p>Tres ejemplos rápidos de lenguajes <strong>Turing-completos serían Python, Java y C++</strong>.</p>
<p>HTML y CSS, sin embargo, no cumplen con estos criterios: <strong>HTML es un lenguaje de marcado</strong> utilizado para estructurar contenido en la web, mientras que <strong>CSS es un lenguaje de estilo</strong> usado para describir la presentación visual de un documento HTML.</p>
<h2>HTML y CSS, más de lo que parecen (¿pero no lo suficiente?)</h2>
<p><strong>HTML:</strong> El HTML ha sido la columna vertebral de la web desde sus inicios. A primera vista, HTML puede parecer un lenguaje simple que se limita a definir encabezados, párrafos y enlaces, pero en realidad, <strong>ha evolucionado para incorporar elementos más avanzados</strong>, como multimedia, formularios interactivos con elementos de entrada y validación, almacenamiento local...</p>
<!-- BREAK 6 --><p><strong>CSS:</strong> Por otro lado, el CSS se encarga de dar estilo y formato a los elementos HTML. Más allá de ser simplemente un conjunto de instrucciones de presentación estática, CSS <strong>también involucra el uso de conceptos lógicos</strong>: los '<a rel="noopener, noreferrer" href="https://developer.mozilla.org/es/docs/Web/CSS/CSS_media_queries/Using_media_queries">media queries</a>', son reglas condicionales que permiten que las páginas web se adapten a diferentes tamaños de pantalla y dispositivos. Han existido incluso <a rel="noopener, noreferrer" href="https://bugzilla.mozilla.org/show_bug.cgi?id=574059">exploits para vulnerabilidades de Mozilla Firefox</a> basados únicamente en CSS.</p>
<p>Pero nada de esto basta para convertirlos en lenguajes Turing-completos. Así que, ¿hay más que argumentar o terminamos aquí la discusión sobre si son o no lenguajes de programación?</p>
<!-- BREAK 7 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
     <div class="caption-img ">
                   <img class="centro_sinmarco" height=499 width=759 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/78c20f/humor/450_1000.webp 450w, https://i.blogs.es/78c20f/humor/650_1200.webp 681w,https://i.blogs.es/78c20f/humor/1024_2000.webp 1024w, https://i.blogs.es/78c20f/humor/1366_2000.webp 1366w" src="https://i.blogs.es/78c20f/humor/450_1000.webp" alt="Humor" onerror="this.src='https://i.blogs.es/78c20f/humor/450_1000.jpeg';this.srcset='https://i.blogs.es/78c20f/humor/450_1000.jpeg 450w, https://i.blogs.es/78c20f/humor/650_1200.jpeg 681w,https://i.blogs.es/78c20f/humor/1024_2000.jpeg 1024w, https://i.blogs.es/78c20f/humor/1366_2000.jpeg 1366w';return false;">
   <img alt="Humor" class="centro_sinmarco" src="https://i.blogs.es/78c20f/humor/450_1000.webp">
   
        <span>vía r/ProgrammerHumor</span>
   </div>
   </div>
</div>
<h2>¡Tenemos un último testigo, señoría!</h2>
<p>Un desarrollador web llamado Eli Fox-Epstein presentó una forma de simular la <a rel="noopener, noreferrer" href="https://en.wikipedia.org/wiki/Rule_110">Regla 110</a> utilizando CSS y HTML en un evento llamado Hack &amp;&amp; Tell en 2011. Dicha 'Regla' es un modelo de <a class="text-outboundlink" href="https://www.xataka.com/historia-tecnologica/mitico-juego-vida-matematico-john-conway-sigue-siendo-uno-problemas-clasicos-programacion-50-anos-despues" data-vars-post-title="El mítico 'juego de la vida' del matemático John Conway sigue siendo uno de los problemas clásicos de programación 50 años después" data-vars-post-url="https://www.xataka.com/historia-tecnologica/mitico-juego-vida-matematico-john-conway-sigue-siendo-uno-problemas-clasicos-programacion-50-anos-despues">autómata celular</a> (un patrón unidimensional compuesto por varios unos y ceros, que van evolucionando de acuerdo a ciertos patrones) creado por <a class="text-outboundlink" href="https://www.xatakaciencia.com/matematicas/wolframalpha-el-buscador-cientifico-definitivo" data-vars-post-title="Wolfram|Alpha, el buscador científico definitivo" data-vars-post-url="https://www.xatakaciencia.com/matematicas/wolframalpha-el-buscador-cientifico-definitivo">Stephen Wolfram</a> que, pese a su extraordinaria simplicidad, en 2004 se demostró que es Turing-completo.</p>
<!-- BREAK 8 --><p>La simulación de Rule 110 en CSS se basa en la idea de que <strong>el código CSS puede representar el estado de las células</strong> en un autómata celular, y las <strong>interacciones de los elementos HTML pueden simular las reglas de transición</strong> de Rule 110. Cada paso del autómata celular se ejecuta mediante cambios en el DOM (Modelo de Objetos del Documento) y se aplican reglas de estilo condicionales en CSS para representar los cambios de estado.</p>
<div class="article-asset-summary article-asset-normal article-asset-center">
 <div class="asset-content">
     <div class="sumario"> SQL sería otro lenguaje al que no se le suele considerar 'de programación'... y, sin embargo, permite programar la sucesión de Fibonacci (Turing-completa)</div>
   </div>
</div>
<p>En <a rel="noopener, noreferrer" href="https://notlaura.com/is-css-turing-complete/">este enlace</a> tienes todos los detalles necesarios (fragmentos de código incluidos) para comprender este peculiar experimento.</p>
<p>Lo que nos interesa es que si un modelo de autómata celular Turing-completo puede ser simulado con CSS3 y HTML5, eso significa que, <strong>si no ambos lenguajes, la suma de ambos sí puede considerarse Turing-completo</strong>... y, por tanto, un lenguaje de programación con todas las de la ley.</p>
<div class="article-asset-summary article-asset-normal article-asset-center">
 <div class="asset-content">
     <div class="sumario">Todo esto no significa que HTML+CSS sea(n) un lenguaje 'de propósito general', ni siquiera que sea(n) una opción eficiente para implementar algoritmos, pero técnicamente permite programar, y de eso trataba este artículo</div>
   </div>
</div>
<p>Imagen | Marcos Merino mediante IA + Foto de Alan Turing (dominio público)</p>
<p>En Genbeta | <a class="text-outboundlink" href="https://www.genbeta.com/desarrollo/escribe-once-lenguajes-programacion-sabiendo-solo-uno-ellos-esta-herramienta-web" data-vars-post-title="Escribe en once lenguajes de programación sabiendo sólo uno de ellos con esta herramienta web" data-vars-post-url="https://www.genbeta.com/desarrollo/escribe-once-lenguajes-programacion-sabiendo-solo-uno-ellos-esta-herramienta-web">Escribe en once lenguajes de programación sabiendo sólo uno de ellos con esta herramienta web</a></p>
<script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
                                <item>
                <title><![CDATA[Aprende a programar gratis mientras juegas con esta web. Incluye Python, CSS o JavaScript ]]></title>
                <link>https://www.genbeta.com/a-fondo/aprende-a-programar-gratis-juegas-esta-web-incluye-python-css-javascript</link>
                <guid>https://www.genbeta.com/a-fondo/aprende-a-programar-gratis-juegas-esta-web-incluye-python-css-javascript</guid>
                <pubDate>Mon, 26 Jun 2023 16:31:39 +0000</pubDate>
                                         <dc:creator>José Alberto Lizana</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/026aad/inicio/1024_2000.jpeg" alt="Aprende&#x20;a&#x20;programar&#x20;gratis&#x20;mientras&#x20;juegas&#x20;con&#x20;esta&#x20;web.&#x20;Incluye&#x20;Python,&#x20;CSS&#x20;o&#x20;JavaScript&#x20;">
    </p>
    <p>Es una realidad que <strong>programar en pocos años no será algo opcional</strong>, y pasará a ser obligatorio para conseguir uno de los puestos de trabajo que están surgiendo debido a la revolución tecnológica que vivimos. Pero también es una realidad que sentarnos a estudiar, sobre todo cuando ya se tiene una edad, es algo laborioso y pesado para muchas personas.</p>
<!-- BREAK 1 --><p>Ante esta situación hay que buscar otras formas de aprender que no sea ponerse delante de una web a leer y a practicar código. Y es por ello que os traemos <strong>un interesante proyecto que se basa en aprender a programar de manera gratuita </strong>mientras con juegos retro. Y aunque parece algo que no casa muy bien, el aprender con el jugar, lo cierto es que se hacen las lecciones realmente amenas.</p>
<h2>Una nueva forma de aprender a programar gratis</h2>
<p>La página en cuestión es <a rel="noopener, noreferrer" href="https://www.codedex.io/">Codedex.io</a> y nada más entrar nos encontramos una interfaz que a nosotros particularmente <strong>nos encanta al trasladarnos a los juegos antiguos</strong>. En esta primera pantalla se va a tener que pulsar en Espacio para comenzar a responder preguntas sobre lo que quieres conseguir desarrollando para iniciar el juego adecuado para ti.</p>
<!-- BREAK 2 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=807 width=1417 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/da6d4c/panel/450_1000.webp 450w, https://i.blogs.es/da6d4c/panel/650_1200.webp 681w,https://i.blogs.es/da6d4c/panel/1024_2000.webp 1024w, https://i.blogs.es/da6d4c/panel/1366_2000.webp 1366w" src="https://i.blogs.es/da6d4c/panel/450_1000.webp" alt="Panel" onerror="this.src='https://i.blogs.es/da6d4c/panel/450_1000.jpeg';this.srcset='https://i.blogs.es/da6d4c/panel/450_1000.jpeg 450w, https://i.blogs.es/da6d4c/panel/650_1200.jpeg 681w,https://i.blogs.es/da6d4c/panel/1024_2000.jpeg 1024w, https://i.blogs.es/da6d4c/panel/1366_2000.jpeg 1366w';return false;">
   <img alt="Panel" class="centro_sinmarco" src="https://i.blogs.es/da6d4c/panel/450_1000.webp">
   
      </div>
</div>
<p>Todo comienza con una muy buena historia que va a guiarte por toda esta aventura de aprendizaje en un lenguaje concreto. A partir de aquí <strong>se presentará una interfaz con diferentes apartados y diferentes niveles que vas a tener que ir superando</strong>, hasta llegar al final para poder crear tu propio proyecto.</p>
<!-- BREAK 3 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=905 width=1819 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/84dbea/codigo/450_1000.webp 450w, https://i.blogs.es/84dbea/codigo/650_1200.webp 681w,https://i.blogs.es/84dbea/codigo/1024_2000.webp 1024w, https://i.blogs.es/84dbea/codigo/1366_2000.webp 1366w" src="https://i.blogs.es/84dbea/codigo/450_1000.webp" alt="Codigo" onerror="this.src='https://i.blogs.es/84dbea/codigo/450_1000.jpeg';this.srcset='https://i.blogs.es/84dbea/codigo/450_1000.jpeg 450w, https://i.blogs.es/84dbea/codigo/650_1200.jpeg 681w,https://i.blogs.es/84dbea/codigo/1024_2000.jpeg 1024w, https://i.blogs.es/84dbea/codigo/1366_2000.jpeg 1366w';return false;">
   <img alt="Codigo" class="centro_sinmarco" src="https://i.blogs.es/84dbea/codigo/450_1000.webp">
   
      </div>
</div>
<p>Dentro de cada uno de los ejercicios del bloque (por los que se consigue experiencia al completar) se puede encontrar una consola a la derecha para poder ir <strong>ejecutando el código que se va proponiendo en las lecciones que se encuentran a la derecha.</strong> Para ir guardando todo este progreso es importante crear una cuenta con la que se irá sincronizando en tiempo real.</p>
<!-- BREAK 4 --><div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.genbeta.com/actualidad/aprende-a-programar-python-gratis-este-curso-muy-visual-acceso-a-todo-codigo" class="pivot-outboundlink" data-vars-post-title="Aprende a programar con Python gratis con este curso: muy visual y con acceso a todo el código ">
     <img alt="Aprende&#x20;a&#x20;programar&#x20;con&#x20;Python&#x20;gratis&#x20;con&#x20;este&#x20;curso&#x3A;&#x20;muy&#x20;visual&#x20;y&#x20;con&#x20;acceso&#x20;a&#x20;todo&#x20;el&#x20;c&#x00F3;digo&#x20;" width="375" height="142" src="https://i.blogs.es/239e03/photo-1624953587687-daf255b6b80a/375_142.webp" onerror='this.src="https://i.blogs.es/239e03/photo-1624953587687-daf255b6b80a/375_142.jpeg"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.genbeta.com/actualidad/aprende-a-programar-python-gratis-este-curso-muy-visual-acceso-a-todo-codigo" class="desvio-taxonomy-anchor pivot-outboundlink" data-vars-post-title="Aprende a programar con Python gratis con este curso: muy visual y con acceso a todo el código ">En Genbeta</a>
    </div>
    <a href="https://www.genbeta.com/actualidad/aprende-a-programar-python-gratis-este-curso-muy-visual-acceso-a-todo-codigo" class="desvio-title js-desvio-title pivot-outboundlink" data-vars-post-title="Aprende a programar con Python gratis con este curso: muy visual y con acceso a todo el código ">Aprende a programar con Python gratis con este curso: muy visual y con acceso a todo el código </a>
   </div>
  </div>
 </div>
</div>
<p>Hay que destacar que en esta web se va a poder aprender <a rel="noopener, noreferrer" href="https://www.codedex.io/python">Python</a>, <a rel="noopener, noreferrer" href="https://www.codedex.io/html">HTML</a>, <a rel="noopener, noreferrer" href="https://www.codedex.io/javascript">JavaScript</a> y <a rel="noopener, noreferrer" href="https://www.codedex.io/css">CSS</a> así como<strong> encontrar diferentes retos para poder practicar todo lo que se ha aprendido</strong>, independientemente de la formación a través de juegos que hemos comentado. Es por ello que estamos ante una interesante forma de aprender nuevos lenguajes de programación, con una experiencia de fondo que sin duda te va a encantar si eres amante de los juego retro.</p>
<!-- BREAK 5 --><p>En Genbeta | <a class="text-outboundlink" href="https://www.genbeta.com/a-fondo/mejores-cursos-para-aprender-a-programar-cero-gratis" data-vars-post-title="Los mejores cursos para aprender a programar desde cero gratis" data-vars-post-url="https://www.genbeta.com/a-fondo/mejores-cursos-para-aprender-a-programar-cero-gratis">Los mejores cursos para aprender a programar desde cero gratis</a></p>
<script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
                                <item>
                <title><![CDATA[Esta foto de una Game Boy... no es una foto: es puro código CSS ]]></title>
                <link>https://www.genbeta.com/desarrollo/esta-foto-game-boy-no-foto-puro-codigo-css</link>
                <guid>https://www.genbeta.com/desarrollo/esta-foto-game-boy-no-foto-puro-codigo-css</guid>
                <pubDate>Fri, 27 Jan 2023 18:39:46 +0000</pubDate>
                                         <dc:creator>Marcos Merino</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/0e0ce4/gb/1024_2000.jpeg" alt="Esta&#x20;foto&#x20;de&#x20;una&#x20;Game&#x20;Boy...&#x20;no&#x20;es&#x20;una&#x20;foto&#x3A;&#x20;es&#x20;puro&#x20;c&#x00F3;digo&#x20;CSS&#x20;">
    </p>
    <p>Este artículo está encabezado por la imagen de una Nintendo Game Boy... cuya única peculiaridad es que, antes de que hiciéramos la pertinente captura, <strong>no era una imagen ni por asomo: sólo el resultado de utilizar código CSS</strong> (siglas de <a class="text-outboundlink" href="https://www.genbeta.com/herramientas/seis-webs-y-canales-de-youtube-para-aprender-css-desde-0-hasta-nivel-experto" data-vars-post-title="Seis webs y canales de YouTube para aprender CSS desde 0 hasta nivel experto" data-vars-post-url="https://www.genbeta.com/herramientas/seis-webs-y-canales-de-youtube-para-aprender-css-desde-0-hasta-nivel-experto">'hojas de estilo de cascada'</a>) en una página web.</p>
<!-- BREAK 1 --><p>La imagen en cuestión es una creación del desarrollador y streamer español 'Manz', que la publicó ayer en Twitter acompañado de sendos enlaces a <a rel="noopener, noreferrer" href="https://manzdev.github.io/twitch-gameboy-css/">una demo visual</a> y al correspondiente <a rel="noopener, noreferrer" href="https://github.com/ManzDev/gameboycss">repositorio de código</a>. Te animamos a entrar en el primero e intentar hacer clic con el botón derecho sobre la 'imagen'... <strong>¡A ver si eres capaz de lograr que aparezca aquello de 'Guardar imagen como'!</strong></p>
<blockquote class="twitter-tweet"><p lang="es" dir="ltr">⬅ Izquierda: La fotografía original<br>➡ Derecha: Código CSS (sin usar imágenes)<br><br>🤯¿Qué te parece?<br>&lt;👇&gt; Links en el siguiente tweet <a href="https://t.co/z6aLLp9O5U">pic.twitter.com/z6aLLp9O5U</a></p>&mdash; Manz 🇮🇨⚡👾 (@Manz) <a href="https://twitter.com/Manz/status/1618602836593631233?ref_src=twsrc%5Etfw">January 26, 2023</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>Y si no sólo te has quedado boquiabierto con el truco, sino que te pica la curiosidad sobre cómo es posible hacer algo así, sigue leyendo (claro que, si por el contrario, ya tienes una idea básica de cómo hacerlo, revisar el enlace a GitHub te mostrará las herramientas y recursos usados por Manz para lograrlo).</p>
<!-- BREAK 2 --><h2>Una explicación rápida</h2>
<p>Crear una imagen usando únicamente tecnología CSS <strong>se diferencia poco o nada de la creación de un gráfico vectorial (esas imágenes que puedes ampliar indefinidamente sin que se pixelen)</strong>; lo que ocurre es que, en lugar de usar para ello un software de ilustración vectorial como Adobe Illustrator usamos una dosis generosa de código CSS (y algo de HTML para poder mostrar el resultado, por supuesto).</p>
<!-- BREAK 3 --><p>Al igual que ocurre con las vectoriales, la forma de crear una imagen CSS <strong>se basa en ir separando y superponiendo cada capa de la misma</strong>. Por supuesto, cuanto mayor es el realismo buscando en el resultado, mayor número de capas hay que crear para no simplificar en exceso las formas y colores.</p>
<div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
     <div class="caption-img ">
                    <a rel="noopener, noreferrer" href="https://medium.com/coding-artist/a-beginners-guide-to-pure-css-images-ef9a5d069dd2">
         <img class="centro_sinmarco" height=556 width=720 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/e79e8f/capas/450_1000.webp 450w, https://i.blogs.es/e79e8f/capas/650_1200.webp 681w,https://i.blogs.es/e79e8f/capas/1024_2000.webp 1024w, https://i.blogs.es/e79e8f/capas/1366_2000.webp 1366w" src="https://i.blogs.es/e79e8f/capas/450_1000.webp" alt="Capas" onerror="this.src='https://i.blogs.es/e79e8f/capas/450_1000.jpeg';this.srcset='https://i.blogs.es/e79e8f/capas/450_1000.jpeg 450w, https://i.blogs.es/e79e8f/capas/650_1200.jpeg 681w,https://i.blogs.es/e79e8f/capas/1024_2000.jpeg 1024w, https://i.blogs.es/e79e8f/capas/1366_2000.jpeg 1366w';return false;">
    <img alt="Capas" class="centro_sinmarco" src="https://i.blogs.es/e79e8f/capas/450_1000.webp">
     </a>
 
        <span>Créditos: Miguel Mangialardi</span>
   </div>
   </div>
</div>
<p>Eso, en el caso del CSS, exige lo siguiente:</p>
<ul>
  <li>Un campo 'div' para cada capa.</li>
  <li>Una clase CSS asignada a cada 'div'.</li>
  <li>Clases CSS complementarias que definan los estilos a aplicar al citado 'div'.</li>
</ul>
<p>Esto se puede hacer directamente tecleando código CSS y HTML en un editor de texto, o bien recurriendo a los múltiples frameworks y herramientas de desarrollo web disponibles en el mercado.</p>
<!-- BREAK 4 --><div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.xataka.com/basics/como-vectorizar-imagen" class="pivot-outboundlink" target="_blank" data-vars-post-title="Cómo vectorizar una imagen ">
     <img alt="C&#x00F3;mo&#x20;vectorizar&#x20;una&#x20;imagen&#x20;" width="375" height="142" src="https://i.blogs.es/3814a0/vectorizar/375_142.webp" onerror='this.src="https://i.blogs.es/3814a0/vectorizar/375_142.jpg"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.xataka.com/basics/como-vectorizar-imagen" class="desvio-taxonomy-anchor pivot-outboundlink m-crosspost" target="_blank" data-vars-post-title="Cómo vectorizar una imagen ">En Xataka</a>
    </div>
    <a href="https://www.xataka.com/basics/como-vectorizar-imagen" class="desvio-title js-desvio-title pivot-outboundlink" target="_blank" data-vars-post-title="Cómo vectorizar una imagen ">Cómo vectorizar una imagen </a>
   </div>
  </div>
 </div>
</div>
<p>Y es que el CSS no permite sólo crear formas geométricas y colores, también degradados... y sombras. <strong>Y las sombras pueden resultar fundamentales a la hora de dotar de volumen (y, por tanto, de realismo)</strong> a una imagen antes plana. La diferencia, como se observa en la siguiente es notable; y para lograrlas basta con utilizar las propiedades <em>'text-shadow'</em> y <em>'box-shadow'</em> del estándar CSS:</p>
<!-- BREAK 5 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
     <div class="caption-img ">
                    <a rel="noopener, noreferrer" href="https://dev.to/mustapha/i-made-a-working-gameboy-css-art-try-it-out-4m1j">
         <img class="centro_sinmarco" height=356 width=880 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/ed709e/uoq7ip0z6d8ikb1xghmb/450_1000.webp 450w, https://i.blogs.es/ed709e/uoq7ip0z6d8ikb1xghmb/650_1200.webp 681w,https://i.blogs.es/ed709e/uoq7ip0z6d8ikb1xghmb/1024_2000.webp 1024w, https://i.blogs.es/ed709e/uoq7ip0z6d8ikb1xghmb/1366_2000.webp 1366w" src="https://i.blogs.es/ed709e/uoq7ip0z6d8ikb1xghmb/450_1000.webp" alt="Game Boy amarilla CSS" onerror="this.src='https://i.blogs.es/ed709e/uoq7ip0z6d8ikb1xghmb/450_1000.jpeg';this.srcset='https://i.blogs.es/ed709e/uoq7ip0z6d8ikb1xghmb/450_1000.jpeg 450w, https://i.blogs.es/ed709e/uoq7ip0z6d8ikb1xghmb/650_1200.jpeg 681w,https://i.blogs.es/ed709e/uoq7ip0z6d8ikb1xghmb/1024_2000.jpeg 1024w, https://i.blogs.es/ed709e/uoq7ip0z6d8ikb1xghmb/1366_2000.jpeg 1366w';return false;">
    <img alt="Game Boy amarilla CSS" class="centro_sinmarco" src="https://i.blogs.es/ed709e/uoq7ip0z6d8ikb1xghmb/450_1000.webp">
     </a>
 
        <span>Créditos: Mustapha Aouas</span>
   </div>
   </div>
</div>
<p>Lo anterior forma parte de otro ejemplo magnífico de Game Boy creada íntegramente con CSS, sólo que esta incluye sus propios juegos desarrollados con JavaScript:</p>
<!-- BREAK 6 --><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Check out this CSS art of a Gameboy I made with a small peculiarity, it&#39;s actually playable 🕹<br>Link 👉  <a href="https://t.co/NhuY6SguLv">https://t.co/NhuY6SguLv</a><br><br>What&#39;s your highest score? Mine is 90...almost 💯<br><br>Use your keyboard if you&#39;re on a laptop<br>Made with the <a href="https://twitter.com/hashtag/angular?src=hash&amp;ref_src=twsrc%5Etfw">#angular</a> game engine &amp; <a href="https://twitter.com/hashtag/javascript?src=hash&amp;ref_src=twsrc%5Etfw">#javascript</a> <a href="https://twitter.com/hashtag/html?src=hash&amp;ref_src=twsrc%5Etfw">#html</a> <a href="https://twitter.com/hashtag/css?src=hash&amp;ref_src=twsrc%5Etfw">#css</a> <a href="https://t.co/oavVNkAsqV">pic.twitter.com/oavVNkAsqV</a></p>&mdash; Mustapha Aouas (@TheAngularGuy) <a href="https://twitter.com/TheAngularGuy/status/1463889796158398466?ref_src=twsrc%5Etfw">November 25, 2021</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>Una vez que has entendido eso, quizá quieras pasarte por el canal de YouTube de Manz, donde <strong>nos muestra un 'paso a paso' cómo crear una Game Boy con CSS</strong>:</p>
<!-- BREAK 7 --><div class="article-asset-video article-asset-large article-asset-center">
 <div class="asset-content">
  <div class="base-asset-video">
   <iframe width="650" height="366" src="//www.youtube.com/embed/OjI8jMcKN8s" allowfullscreen></iframe>
  </div>
 </div>
</div>
<script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
                                <item>
                <title><![CDATA[La historia de por qué los enlaces son azules y desde cuándo]]></title>
                <link>https://www.genbeta.com/navegadores/historia-que-hiperenlaces-azules-cuando</link>
                <guid>https://www.genbeta.com/navegadores/historia-que-hiperenlaces-azules-cuando</guid>
                <pubDate>Thu, 16 Sep 2021 18:47:09 +0000</pubDate>
                                         <dc:creator>Marcos Merino</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/2c27bc/hiperenlace/1024_2000.jpg" alt="La&#x20;historia&#x20;de&#x20;por&#x20;qu&#x00E9;&#x20;los&#x20;enlaces&#x20;son&#x20;azules&#x20;y&#x20;desde&#x20;cu&#x00E1;ndo">
    </p>
    <p>Párate un momento a pensar <strong>cómo visualizas mentalmente un hiperenlace</strong>; <strong>asociamos de tal manera ese concepto con el adjetivo 'azul'</strong> que cuando, hace cinco años, <a class="text-outboundlink" href="https://www.xataka.com/servicios/google-tine-de-negro-la-web-con-su-experimento-adios-al-azul-en-los-enlaces-de-su-buscador" data-vars-post-title="Google tiñe de negro la web con su experimento: ¿adiós al azul en los enlaces de su buscador?" data-vars-post-url="https://www.xataka.com/servicios/google-tine-de-negro-la-web-con-su-experimento-adios-al-azul-en-los-enlaces-de-su-buscador">Google se atrevió a 'pintar' los suyos de negro</a>, resultó tan chocante que el asunto se convirtió en noticia.</p>
<!-- BREAK 1 -->
<p>Bien es cierto que <strong>desde que existen las hojas de estilo CSS los enlaces puede tener cualquier color y formato</strong>, pero azul (y subrayado) es el aspecto por defecto de los hiperenlaces en todos los navegadores (y hasta en procesadores de texto, como MS Word). Y lo ha sido desde… bueno, desde siempre.<a rel="noopener, noreferrer" href="https://blog.mozilla.org/en/internet-culture/deep-dives/why-are-hyperlinks-blue/"> ¿O no?</a></p>
<!-- BREAK 2 --><!--more--><p>Resulta interesante <strong>preguntarse acerca del cuándo y el 'por qué' se vinculó</strong> —nunca mejor dicho— el concepto de hiperenlace con el color azul, habida cuenta de que dicho concepto es anterior a la generalización de los monitores a color.</p>
<!-- BREAK 3 -->
<p>Hace unas semanas, <a rel="noopener, noreferrer" href="https://blog.mozilla.org/en/internet-culture/deep-dives/why-are-hyperlinks-blue/">en el blog corporativo de Mozilla</a> (fundación desarrolladora del navegador Firefox) <strong>intentaban responder a esta pregunta</strong>, recopilando toda una serie de datos de gran interés.</p>
<!-- BREAK 4 --><div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.xataka.com/historia-tecnologica/cuando-mosaic-dominaba-el-mundo-de-los-navegadores" class="pivot-outboundlink" target="_blank" data-vars-post-title="Cuando Mosaic dominaba el mundo (de los navegadores)">
     <img alt="Cuando&#x20;Mosaic&#x20;dominaba&#x20;el&#x20;mundo&#x20;&#x28;de&#x20;los&#x20;navegadores&#x29;" width="375" height="142" src="https://i.blogs.es/5bfa64/mosaic3/375_142.webp" onerror='this.src="https://i.blogs.es/5bfa64/mosaic3/375_142.jpg"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.xataka.com/historia-tecnologica/cuando-mosaic-dominaba-el-mundo-de-los-navegadores" class="desvio-taxonomy-anchor pivot-outboundlink m-crosspost" target="_blank" data-vars-post-title="Cuando Mosaic dominaba el mundo (de los navegadores)">En Xataka</a>
    </div>
    <a href="https://www.xataka.com/historia-tecnologica/cuando-mosaic-dominaba-el-mundo-de-los-navegadores" class="desvio-title js-desvio-title pivot-outboundlink" target="_blank" data-vars-post-title="Cuando Mosaic dominaba el mundo (de los navegadores)">Cuando Mosaic dominaba el mundo (de los navegadores)</a>
   </div>
  </div>
 </div>
</div>
<h2>Érase una vez el hiperenlace (pero no era azul oscuro)</h2>

<p><strong>El hiperenlace nació antes incluso que la World Wide Web</strong> o la misma informática personal, con el <a rel="noopener, noreferrer" href="https://es.wikipedia.org/wiki/Proyecto_Xanad%C3%BA">Proyecto Xanadú</a> en 1964, aunque bien es cierto que nunca llegó a pasar de lo teórico.</p>
<!-- BREAK 5 -->
<p>El primer paso en el mundo de lo práctico de los hiperenlaces llegó de la mano del software de publicación HyperTIES (para sistemas DOS). <strong>Y sí, ya entonces eran azules… pero azul cian</strong>, no el típico tono de azul que usamos hoy en día en los enlaces de las webs.</p>
<!-- BREAK 6 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
     <div class="caption-img ">
                   <img class="centro_sinmarco" height=301 width=640 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/7cb6f0/hyper/450_1000.webp 450w, https://i.blogs.es/7cb6f0/hyper/650_1200.webp 681w,https://i.blogs.es/7cb6f0/hyper/1024_2000.webp 1024w, https://i.blogs.es/7cb6f0/hyper/1366_2000.webp 1366w" src="https://i.blogs.es/7cb6f0/hyper/450_1000.webp" alt="Hyper" onerror="this.src='https://i.blogs.es/7cb6f0/hyper/450_1000.jpg';this.srcset='https://i.blogs.es/7cb6f0/hyper/450_1000.jpg 450w, https://i.blogs.es/7cb6f0/hyper/650_1200.jpg 681w,https://i.blogs.es/7cb6f0/hyper/1024_2000.jpg 1024w, https://i.blogs.es/7cb6f0/hyper/1366_2000.jpg 1366w';return false;">
   <img alt="Hyper" class="centro_sinmarco" src="https://i.blogs.es/7cb6f0/hyper/450_1000.webp">
   
        <span>Captura de pantalla de HyperTIES.</span>
   </div>
   </div>
</div>
<p>Cuando Windows 1.0 permitió el desembarco de las interfaces gráficas a 'todo' color, también traía bajo el brazo <strong>otro elemento que seguimos usando hoy en día: los hiperenlaces con subrayado</strong>. Pero dichos hiperenlaces seguían siendo negros, pese al abundante uso del azul en los encabezados y bordes de las ventanas.</p>
<!-- BREAK 7 -->
<p>Cuando, dos años más tarde, Tim Berners-Lee <a class="text-outboundlink" href="https://www.genbeta.com/actualidad/codigo-original-world-wide-web-sale-a-subasta-como-nft-a-partir-1-000-euros" data-vars-post-title="El código original de la  World Wide Web sale a subasta como un NFT a partir de 1.000 euros" data-vars-post-url="https://www.genbeta.com/actualidad/codigo-original-world-wide-web-sale-a-subasta-como-nft-a-partir-1-000-euros">empezó a trabajar en su proyecto de una World Wide Web</a>, su navegador WorldWideWeb (escrito todo junto) presentaba <strong>los hiperenlaces con subrayado, pero seguían apareciendo en blanco y negro</strong>.</p>
<!-- BREAK 8 --><div class="article-asset-summary article-asset-normal"><div class="asset-content"><div class="sumario">'#0000FF' es el código hexadecimal del azul oscuro de nuestros hiperenlaces</div></div></div><h2>Cuando Apple y Microsoft marcaron tendencia, y Mosaic se sumó</h2>

<p><strong>La vinculación del azul a los hiperenlaces tuvo que esperar a los años 90</strong>, pero curiosamente llegaron de la mano de Apple y Microsoft, no de los recién aparecidos navegadores web: el software <strong>HyperCard de Apple ya coloreaba en azul oscuro sus enlaces</strong> cuando se hacía clic en ellos (aunque seguían siendo negros por defecto) y <strong>Windows 3.1 ya hacía lo propio con los iconos en 1992</strong>, contribuyendo a normalizar la vinculación entre el azul y los elementos interactivos de la interfaz.</p>
<!-- BREAK 9 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
     <div class="caption-img ">
                   <img class="centro_sinmarco" height=467 width=1024 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/ad1d5d/windows-3.1/450_1000.webp 450w, https://i.blogs.es/ad1d5d/windows-3.1/650_1200.webp 681w,https://i.blogs.es/ad1d5d/windows-3.1/1024_2000.webp 1024w, https://i.blogs.es/ad1d5d/windows-3.1/1366_2000.webp 1366w" src="https://i.blogs.es/ad1d5d/windows-3.1/450_1000.webp" alt="Windows 3 1" onerror="this.src='https://i.blogs.es/ad1d5d/windows-3.1/450_1000.jpg';this.srcset='https://i.blogs.es/ad1d5d/windows-3.1/450_1000.jpg 450w, https://i.blogs.es/ad1d5d/windows-3.1/650_1200.jpg 681w,https://i.blogs.es/ad1d5d/windows-3.1/1024_2000.jpg 1024w, https://i.blogs.es/ad1d5d/windows-3.1/1366_2000.jpg 1366w';return false;">
   <img alt="Windows 3 1" class="centro_sinmarco" src="https://i.blogs.es/ad1d5d/windows-3.1/450_1000.webp">
   
        <span>Windows 3.1.</span>
   </div>
   </div>
</div>
<p>Un año más tarde, por fin, la versión 0.13 del navegador Mosaic anunciaba en <a rel="noopener, noreferrer" href="http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1993q2.messages/47.html">su listado de cambios</a> <strong>la adopción de los hipervínculos azules con subrayado continuo para los enlaces no visitados</strong>, y púrpura con subrayado discontinuo para los ya visitados.</p>
<!-- BREAK 10 -->
<p>Ese mismo año, el navegador Cello adoptó también el aspecto 'azul subrayado'… pero para representar los encabezados de las webs (h1, h2, etc). <strong>Al año siguiente (1994), tanto Cello como el recién nacido Netscape Navigator adoptaron el naciente 'estándar' impuesto por Mosaic</strong>. Internet Explorer hizo lo propio cuando nació en 1995.</p>
<!-- BREAK 11 --><div class="article-asset-image article-asset-large article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=720 width=1280 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/14bf50/netscape/450_1000.webp 450w, https://i.blogs.es/14bf50/netscape/650_1200.webp 681w,https://i.blogs.es/14bf50/netscape/1024_2000.webp 1024w, https://i.blogs.es/14bf50/netscape/1366_2000.webp 1366w" src="https://i.blogs.es/14bf50/netscape/450_1000.webp" alt="Netscape" onerror="this.src='https://i.blogs.es/14bf50/netscape/450_1000.jpg';this.srcset='https://i.blogs.es/14bf50/netscape/450_1000.jpg 450w, https://i.blogs.es/14bf50/netscape/650_1200.jpg 681w,https://i.blogs.es/14bf50/netscape/1024_2000.jpg 1024w, https://i.blogs.es/14bf50/netscape/1366_2000.jpg 1366w';return false;">
   <img alt="Netscape" class="centro_sinmarco" src="https://i.blogs.es/14bf50/netscape/450_1000.webp">
   
      </div>
</div>
<p>Sin embargo, si bien el 'cuándo' ha quedado suficientemente bien establecido, el por qué sigue siendo una incógnita. <strong>No se puede atribuir a un criterio de estandarización</strong> del W3C, pues no se creó hasta 1994; y la relación de contraste entre el azul oscuro y el texto negro es de 2.3:1, <strong>claramente insuficiente si el contraste hubiera sido el fin perseguido</strong>.</p>
<!-- BREAK 12 -->
<p>Hay que buscar, por tanto, el motivo en otra parte: todo parece indicar que <strong>los desarrolladores de Mosaic se sumaron a una tendencia que ya habían inaugurado 'offline' tanto Apple como Microsoft</strong>, de vincular 'azul' e 'interacción'.</p>
<!-- BREAK 13 --><script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
                                <item>
                <title><![CDATA[Código CSS anidado: la W3C aprueba un borrador que introduciría en el lenguaje CSS nativo esta funcionalidad]]></title>
                <link>https://www.genbeta.com/desarrollo/codigo-css-anidado-w3c-aprueba-borrador-que-introduciria-lenguaje-css-nativo-esta-funcionalidad</link>
                <guid>https://www.genbeta.com/desarrollo/codigo-css-anidado-w3c-aprueba-borrador-que-introduciria-lenguaje-css-nativo-esta-funcionalidad</guid>
                <pubDate>Wed, 28 Jul 2021 17:22:03 +0000</pubDate>
                                         <dc:creator>Marcos Merino</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/783121/css/1024_2000.jpg" alt="C&#x00F3;digo&#x20;CSS&#x20;anidado&#x3A;&#x20;la&#x20;W3C&#x20;aprueba&#x20;un&#x20;borrador&#x20;que&#x20;introducir&#x00ED;a&#x20;en&#x20;el&#x20;lenguaje&#x20;CSS&#x20;nativo&#x20;esta&#x20;funcionalidad">
    </p>
    <p>Las hojas de estilo en cascada (más conocidas como CSS) <strong>son el lenguaje de diseño (y una de las tres grandes bases, junto a HTML y JavaScript) de la World Wide Web</strong>, el lenguaje que permite a los desarrolladores dar formato a las páginas web aplicándoles estilos que alteran aspectos como colores, tipografías o espaciados.</p>
<!-- BREAK 1 -->
<p>Y ahora, este lenguaje nacido en 1996 está quizá a punto de <strong>experimentar uno de los mayores cambios de su historia</strong>. <a rel="noopener, noreferrer" href="https://twitter.com/TerribleMia/status/1420072006188376069">Según publica Miriam Suzanne</a>, miembro del CSS Working Group del W3C (el organismo encargado de establecer los estándares de las tecnologías web), se ha aprobado el paso de la especificación de CSS Nesting de <a rel="noopener, noreferrer" href="https://drafts.csswg.org/css-nesting/">la actual fase de 'borrador para editores'</a> <strong>a la de 'primer borrador de trabajo público'</strong>.</p>
<!-- BREAK 2 --><!--more--><p>Esto lo introduce en el proceso de revisión de propuestas conocido como 'Recommendation Track', <strong>lo que puede desembocar en su inclusión en la versión estándar del lenguaje CSS</strong>. La versión online, aún clasificada como 'borrador para editores', especifica que la propuesta estaba disponible "únicamente para su debate" y que "su publicación aquí no implica la aprobación de su contenido por parte del W3C".</p>
<!-- BREAK 3 -->
<p>Pero, <strong>¿qué es 'CSS Nesting' (literalmente, 'anidamiento CSS')?</strong> Fundamentalmente, se trata de permitir que las reglas CSS puedan expresarse de forma anidada, incluyendo <strong>bloques de código unos dentro de otros</strong>, una opción no disponible por ahora de manera nativa.</p>
<!-- BREAK 4 --><div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.genbeta.com/herramientas/seis-webs-y-canales-de-youtube-para-aprender-css-desde-0-hasta-nivel-experto" class="pivot-outboundlink" data-vars-post-title="Seis webs y canales de YouTube para aprender CSS desde 0 hasta nivel experto">
     <img alt="Seis&#x20;webs&#x20;y&#x20;canales&#x20;de&#x20;YouTube&#x20;para&#x20;aprender&#x20;CSS&#x20;desde&#x20;0&#x20;hasta&#x20;nivel&#x20;experto" width="375" height="142" src="https://i.blogs.es/ab3f2b/css-miami-desktop_-110995239-/375_142.webp" onerror='this.src="https://i.blogs.es/ab3f2b/css-miami-desktop_-110995239-/375_142.jpg"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.genbeta.com/herramientas/seis-webs-y-canales-de-youtube-para-aprender-css-desde-0-hasta-nivel-experto" class="desvio-taxonomy-anchor pivot-outboundlink" data-vars-post-title="Seis webs y canales de YouTube para aprender CSS desde 0 hasta nivel experto">En Genbeta</a>
    </div>
    <a href="https://www.genbeta.com/herramientas/seis-webs-y-canales-de-youtube-para-aprender-css-desde-0-hasta-nivel-experto" class="desvio-title js-desvio-title pivot-outboundlink" data-vars-post-title="Seis webs y canales de YouTube para aprender CSS desde 0 hasta nivel experto">Seis webs y canales de YouTube para aprender CSS desde 0 hasta nivel experto</a>
   </div>
  </div>
 </div>
</div>
<p>Todo esto con el fin de:</p>

<ol>
<li>Hacer el código más <strong>legible</strong>.</li>
<li>Aumentar su modularidad y la <strong>facilidad de mantenimiento</strong> de las hojas de estilo.</li>
<li><strong>Reducir la duplicación</strong> de código.</li>
</ol>

<p>Veamos un ejemplo:</p>
<div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=796 width=631 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/038981/css_anidado/450_1000.webp 450w, https://i.blogs.es/038981/css_anidado/650_1200.webp 681w,https://i.blogs.es/038981/css_anidado/1024_2000.webp 1024w, https://i.blogs.es/038981/css_anidado/1366_2000.webp 1366w" src="https://i.blogs.es/038981/css_anidado/450_1000.webp" alt="Css Anidado" onerror="this.src='https://i.blogs.es/038981/css_anidado/450_1000.jpg';this.srcset='https://i.blogs.es/038981/css_anidado/450_1000.jpg 450w, https://i.blogs.es/038981/css_anidado/650_1200.jpg 681w,https://i.blogs.es/038981/css_anidado/1024_2000.jpg 1024w, https://i.blogs.es/038981/css_anidado/1366_2000.jpg 1366w';return false;">
   <img alt="Css Anidado" class="centro_sinmarco" src="https://i.blogs.es/038981/css_anidado/450_1000.webp">
   
      </div>
</div>
<p>Hoy en día, cuando escribimos CSS, nos vemos obligados a dominar los 'selectores CSS' para definir las reglas aplicables a nuestro sitio y precisar a qué elementos queremos aplicar determinado estilo. <strong>El objetivo del anidamiento CSS es que tengamos que utilizarlos mucho menos a menudo</strong>, porque usando el indentado ya estaremos supliendo su labor (de una manera, además, mucho más legible para humanos).</p>
<!-- BREAK 5 -->
<p>Esto <strong>conllevará algunos cambios de sintaxis</strong>. Por ejemplo, '&amp;' pasará a convertirse en el selector de anidamiento para establecer reglas condicionales. Así en</p>
<!-- BREAK 6 -->
<p><code>.ejemplo {
  background: grey;</p>

<p>&amp;:hover {
    background: red;
  }
}</code></p>

<p><strong>En este ejemplo</strong>, el selector <em>&amp;:hover</em> está haciendo referencia, realmente, a <em>.ejemplo:hover</em>; es decir, a aquellos casos en que tengamos el ratón sobre el elemento 'ejemplo'.</p>
<!-- BREAK 7 -->
<h2>Trabajar desde ya con el nuevo borrador</h2>

<p>Pero, ¿<strong>qué hacer si nos ha gustado la idea</strong> y queremos empezar a trabajar con CSS siguiendo las recomendaciones del borrador? Fácil: <strong>los navegadores no entenderían la nueva sintaxis</strong> y la web resultante no podría visualizarse correctamente.</p>
<!-- BREAK 8 -->
<p><strong>A no ser, claro, que recurriéramos a una herramienta de transformación de CSS como PostCSS</strong>, que ya cuenta con un plug-in (<em><a rel="noopener, noreferrer" href="https://github.com/csstools/postcss-nesting">postcss-nesting</a></em>) para transformar CSS anidado en el CSS ajustado al actual estándar…</p>
<!-- BREAK 9 -->
<p>… así, utilizando <a class="text-outboundlink" href="https://www.genbeta.com/desarrollo/node-js-y-npm" data-vars-post-title="Node.js y npm" data-vars-post-url="https://www.genbeta.com/desarrollo/node-js-y-npm">herramientas de terminal como npm</a> y npx, podremos instalar PostCSS y usarlo luego para <strong>transformar ficheros <em>.pcss</em> (anidados) en <em>.css</em></strong>.</p>
<!-- BREAK 10 -->
<p>Tanto esta opción como <strong>una futura oficialización del 'CSS Nesting' constituyen alternativas al uso de preprocesadores CSS</strong> <a class="text-outboundlink" href="https://www.genbeta.com/desarrollo/sass-vs-less-gana-sass" data-vars-post-title="SASS vs. LESS... ¿gana SASS?" data-vars-post-url="https://www.genbeta.com/desarrollo/sass-vs-less-gana-sass">tan populares como SASS</a> (aunque éstos cuentan con otros atractivos además del uso del anidamiento).</p>
<!-- BREAK 11 --><div class="article-asset-video article-asset-large">
 <div class="asset-content">
  <div class="base-asset-video">
   <div class="js-dailymotion">
    <script type="application/json">
                          {"videoId":"x80zb8m","autoplay":true,"title":"INTERNET MÁS RÁPIDO: Todo lo que tienes que saber sobre HTTP 3", "tag":""}
                  </script>
   </div>
  </div>
 </div>
</div>
<script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
                                <item>
                <title><![CDATA[Así puedes crear un juego de 'Elige tu propia aventura' basado en HTML usando el editor Twine 2]]></title>
                <link>https://www.genbeta.com/desarrollo/asi-puedes-crear-juego-elige-tu-propia-aventura-basado-html-usando-editor-twine-2</link>
                <guid>https://www.genbeta.com/desarrollo/asi-puedes-crear-juego-elige-tu-propia-aventura-basado-html-usando-editor-twine-2</guid>
                <pubDate>Sun, 09 May 2021 17:52:52 +0000</pubDate>
                                         <dc:creator>Marcos Merino</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/10211b/twine_2/1024_2000.jpg" alt="As&#x00ED;&#x20;puedes&#x20;crear&#x20;un&#x20;juego&#x20;de&#x20;&#x27;Elige&#x20;tu&#x20;propia&#x20;aventura&#x27;&#x20;basado&#x20;en&#x20;HTML&#x20;usando&#x20;el&#x20;editor&#x20;Twine&#x20;2">
    </p>
    <p>Muchos de vosotros recordaréis y <strong>habréis leído/jugado la colección de libros 'Elige tu propia aventura'</strong>, que <a class="text-outboundlink" href="https://www.xataka.com/otros/los-ultimos-pasos-de-la-ficcion-interactiva-muere-r-a-montgomery-editor-y-autor-de-elige-tu-propia-aventura" data-vars-post-title="Los últimos pasos de la ficción interactiva: adiós a R.A. Montgomery, editor y autor de 'Elige Tu Propia Aventura'" data-vars-post-url="https://www.xataka.com/otros/los-ultimos-pasos-de-la-ficcion-interactiva-muere-r-a-montgomery-editor-y-autor-de-elige-tu-propia-aventura">en los años 70 inauguró lo que llamamos 'ficción interactiva'</a>: libros en los que eran tus propias decisiones como lector ("Si llamas a la puerta, pasa a la página 100, si sales corriendo, pasa a la página 105") las que determinaban la evolución de sus tramas.</p>
<!-- BREAK 1 -->
<p>Los tiempos de gloria comercial para estos libros pasaron hace ya años, en parte por la competencia de los videojuegos, que ofrecían una forma aún más interactiva e inmersiva de ficción interactiva. Sin embargo, <strong>existe un formato híbrido entre ambos: los videojuegos interactivos basados en (hiper)texto</strong>, que sustituyen el "pasa a la página X" por un clic de ratón.</p>
<!-- BREAK 2 --><!--more--><h2>Te presento a Twine 2</h2>

<p>La buena noticia es que, en comparación con los videojuegos más 'tradicionales', <strong>este formato resulta mucho más fácil de programar si usamos las herramientas adecuadas</strong>. En este caso, vamos a echar un vistazo introductorio a la más popular de ellas, Twine 2, un editor 'open source' de ficción interactiva que <strong>genera juegos basados en HTML5, CSS y JavaScript y está disponible para Windows, Linux y Mac OS X</strong>… y también está disponible en <a rel="noopener, noreferrer" href="https://twinery.org/">una versión 100% online</a>.</p>
<!-- BREAK 3 -->
<p>Nosotros, sin embargo, vamos a instalarlo desde dicha web (el proceso de instalación no tiene ningún misterio); una vez que lo iniciemos, estaremos ante una ventana como esta:</p>
<!-- BREAK 4 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=597 width=1014 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/be2881/twine2/450_1000.webp 450w, https://i.blogs.es/be2881/twine2/650_1200.webp 681w,https://i.blogs.es/be2881/twine2/1024_2000.webp 1024w, https://i.blogs.es/be2881/twine2/1366_2000.webp 1366w" src="https://i.blogs.es/be2881/twine2/450_1000.webp" alt="Twine2" onerror="this.src='https://i.blogs.es/be2881/twine2/450_1000.jpg';this.srcset='https://i.blogs.es/be2881/twine2/450_1000.jpg 450w, https://i.blogs.es/be2881/twine2/650_1200.jpg 681w,https://i.blogs.es/be2881/twine2/1024_2000.jpg 1024w, https://i.blogs.es/be2881/twine2/1366_2000.jpg 1366w';return false;">
   <img alt="Twine2" class="centro_sinmarco" src="https://i.blogs.es/be2881/twine2/450_1000.webp">
   
      </div>
</div>
<p>Para iniciar nuestra primera historia interactiva, bastará con <strong>hacer clic en el botón verde nombrado 'Historia'</strong>. Aparecerá un cuadro de diálogo para que indiquemos cómo denominaremos este historia: tras escribir el nombre, sólo debemos clic en 'Añadir'.</p>
<!-- BREAK 5 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=597 width=1014 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/71a9a9/twine2_3/450_1000.webp 450w, https://i.blogs.es/71a9a9/twine2_3/650_1200.webp 681w,https://i.blogs.es/71a9a9/twine2_3/1024_2000.webp 1024w, https://i.blogs.es/71a9a9/twine2_3/1366_2000.webp 1366w" src="https://i.blogs.es/71a9a9/twine2_3/450_1000.webp" alt="Twine2 3" onerror="this.src='https://i.blogs.es/71a9a9/twine2_3/450_1000.jpg';this.srcset='https://i.blogs.es/71a9a9/twine2_3/450_1000.jpg 450w, https://i.blogs.es/71a9a9/twine2_3/650_1200.jpg 681w,https://i.blogs.es/71a9a9/twine2_3/1024_2000.jpg 1024w, https://i.blogs.es/71a9a9/twine2_3/1366_2000.jpg 1366w';return false;">
   <img alt="Twine2 3" class="centro_sinmarco" src="https://i.blogs.es/71a9a9/twine2_3/450_1000.webp">
   
      </div>
</div>
<p>Eso nos situará ante una pantalla en la que <strong>cada recuadro es una escen</strong>a que —una vez vayamos añadiendo más— aparece enlazado con otros según se estructuren los posibles 'trayectos de lectura'.</p>
<!-- BREAK 6 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=607 width=888 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/e4ae95/twine2_6/450_1000.webp 450w, https://i.blogs.es/e4ae95/twine2_6/650_1200.webp 681w,https://i.blogs.es/e4ae95/twine2_6/1024_2000.webp 1024w, https://i.blogs.es/e4ae95/twine2_6/1366_2000.webp 1366w" src="https://i.blogs.es/e4ae95/twine2_6/450_1000.webp" alt="Twine2 6" onerror="this.src='https://i.blogs.es/e4ae95/twine2_6/450_1000.jpg';this.srcset='https://i.blogs.es/e4ae95/twine2_6/450_1000.jpg 450w, https://i.blogs.es/e4ae95/twine2_6/650_1200.jpg 681w,https://i.blogs.es/e4ae95/twine2_6/1024_2000.jpg 1024w, https://i.blogs.es/e4ae95/twine2_6/1366_2000.jpg 1366w';return false;">
   <img alt="Twine2 6" class="centro_sinmarco" src="https://i.blogs.es/e4ae95/twine2_6/450_1000.webp">
   
      </div>
</div>
<p><strong>Si hacemos doble clic sobre la primera escena, podremos editar su título y contenido</strong>. Escribiremos nuestra primera escena (puede ser tan breve o extensa como estimes oportuno), <strong>e incluiremos, en algún lugar del texto 'hiperenlaces' a una o varias nuevas escenas</strong>, que se crearán automáticamente una vez cerremos la ventana de edición:</p>
<!-- BREAK 7 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=597 width=1014 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/865628/editando/450_1000.webp 450w, https://i.blogs.es/865628/editando/650_1200.webp 681w,https://i.blogs.es/865628/editando/1024_2000.webp 1024w, https://i.blogs.es/865628/editando/1366_2000.webp 1366w" src="https://i.blogs.es/865628/editando/450_1000.webp" alt="Editando" onerror="this.src='https://i.blogs.es/865628/editando/450_1000.jpg';this.srcset='https://i.blogs.es/865628/editando/450_1000.jpg 450w, https://i.blogs.es/865628/editando/650_1200.jpg 681w,https://i.blogs.es/865628/editando/1024_2000.jpg 1024w, https://i.blogs.es/865628/editando/1366_2000.jpg 1366w';return false;">
   <img alt="Editando" class="centro_sinmarco" src="https://i.blogs.es/865628/editando/450_1000.webp">
   
      </div>
</div>
<p><strong>Para crear los hiperenlaces, basta con utilizar el editor de la parte superior de la ventana</strong>, seleccionando el texto y pulsando en el botón 'Link'. Si especificamos un 'Passage name', podremos establecer un nombre concreto para la nueva escena, lo cual será de gran utilidad una vez empecemos a acumular escenas en el editor.</p>
<!-- BREAK 8 -->
<p>Y, por supuesto, pulsando en el <strong>botón 'Reproducir'</strong> de la ventana principal, podremos ir <strong>visualizando en nuestro navegador</strong> cómo nos está quedando el juego:</p>
<!-- BREAK 9 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
     <div class="caption-img ">
                   <img class="centro_sinmarco" height=572 width=1270 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/02f038/nobel/450_1000.webp 450w, https://i.blogs.es/02f038/nobel/650_1200.webp 681w,https://i.blogs.es/02f038/nobel/1024_2000.webp 1024w, https://i.blogs.es/02f038/nobel/1366_2000.webp 1366w" src="https://i.blogs.es/02f038/nobel/450_1000.webp" alt="Nobel" onerror="this.src='https://i.blogs.es/02f038/nobel/450_1000.jpg';this.srcset='https://i.blogs.es/02f038/nobel/450_1000.jpg 450w, https://i.blogs.es/02f038/nobel/650_1200.jpg 681w,https://i.blogs.es/02f038/nobel/1024_2000.jpg 1024w, https://i.blogs.es/02f038/nobel/1366_2000.jpg 1366w';return false;">
   <img alt="Nobel" class="centro_sinmarco" src="https://i.blogs.es/02f038/nobel/450_1000.webp">
   
        <span>Visualización de la primera escena. No, el talento literario no viene incluido con el software, ¿cómo lo has notado?</span>
   </div>
   </div>
</div>

<div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.xataka.com/literatura-comics-y-juegos/en-el-principio-fue-la-aventura-conversacional" class="pivot-outboundlink" target="_blank" data-vars-post-title="En el principio fue la aventura conversacional">
     <img alt="En&#x20;el&#x20;principio&#x20;fue&#x20;la&#x20;aventura&#x20;conversacional" width="375" height="142" src="https://i.blogs.es/a763f0/aventura-original/375_142.webp" onerror='this.src="https://i.blogs.es/a763f0/aventura-original/375_142.png"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.xataka.com/literatura-comics-y-juegos/en-el-principio-fue-la-aventura-conversacional" class="desvio-taxonomy-anchor pivot-outboundlink m-crosspost" target="_blank" data-vars-post-title="En el principio fue la aventura conversacional">En Xataka</a>
    </div>
    <a href="https://www.xataka.com/literatura-comics-y-juegos/en-el-principio-fue-la-aventura-conversacional" class="desvio-title js-desvio-title pivot-outboundlink" target="_blank" data-vars-post-title="En el principio fue la aventura conversacional">En el principio fue la aventura conversacional</a>
   </div>
  </div>
 </div>
</div>

<div class="article-asset-video article-asset-large">
 <div class="asset-content">
  <div class="base-asset-video">
   <div class="js-dailymotion">
    <script type="application/json">
                          {"videoId":"x804mse","autoplay":true,"title":"Los 25 juegos mas dificiles de la historia", "tag":"juegos"}
                  </script>
   </div>
  </div>
 </div>
</div>
<h2>Las opciones que nos brinda el editor</h2>

<p>Un repaso al editor nos muestra las opciones que existen para <strong>dar formato</strong> al texto (negritas, cursivas, títulos, listas, color de texto y fondo)… pero también podremos recurrir a formas más complejas de <strong>personalizar lo que se muestra al usuario editando el CSS y el JavaScript del juego</strong>. Ah: también es posible <strong>insertar imágenes, vídeo y audio</strong> insertando etiquetas HTML.</p>
<!-- BREAK 10 -->
<p>Con un poco de maña, puede quedarnos algo tan resultón como esto:</p>
<div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
     <div class="caption-img ">
                   <img class="centro_sinmarco" height=1080 width=1920 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/acb38d/gi2lj/450_1000.webp 450w, https://i.blogs.es/acb38d/gi2lj/650_1200.webp 681w,https://i.blogs.es/acb38d/gi2lj/1024_2000.webp 1024w, https://i.blogs.es/acb38d/gi2lj/1366_2000.webp 1366w" src="https://i.blogs.es/acb38d/gi2lj/450_1000.webp" alt="Gi2lj" onerror="this.src='https://i.blogs.es/acb38d/gi2lj/450_1000.jpg';this.srcset='https://i.blogs.es/acb38d/gi2lj/450_1000.jpg 450w, https://i.blogs.es/acb38d/gi2lj/650_1200.jpg 681w,https://i.blogs.es/acb38d/gi2lj/1024_2000.jpg 1024w, https://i.blogs.es/acb38d/gi2lj/1366_2000.jpg 1366w';return false;">
   <img alt="Gi2lj" class="centro_sinmarco" src="https://i.blogs.es/acb38d/gi2lj/450_1000.webp">
   
        <span>Captura de pantalla de 'Shadows of Huntshire', disponible en Itch.io.</span>
   </div>
   </div>
</div>
<p>Además de eso, podemos ver que el editor también nos permite <strong>usar macros, variables, generador de números aleatorios, comandos condicionales</strong>, etc. Así, es posible recurrir a métodos más propios de los juegos de rol (como las tiradas de dados) o hacer que una elección pasada del jugador repercuta en otra escena recurriendo a variables (del tipo de 'Si tocó la Gema Maldita, restar 20 puntos de vida cuando entre en el Templo del Mal').</p>
<!-- BREAK 11 -->
<p>Sabiendo eso (tranquilo, hay múltiples tutoriales disponibles en Internet), sólo tenemos que seguir añadiendo escenas hasta completar la(s) trama(s) de nuestra aventura y conducir al usuario al 'FIN'. Una vez hecho podremos publicar <strong>nuestro juego como HTML</strong>... o utilizar alguna herramienta de terceros para <strong>generar un archivo ejecutable</strong>:</p>
<!-- BREAK 12 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=597 width=1115 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/c03617/publicar/450_1000.webp 450w, https://i.blogs.es/c03617/publicar/650_1200.webp 681w,https://i.blogs.es/c03617/publicar/1024_2000.webp 1024w, https://i.blogs.es/c03617/publicar/1366_2000.webp 1366w" src="https://i.blogs.es/c03617/publicar/450_1000.webp" alt="Publicar" onerror="this.src='https://i.blogs.es/c03617/publicar/450_1000.jpg';this.srcset='https://i.blogs.es/c03617/publicar/450_1000.jpg 450w, https://i.blogs.es/c03617/publicar/650_1200.jpg 681w,https://i.blogs.es/c03617/publicar/1024_2000.jpg 1024w, https://i.blogs.es/c03617/publicar/1366_2000.jpg 1366w';return false;">
   <img alt="Publicar" class="centro_sinmarco" src="https://i.blogs.es/c03617/publicar/450_1000.webp">
   
      </div>
</div>
<script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
                                <item>
                <title><![CDATA[Humble Software Bundle Web Development: paga solo un euro por un paquete de cursos sobre desarrollo web front-end]]></title>
                <link>https://www.genbeta.com/desarrollo/humble-software-bundle-web-development-paga-solo-euro-paquete-cursos-desarrollo-web-front-end</link>
                <guid>https://www.genbeta.com/desarrollo/humble-software-bundle-web-development-paga-solo-euro-paquete-cursos-desarrollo-web-front-end</guid>
                <pubDate>Thu, 25 Feb 2021 12:05:23 +0000</pubDate>
                                         <dc:creator>Gabriela González</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/b21933/cursos-html-css-blog-/1024_2000.jpg" alt="Humble&#x20;Software&#x20;Bundle&#x20;Web&#x20;Development&#x3A;&#x20;paga&#x20;solo&#x20;un&#x20;euro&#x20;por&#x20;un&#x20;paquete&#x20;de&#x20;cursos&#x20;sobre&#x20;desarrollo&#x20;web&#x20;front-end">
    </p>
    <p>La gente de Humble ha publicado un nuevo Bundle en su sección de software, y esta vez se trata de una oferta de cursos de desarrollo web front end en la plataforma de aprendizaje online <a rel="noopener, noreferrer" href="https://www.pluralsight.com/">Pluralsight</a>.
<strong>Puedes pagar tan poco como 1 euro para obtener acceso al primer nivel del Bundle con cuatro cursos</strong>. </p>
<!-- BREAK 1 -->
<p>O, puedes pagar entre 13 y 16 euros para hacerte con el resto del contenido. <strong>En total son 20 cursos que se pueden desbloquear</strong> en el <a rel="nofollow, sponsored, noopener, noreferrer" target="_blank" class="js-ecommerce" id="link-ecommerce-1" href="https://www.webedia-afilia.com/redirect?url=https%3A%2F%2Fwww.humblebundle.com%2Fsoftware%2Flearn-frontend-web-development-software&category=desarrollo&site=genbeta&ecomPostExpiration=everlasting&postId=306829" data-vars-affiliate-url="https://www.humblebundle.com/software/learn-frontend-web-development-software">Humble Software Bundle Learn Front-End Web Development</a>. Se te dará una clave para reclamar cada curso en Pluralsight de forma permanente.  </p>
<!-- BREAK 2 --><!--more--><p>Normalmente el acceso a los cursos ahí está anclado a una suscripción de 26 euros por mes, por lo que <strong>con este Bundle pagas menos de dos tercios de lo que cuesta un solo mes de suscripción por acceso ilimitado a esos 20 cursos</strong>.</p>
<!-- BREAK 3 -->
<h2>Paga 1 euro y desbloquea</h2>
<div class="article-asset-image article-asset-large article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=742 width=1127 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/388ec7/humble-bundle-web-dev/450_1000.webp 450w, https://i.blogs.es/388ec7/humble-bundle-web-dev/650_1200.webp 681w,https://i.blogs.es/388ec7/humble-bundle-web-dev/1024_2000.webp 1024w, https://i.blogs.es/388ec7/humble-bundle-web-dev/1366_2000.webp 1366w" src="https://i.blogs.es/388ec7/humble-bundle-web-dev/450_1000.webp" alt="Humble Bundle Web Dev" onerror="this.src='https://i.blogs.es/388ec7/humble-bundle-web-dev/450_1000.jpg';this.srcset='https://i.blogs.es/388ec7/humble-bundle-web-dev/450_1000.jpg 450w, https://i.blogs.es/388ec7/humble-bundle-web-dev/650_1200.jpg 681w,https://i.blogs.es/388ec7/humble-bundle-web-dev/1024_2000.jpg 1024w, https://i.blogs.es/388ec7/humble-bundle-web-dev/1366_2000.jpg 1366w';return false;">
   <img alt="Humble Bundle Web Dev" class="centro_sinmarco" src="https://i.blogs.es/388ec7/humble-bundle-web-dev/450_1000.webp">
   
      </div>
</div>
<ul>
<li><a rel="noopener, noreferrer" href="https://www.pluralsight.com/courses/your-first-day-html-1665">Your First Day with HTML</a>: un tutorial para aprender lo básico del software que se usa para crear sitios web, sintaxis HTML estructura del documento, y algunas etiquetas HTML básicas.</li>
<li><a rel="noopener, noreferrer" href="https://www.pluralsight.com/courses/javascript-module-fundamentals">JavaScript Module Fundamentals</a>: fundamentos de la escritura de JavaScript modular y mantenible utilizando formatos, loaders y bundlers populares.</li>
<li><a rel="noopener, noreferrer" href="https://www.pluralsight.com/courses/css-intro">Introduction to CSS</a>: todos los conocimientos necesarios para empezar a trabajar con las hojas de estilo en cascada (CSS) y el diseño web.</li>
<li><a rel="noopener, noreferrer" href="https://www.pluralsight.com/courses/html5-creating-offline-first-mobile-apps">Creating Offline-first Mobile Apps with HTML5</a>: cómo construir aplicaciones móviles offline-first utilizando HTML5, almacenamiento offline y service workers.</li>
</ul>
<div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.genbeta.com/desarrollo/free-for-dev-lista-software-productos-para-desarrolladores-que-tienen-versiones-gratis" class="pivot-outboundlink" data-vars-post-title="Free for dev: una lista de software y productos para desarrolladores que tienen versiones gratis">
     <img alt="Free&#x20;for&#x20;dev&#x3A;&#x20;una&#x20;lista&#x20;de&#x20;software&#x20;y&#x20;productos&#x20;para&#x20;desarrolladores&#x20;que&#x20;tienen&#x20;versiones&#x20;gratis" width="375" height="142" src="https://i.blogs.es/d20375/recursos-gratis-programadores-blog-/375_142.webp" onerror='this.src="https://i.blogs.es/d20375/recursos-gratis-programadores-blog-/375_142.jpg"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.genbeta.com/desarrollo/free-for-dev-lista-software-productos-para-desarrolladores-que-tienen-versiones-gratis" class="desvio-taxonomy-anchor pivot-outboundlink" data-vars-post-title="Free for dev: una lista de software y productos para desarrolladores que tienen versiones gratis">En Genbeta</a>
    </div>
    <a href="https://www.genbeta.com/desarrollo/free-for-dev-lista-software-productos-para-desarrolladores-que-tienen-versiones-gratis" class="desvio-title js-desvio-title pivot-outboundlink" data-vars-post-title="Free for dev: una lista de software y productos para desarrolladores que tienen versiones gratis">Free for dev: una lista de software y productos para desarrolladores que tienen versiones gratis</a>
   </div>
  </div>
 </div>
</div>
<h2>Paga 13,71 euros y desbloquea todo lo anterior más:</h2>

<ul>
<li><a rel="noopener, noreferrer" href="https://www.pluralsight.com/courses/javascript-functions">JavaScript: Functions</a>: conocimiento fundamental para escribir código modular.</li>
<li><a rel="noopener, noreferrer" href="https://www.pluralsight.com/courses/html5-advanced">HTML5 Advanced Topics</a>: aprender a crear aplicaciones nativas de Internet enriquecidas.</li>
<li><a rel="noopener, noreferrer" href="https://www.pluralsight.com/courses/css-creating-page-layouts">Creating Page Layouts with CSS</a>: aprende a construir un sitio web móvil responsivo.</li>
<li><a rel="noopener, noreferrer" href="https://www.pluralsight.com/courses/html5-optimizing-data-communication-offline-apps">Building on HTML5: Optimizing for Data, Communication and Offline Apps</a>: aprende desde las estrategias para almacenar objetos de datos sencillos hasta utilizar la base de datos del navegador.</li>
<li><a rel="noopener, noreferrer" href="https://www.pluralsight.com/courses/debugging-sites-chrome-devtools">Debugging Sites Using Chrome DevTools</a>: cómo utilizar el potente conjunto de herramientas incluidas en Chrome para diagnosticar y solucionar rápidamente los problemas de las aplicaciones del lado del cliente.</li>
<li><a rel="noopener, noreferrer" href="https://www.pluralsight.com/courses/working-text-lists-html">Working with Text and Lists in HTML</a>: aprende a mostrar texto y listas en tu sitio web.</li>
</ul>
<div class="article-asset-video article-asset-large">
 <div class="asset-content">
  <div class="base-asset-video">
   <div class="js-dailymotion">
    <script type="application/json">
                          {"videoId":"x7ziu8u","autoplay":true,"title":"Las matemáticas no se me dan mal, quiero aprender a programar   CAPTCHA 2x04", "tag":"Programadores"}
                  </script>
   </div>
  </div>
 </div>
</div>
<h2>Paga 16,46 euros o más y desbloquea todo lo anterior junto a:</h2>

<ul>
<li><a rel="noopener, noreferrer" href="https://www.pluralsight.com/courses/html-css-javascript-big-picture">HTML, CSS, and JavaScript: The Big Picture</a></li>
<li><a rel="noopener, noreferrer" href="https://app.pluralsight.com/library/courses/front-end-web-development-get-started/table-of-contents">Front End Web Development: Get Started</a></li>
<li><a rel="noopener, noreferrer" href="https://app.pluralsight.com/library/courses/basic-html5-css3-building-first-web-page/table-of-contents">Learn Basic HTML5 and CSS3 by Building Your First Web Page</a></li>
<li><a rel="noopener, noreferrer" href="https://www.pluralsight.com/courses/html-forms-creating">Creating Forms in HTML</a></li>
<li><a rel="noopener, noreferrer" href="https://www.pluralsight.com/courses/html-css-javascript-getting-started-building-websites">Building Websites with HTML, CSS, and JavaScript: Getting Started</a></li>
<li><a rel="noopener, noreferrer" href="https://www.pluralsight.com/courses/html5-fundamentals">HTML5 Fundamentals</a></li>
<li><a rel="noopener, noreferrer" href="https://www.pluralsight.com/courses/styling-websites-css">Styling Websites with CSS</a></li>
<li><a rel="noopener, noreferrer" href="https://app.pluralsight.com/library/courses/optimizing-deploying-website/table-of-contents">Optimizing and Deploying a Website</a></li>
<li><a rel="noopener, noreferrer" href="https://www.pluralsight.com/courses/javascript-best-practices">JavaScript Best Practices</a></li>
<li><a rel="noopener, noreferrer" href="https://app.pluralsight.com/library/courses/building-websites-html/table-of-contents">Building Websites with HTML</a></li>
</ul>
<script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
                                <item>
                <title><![CDATA[98.css: una librería open source para construir interfaces que se vean como Windows 98]]></title>
                <link>https://www.genbeta.com/desarrollo/98-css-libreria-open-source-para-construir-interfaces-que-se-vean-como-windows-98</link>
                <guid>https://www.genbeta.com/desarrollo/98-css-libreria-open-source-para-construir-interfaces-que-se-vean-como-windows-98</guid>
                <pubDate>Fri, 08 May 2020 15:00:34 +0000</pubDate>
                                         <dc:creator>Gabriela González</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/5f1b93/windows-98-css/1024_2000.jpg" alt="98.css&#x3A;&#x20;una&#x20;librer&#x00ED;a&#x20;open&#x20;source&#x20;para&#x20;construir&#x20;interfaces&#x20;que&#x20;se&#x20;vean&#x20;como&#x20;Windows&#x20;98">
    </p>
    <p><a rel="noopener, noreferrer" href="https://jdan.github.io/98.css/">98.css</a> es un archivo CSS que toma el HTML semántico y lo hace ver bonito. O al menos esa es la forma en la que el desarrollador detrás del proyecto lo describe. En otras palabras, se trata de una <strong>librería CSS para construir interfaces que se vean como Windows 98</strong>.</p>
<!-- BREAK 1 -->
<p>La idea es ofrecer todo <strong>un sistema de diseño para recrear lo más fielmente posible las interfaces viejas</strong>, como las del antiguo sistema operativo de Microsoft. Sí, esas interfaces donde los botones están muy bien definidos, igual que los _checkbox_, los cajones de texto, las barras, etc. </p>
<!-- BREAK 2 --><!--more--><h2>Cero JavaScript</h2>
<div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=299 width=552 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/57fa9d/anotacion-2020-05-08-160154/450_1000.webp 450w, https://i.blogs.es/57fa9d/anotacion-2020-05-08-160154/650_1200.webp 681w,https://i.blogs.es/57fa9d/anotacion-2020-05-08-160154/1024_2000.webp 1024w, https://i.blogs.es/57fa9d/anotacion-2020-05-08-160154/1366_2000.webp 1366w" src="https://i.blogs.es/57fa9d/anotacion-2020-05-08-160154/450_1000.webp" alt="Anotacion 2020 05 08 160154" onerror="this.src='https://i.blogs.es/57fa9d/anotacion-2020-05-08-160154/450_1000.jpg';this.srcset='https://i.blogs.es/57fa9d/anotacion-2020-05-08-160154/450_1000.jpg 450w, https://i.blogs.es/57fa9d/anotacion-2020-05-08-160154/650_1200.jpg 681w,https://i.blogs.es/57fa9d/anotacion-2020-05-08-160154/1024_2000.jpg 1024w, https://i.blogs.es/57fa9d/anotacion-2020-05-08-160154/1366_2000.jpg 1366w';return false;">
   <img alt="Anotacion 2020 05 08 160154" class="centro_sinmarco" src="https://i.blogs.es/57fa9d/anotacion-2020-05-08-160154/450_1000.webp">
   
      </div>
</div>
<p>El objetivo principal de este proyecto es la accesibilidad. La librería depende del uso de HTML semántico y no contiene nada de JavaScript, <strong>lo único que hace es darle estilo a tu código en HTML utilizando algo de CSS</strong>. Lo que quiere decir que 98.css es compatible con tu _framework frontend_ favorito. </p>
<!-- BREAK 3 -->
<p>Para usar la librería <strong>existe una guía dentro de la misma web</strong>, también hay ejemplos de su uso con <a rel="noopener, noreferrer" href="https://codesandbox.io/s/objective-chandrasekhar-t5t6h?file=/src/index.js">React</a>, y con <a rel="noopener, noreferrer" href="https://codesandbox.io/s/late-sound-miqho?file=/index.html">JavaScript</a>. Puedes instalarla desde la página de lanzamientos del proyecto en <a rel="noopener, noreferrer" href="https://github.com/jdan/98.css/releases">GitHub</a>, o puedes usar  <a rel="noopener, noreferrer" href="https://www.npmjs.com/package/98.css">npm</a>. </p>
<!-- BREAK 4 --><div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.genbeta.com/multimedia/este-youtuber-arregla-webs-mal-disenadas-sus-desarrolladores-aprendan-ui-1" class="pivot-outboundlink" data-vars-post-title="Este YouTuber arregla webs mal diseñadas para que sus desarrolladores (y cualquiera) aprendan sobre UI">
     <img alt="Este&#x20;YouTuber&#x20;arregla&#x20;webs&#x20;mal&#x20;dise&#x00F1;adas&#x20;para&#x20;que&#x20;sus&#x20;desarrolladores&#x20;&#x28;y&#x20;cualquiera&#x29;&#x20;aprendan&#x20;sobre&#x20;UI" width="375" height="142" src="https://i.blogs.es/14a143/0f0e3bd33a8d0f69eeddc793e61ef1b3/375_142.webp" onerror='this.src="https://i.blogs.es/14a143/0f0e3bd33a8d0f69eeddc793e61ef1b3/375_142.jpg"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.genbeta.com/multimedia/este-youtuber-arregla-webs-mal-disenadas-sus-desarrolladores-aprendan-ui-1" class="desvio-taxonomy-anchor pivot-outboundlink" data-vars-post-title="Este YouTuber arregla webs mal diseñadas para que sus desarrolladores (y cualquiera) aprendan sobre UI">En Genbeta</a>
    </div>
    <a href="https://www.genbeta.com/multimedia/este-youtuber-arregla-webs-mal-disenadas-sus-desarrolladores-aprendan-ui-1" class="desvio-title js-desvio-title pivot-outboundlink" data-vars-post-title="Este YouTuber arregla webs mal diseñadas para que sus desarrolladores (y cualquiera) aprendan sobre UI">Este YouTuber arregla webs mal diseñadas para que sus desarrolladores (y cualquiera) aprendan sobre UI</a>
   </div>
  </div>
 </div>
</div>

<div class="article-asset-summary article-asset-normal"><div class="asset-content"><div class="sumario">El objetivo principal de este proyecto es la accesibilidad</div></div></div><p>Para su creador, 98.css es simplemente un proyecto tonto y divertido con el que ejercitar su músculo open source, pero aparte de eso, no deja de ser <strong>un proyecto interesante para comparar las viejas interfaces de antes con las modernas</strong>. Especialmente por el tema de accesibilidad. </p>
<!-- BREAK 5 -->
<p><strong>El diseño de UI actual, especialmente en el escritorio, aunque más estilizado tienen a dejar que desear en cuanto a accesibilidad</strong>. La poca diferenciación de colores y relieves en barras de herramientas, botones y menús tienden a confundir bastante. En la época de Windows 98 las cosas quizás no eran tan "bonitas", pero si que eran funcionales. Ahí hay un debate.</p>
<!-- BREAK 6 --><script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
                                <item>
                <title><![CDATA[CSS Peeper es una extensión que muestra la fuente, tamaño, código de color y demás datos de los elementos visuales de una web]]></title>
                <link>https://www.genbeta.com/herramientas/css-peeper-extension-que-muestra-fuente-tamano-codigo-color-demas-datos-elementos-visuales-web</link>
                <guid>https://www.genbeta.com/herramientas/css-peeper-extension-que-muestra-fuente-tamano-codigo-color-demas-datos-elementos-visuales-web</guid>
                <pubDate>Sun, 26 May 2019 10:18:44 +0000</pubDate>
                                         <dc:creator>Ricardo Aguilar</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/2fe1e6/css-viewer/1024_2000.jpg" alt="CSS&#x20;Peeper&#x20;es&#x20;una&#x20;extensi&#x00F3;n&#x20;que&#x20;muestra&#x20;la&#x20;fuente,&#x20;tama&#x00F1;o,&#x20;c&#x00F3;digo&#x20;de&#x20;color&#x20;y&#x20;dem&#x00E1;s&#x20;datos&#x20;de&#x20;los&#x20;elementos&#x20;visuales&#x20;de&#x20;una&#x20;web">
    </p>
    <p>Las <a href="https://www.genbeta.com/tag/paginas-web">páginas web</a> se componen de miles de elementos, algunos de ellos más visibles que otros. En concreto, <strong>las tipografías de los textos, los colores que se escogen para las mismas</strong>, y el contenido multimedia, son lo que perciben todos los usuarios de un simple vistazo.</p>
<!-- BREAK 1 -->
<p>Para todos aquellos que quieran conocer en profundidad estos tres elementos, traemos una herramienta disponible para <a href="https://www.genbeta.com/tag/chrome">Google Chrome</a> y aquellos navegadores que soporten sus extensiones. Su nombre es CSS Peeper, y nos permite <strong>inspeccionar de una forma bastante visual los elementos de una página web</strong>.</p>
<!-- BREAK 2 --><div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.xataka.com/aplicaciones/cinco-extensiones-para-chrome-firefox-que-te-interesa-leer-articulos-distracciones" class="pivot-outboundlink" target="_blank" data-vars-post-title="Cinco extensiones para Chrome y Firefox si lo que te interesa es leer artículos sin distracciones">
     <img alt="Cinco&#x20;extensiones&#x20;para&#x20;Chrome&#x20;y&#x20;Firefox&#x20;si&#x20;lo&#x20;que&#x20;te&#x20;interesa&#x20;es&#x20;leer&#x20;art&#x00ED;culos&#x20;sin&#x20;distracciones" width="375" height="142" src="https://i.blogs.es/027781/extensiones/375_142.webp" onerror='this.src="https://i.blogs.es/027781/extensiones/375_142.jpg"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.xataka.com/aplicaciones/cinco-extensiones-para-chrome-firefox-que-te-interesa-leer-articulos-distracciones" class="desvio-taxonomy-anchor pivot-outboundlink m-crosspost" target="_blank" data-vars-post-title="Cinco extensiones para Chrome y Firefox si lo que te interesa es leer artículos sin distracciones">En Xataka</a>
    </div>
    <a href="https://www.xataka.com/aplicaciones/cinco-extensiones-para-chrome-firefox-que-te-interesa-leer-articulos-distracciones" class="desvio-title js-desvio-title pivot-outboundlink" target="_blank" data-vars-post-title="Cinco extensiones para Chrome y Firefox si lo que te interesa es leer artículos sin distracciones">Cinco extensiones para Chrome y Firefox si lo que te interesa es leer artículos sin distracciones</a>
   </div>
  </div>
 </div>
</div>

<!--more--><h2>Una de las mejores formas de inspeccionar elementos visuales en una página web</h2>
<div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=1262 width=2518 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/6ff604/tg_image_3418697691/450_1000.webp 450w, https://i.blogs.es/6ff604/tg_image_3418697691/650_1200.webp 681w,https://i.blogs.es/6ff604/tg_image_3418697691/1024_2000.webp 1024w, https://i.blogs.es/6ff604/tg_image_3418697691/1366_2000.webp 1366w" src="https://i.blogs.es/6ff604/tg_image_3418697691/450_1000.webp" alt="CSS Viewer" onerror="this.src='https://i.blogs.es/6ff604/tg_image_3418697691/450_1000.jpeg';this.srcset='https://i.blogs.es/6ff604/tg_image_3418697691/450_1000.jpeg 450w, https://i.blogs.es/6ff604/tg_image_3418697691/650_1200.jpeg 681w,https://i.blogs.es/6ff604/tg_image_3418697691/1024_2000.jpeg 1024w, https://i.blogs.es/6ff604/tg_image_3418697691/1366_2000.jpeg 1366w';return false;">
   <img alt="CSS Viewer" class="centro_sinmarco" src="https://i.blogs.es/6ff604/tg_image_3418697691/450_1000.webp">
   
      </div>
</div>
<p>Esta extensión se define como un "visor CSS inteligente", que nos permite, como su propio nombre indica, acceder a los códigos de estos elementos de las web, de un modo bsatante visual. No viene de más recordar que <strong>CSS es un lenguaje</strong> que se utiliza para diseñar los distintos estilos de los elementos que vemos en las páginas web. Al instalar la extensión y abrirla, <strong>veremos tres apartados principales</strong>, <em>general</em>, <em>colors</em>, y <em>assets</em>.</p>
<!-- BREAK 3 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=112 width=616 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/027bb1/tg_image_2103069991/450_1000.webp 450w, https://i.blogs.es/027bb1/tg_image_2103069991/650_1200.webp 681w,https://i.blogs.es/027bb1/tg_image_2103069991/1024_2000.webp 1024w, https://i.blogs.es/027bb1/tg_image_2103069991/1366_2000.webp 1366w" src="https://i.blogs.es/027bb1/tg_image_2103069991/450_1000.webp" alt="Botones CSS Viewer" onerror="this.src='https://i.blogs.es/027bb1/tg_image_2103069991/450_1000.jpeg';this.srcset='https://i.blogs.es/027bb1/tg_image_2103069991/450_1000.jpeg 450w, https://i.blogs.es/027bb1/tg_image_2103069991/650_1200.jpeg 681w,https://i.blogs.es/027bb1/tg_image_2103069991/1024_2000.jpeg 1024w, https://i.blogs.es/027bb1/tg_image_2103069991/1366_2000.jpeg 1366w';return false;">
   <img alt="Botones CSS Viewer" class="centro_sinmarco" src="https://i.blogs.es/027bb1/tg_image_2103069991/450_1000.webp">
   
      </div>
</div>
<p>El primero de estos apartados (<em>general</em>) es el que se nos abre al iniciar la extensión, y nos permite <strong>conocer las fuentes que está utilizando la página web</strong>, así como cierta información (peso total y tiempo de carga) sobre los propios elementos CSS que las componen. </p>
<!-- BREAK 4 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
     <div class="caption-img ">
                   <img class="centro_sinmarco" height=1232 width=2830 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/d0ac5f/tg_image_2401539578/450_1000.webp 450w, https://i.blogs.es/d0ac5f/tg_image_2401539578/650_1200.webp 681w,https://i.blogs.es/d0ac5f/tg_image_2401539578/1024_2000.webp 1024w, https://i.blogs.es/d0ac5f/tg_image_2401539578/1366_2000.webp 1366w" src="https://i.blogs.es/d0ac5f/tg_image_2401539578/450_1000.webp" alt="CSS Viewer" onerror="this.src='https://i.blogs.es/d0ac5f/tg_image_2401539578/450_1000.jpeg';this.srcset='https://i.blogs.es/d0ac5f/tg_image_2401539578/450_1000.jpeg 450w, https://i.blogs.es/d0ac5f/tg_image_2401539578/650_1200.jpeg 681w,https://i.blogs.es/d0ac5f/tg_image_2401539578/1024_2000.jpeg 1024w, https://i.blogs.es/d0ac5f/tg_image_2401539578/1366_2000.jpeg 1366w';return false;">
   <img alt="CSS Viewer" class="centro_sinmarco" src="https://i.blogs.es/d0ac5f/tg_image_2401539578/450_1000.webp">
   
        <span>En este apartado, vemos la información referente a las tipografías usadas en el website.</span>
   </div>
   </div>
</div>
<p>El segundo nos muestra de una forma muy visual, <strong>cada uno de los códigos de color que componen la página</strong>. Si posamos el ratón por encima de alguno de estos códigos, veremos la opción de copiar al portapapeles, para poder introducir este código en cualquier otra web o programa.</p>
<!-- BREAK 5 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
     <div class="caption-img ">
                   <img class="centro_sinmarco" height=1308 width=2824 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/501cae/tg_image_2820039305/450_1000.webp 450w, https://i.blogs.es/501cae/tg_image_2820039305/650_1200.webp 681w,https://i.blogs.es/501cae/tg_image_2820039305/1024_2000.webp 1024w, https://i.blogs.es/501cae/tg_image_2820039305/1366_2000.webp 1366w" src="https://i.blogs.es/501cae/tg_image_2820039305/450_1000.webp" alt="CSS Viewer colors" onerror="this.src='https://i.blogs.es/501cae/tg_image_2820039305/450_1000.jpeg';this.srcset='https://i.blogs.es/501cae/tg_image_2820039305/450_1000.jpeg 450w, https://i.blogs.es/501cae/tg_image_2820039305/650_1200.jpeg 681w,https://i.blogs.es/501cae/tg_image_2820039305/1024_2000.jpeg 1024w, https://i.blogs.es/501cae/tg_image_2820039305/1366_2000.jpeg 1366w';return false;">
   <img alt="CSS Viewer colors" class="centro_sinmarco" src="https://i.blogs.es/501cae/tg_image_2820039305/450_1000.webp">
   
        <span>En el segundo apartado, tenemos acceso a los códigos de color de la página, y a un botón para llevarlo al portapapeles.</span>
   </div>
   </div>
</div>
<p>En tercer lugar, encontramos un apartado en el que podemos encontrar <strong>todos los elementos de imagen de la página</strong>. La cosa no se queda aquí, ya que también podemos descargalos con tan solo pulsar sobre ellos. La herramienta detecta si están en formato JPEG o PNG, y los descarga respetando dicho formato original.</p>
<!-- BREAK 6 -->
<p>Si descargas varios archivos, o quieres descargarlos todos de golpe, <strong>la extensión los comprimirá en un archivo .zip</strong> para que el proceso sea más rápido y cómodo.</p>
<!-- BREAK 7 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
     <div class="caption-img ">
                   <img class="centro_sinmarco" height=1314 width=1766 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/8d1fd4/tg_image_3444998070/450_1000.webp 450w, https://i.blogs.es/8d1fd4/tg_image_3444998070/650_1200.webp 681w,https://i.blogs.es/8d1fd4/tg_image_3444998070/1024_2000.webp 1024w, https://i.blogs.es/8d1fd4/tg_image_3444998070/1366_2000.webp 1366w" src="https://i.blogs.es/8d1fd4/tg_image_3444998070/450_1000.webp" alt="CSS imágenes" onerror="this.src='https://i.blogs.es/8d1fd4/tg_image_3444998070/450_1000.jpeg';this.srcset='https://i.blogs.es/8d1fd4/tg_image_3444998070/450_1000.jpeg 450w, https://i.blogs.es/8d1fd4/tg_image_3444998070/650_1200.jpeg 681w,https://i.blogs.es/8d1fd4/tg_image_3444998070/1024_2000.jpeg 1024w, https://i.blogs.es/8d1fd4/tg_image_3444998070/1366_2000.jpeg 1366w';return false;">
   <img alt="CSS imágenes" class="centro_sinmarco" src="https://i.blogs.es/8d1fd4/tg_image_3444998070/450_1000.webp">
   
        <span>En el tercer apartado podremos descargar el contenido multimedia de la página web.</span>
   </div>
   </div>
</div>
<h3>La cosa no acaba aquí</h3>

<p>Por si parecían pocas funciones, CSS Peeper incluye un inspector manual de elementos, a través del cuál <strong>pulsando sobre los distintos elementos visuales de la página</strong>, obtendremos información sobre su tamaño, fuente, alineación, código de color, espaciado de letra...</p>
<!-- BREAK 8 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
     <div class="caption-img ">
                   <img class="centro_sinmarco" height=1370 width=2842 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/579f74/tg_image_3125205319/450_1000.webp 450w, https://i.blogs.es/579f74/tg_image_3125205319/650_1200.webp 681w,https://i.blogs.es/579f74/tg_image_3125205319/1024_2000.webp 1024w, https://i.blogs.es/579f74/tg_image_3125205319/1366_2000.webp 1366w" src="https://i.blogs.es/579f74/tg_image_3125205319/450_1000.webp" alt="CSS Viewer" onerror="this.src='https://i.blogs.es/579f74/tg_image_3125205319/450_1000.jpeg';this.srcset='https://i.blogs.es/579f74/tg_image_3125205319/450_1000.jpeg 450w, https://i.blogs.es/579f74/tg_image_3125205319/650_1200.jpeg 681w,https://i.blogs.es/579f74/tg_image_3125205319/1024_2000.jpeg 1024w, https://i.blogs.es/579f74/tg_image_3125205319/1366_2000.jpeg 1366w';return false;">
   <img alt="CSS Viewer" class="centro_sinmarco" src="https://i.blogs.es/579f74/tg_image_3125205319/450_1000.webp">
   
        <span>El selector de CSS Peeper nos permite acceder a la información de cada uno de los elementos visuales de la página.</span>
   </div>
   </div>
</div>
<p>Como habrás visto a lo largo de las imágenes, una de las principales bondades de CSS Peeper es <strong>el mimo que tiene su interfaz</strong>, bien diseñada, con una línea moderna. Del mismo modo, la facilidad de uso de la herramienta es un punto a tener en cuenta, ya que realiza los procesos de forma automática, nos deja copiar y descargar con tan solo un click, y nos muestra la información ordenada y de forma clara.</p>
<!-- BREAK 9 -->
<p>La extensión está disponible para Google Chrome y todos aquellos navegadores que soporten sus extensiones, de forma gratuita. Su peso es de 280KB, y según la tienda de Google cuenta con <strong>más de 100.000 usuarios y una puntuación de 4.7 estrellas sobre 5</strong>.</p>
<!-- BREAK 10 -->
<p>Descargar | <a rel="noopener, noreferrer" href="https://chrome.google.com/webstore/search/CSS%20PEEPER?hl=es">CSS Peeper</a></p>
<script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
            </channel>
</rss>
