{"id":31594,"date":"2025-01-22T11:07:45","date_gmt":"2025-01-22T10:07:45","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/?p=31594"},"modified":"2025-01-28T09:26:56","modified_gmt":"2025-01-28T08:26:56","slug":"creamos-un-diseno-de-caja-bento-usando-css-moderno","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/","title":{"rendered":"Creamos un dise\u00f1o de caja bento usando CSS moderno"},"content":{"rendered":"\n<p>Una caja bento (\ud83c\udf71) es el famoso recipiente japon\u00e9s para almuerzos que mantiene separadas de manera ordenada las diferentes comidas preparadas. Llevar a la escuela un bento listo es un gesto de afecto hacia quien lo recibe, y la atenci\u00f3n con la que se organizan y presentan los distintos platos, adem\u00e1s de la calidad de la comida, representa cu\u00e1nto te importa esa persona.<\/p>\n\n\n\n<p>De esta costumbre y del dise\u00f1o minimalista, equilibrado y funcional de este peculiar objeto, ha surgido una tendencia en UX\/UI llamada Bento Layout (o Bento Box Layout), que ser\u00e1 el tema de este tutorial: no utilizaremos arroz, zanahorias o salchichas con forma de pulpo, sino HTML y CSS modernos como nuestros ingredientes, \u00a1pero la dedicaci\u00f3n y el cari\u00f1o con los que se combinan son los mismos!<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\"><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-la-base\">La base<br><\/h2>\n\n\n\n<p>Para nuestro experimento, queremos partir de una base bastante sencilla pero extremadamente com\u00fan: tenemos un elemento <code>&lt;main&gt;<\/code> que contiene varios elementos <code>&lt;section&gt;<\/code>, cada uno con su propio <code>&lt;article&gt;<\/code>, que a su vez incluye un <code>&lt;header&gt;<\/code> y una imagen dentro de un elemento sem\u00e1ntico <code>&lt;figure&gt;<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>&lt;!DOCTYPE html&gt;<br>&lt;html lang=\"es\"&gt;<br>  &lt;head&gt;<br>    &lt;link rel=\"stylesheet\" type=\"text\/css\" href=\"style.css\"&gt;<br>    &lt;meta charset=\"utf-8\" \/&gt;<br>    &lt;title&gt;\ud83c\udf71 Dise\u00f1o de Caja Bento con CSS Moderno&lt;\/title&gt;<br>  &lt;\/head&gt;<br>  &lt;body&gt;<br>    &lt;main&gt;<br>      &lt;section class=\"bento\"&gt;<br>        &lt;article&gt;<br>          &lt;header&gt;<br>            &lt;h2&gt;Caja 1&lt;\/h2&gt;<br>            &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit.&lt;\/p&gt;<br>          &lt;\/header&gt;<br>          &lt;figure&gt;<br>            &lt;img src=\".\/images\/0.png\" alt=\"imagen generada por IA de anime\"&gt;<br>          &lt;\/figure&gt;<br>        &lt;\/article&gt;<br>        &lt;!-- 7 art\u00edculos m\u00e1s aqu\u00ed --&gt;<br>      &lt;\/section&gt;<br>    &lt;\/main&gt;<br>  &lt;\/body&gt;<br>&lt;\/html&gt;<br><\/code><\/pre>\n\n\n\n<p>Utilizaremos CSS moderno (Baseline) para hacer que nuestra base sea responsive, adoptando un enfoque mobile-first:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>root {<br>  font-family: system-ui, sans-serif;<br>  font-size: clamp(14px, 5vw, 20px);<br>  --dark-color: #5c6378ff;<br>  --light-color: #edf2f4ff;<br>  --background-color: #2b2d42ff;<br>  --secondary-color: #757e93ff;<br>  --antiflash-white: #edf2f4ff;<br>  --important-color: #ef233cff;<br>  --fire-engine-red: #d90429ff;<br>}<br><br>body {<br>  background-color: var(--background-color);<br>  color: var(--light-color);<br>  margin: 0;<br>}<br><br>article {<br>  background-color: var(--light-color);<br>  color: var(--dark-color);<br>  padding: 1rem;<br>  margin-bottom: 1rem;<br>}<br><br>article figure {<br>  margin: 0;<br>}<br><br>img {<br>  display: block;<br>  width: 100%;<br>}<br><br>main {<br>  width: 90%;<br>  max-width: 1200px;<br>  margin-inline: auto;<br>  padding-block-start: 2rem;<br>}<br><\/code><\/pre>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"358\" height=\"528\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/css.gif\" alt=\"\" class=\"wp-image-31602\"\/><\/figure><\/div>\n\n\n<p>Para experimentar con un dise\u00f1o bento, a\u00f1adimos algunos art\u00edculos y observamos que, por defecto, si nos limitamos a pocos cambios en la hoja de estilo, nuestros elementos HTML aparecer\u00e1n accesibles y perfectamente utilizables: menos es m\u00e1s en CSS.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-bento-con-diseno-de-cuadricula\"><strong>Bento con dise\u00f1o de cuadr\u00edcula<\/strong><\/h2>\n\n\n\n<p>La t\u00e9cnica ideal para un dise\u00f1o modular compuesto por contenedores es establecer la propiedad CSS <code>display<\/code> de nuestras secciones a <code>grid<\/code>. Sin embargo, para poder jugar con la posici\u00f3n y la forma de los art\u00edculos, necesitaremos algunos ajustes adicionales que nos ser\u00e1n \u00fatiles m\u00e1s adelante.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>.bento {<br>    <strong>--bento-cols<\/strong>: 5;<br>    <strong>--bento-rows<\/strong>: 3;<br>    <strong>--bento-border-radius<\/strong>: 1rem;<br>    <strong>--bento-gap<\/strong>: 1rem;<br>    <strong>display<\/strong>: grid;<br>    <strong>grid-template-columns<\/strong>: repeat(var(--bento-cols), 1fr);<br>    <strong>grid-template-rows<\/strong>: repeat(var(--bento-rows), 1fr);<br>    <strong>width<\/strong>: 100%;<br>    <strong>aspect-ratio<\/strong>: var(--bento-cols) \/ var(--bento-rows);<br>}<br><br>.bento&gt;* {<br>    <strong>overflow<\/strong>: hidden;<br>    <strong>position<\/strong>: relative;<br>    <strong>margin<\/strong>: calc(var(--bento-gap) \/ 2);<br>    <strong>border-radius<\/strong>: var(--bento-border-radius);<br>}<br><br><strong>@media<\/strong> screen <strong>and<\/strong> (aspect-ratio &lt; 1) {<br><br>    .bento {<br>        <strong>--bento-cols<\/strong>: 3;<br>        <strong>--bento-rows<\/strong>: 5;<br>    }<br>}<\/code><\/pre>\n\n\n\n<p>Hemos introducido algunas variables para controlar el n\u00famero de columnas y filas. Utilizaremos estos dos valores para determinar en cu\u00e1ntas fracciones dividir nuestra &#8220;cuadr\u00edcula bento&#8221; y calcular la propiedad <code>aspect-ratio<\/code>, es decir, la proporci\u00f3n entre el ancho y la altura. Este peque\u00f1o truco nos permite tener celdas exactamente cuadradas, y ser\u00e1 la clave de nuestra estrategia.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"595\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/grid-base-1024x595.png\" alt=\"Una griglia css con celle tutte quadrate\" class=\"wp-image-31548\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/grid-base-1024x595.png 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/grid-base-300x174.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/grid-base-768x446.png 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/grid-base.png 1379w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>Para asegurarnos de que los elementos <code>&lt;article&gt;<\/code> est\u00e9n contenidos dentro de las celdas, hemos a\u00f1adido la regla <code>overflow: hidden<\/code>.<\/p>\n\n\n\n<p>Para mantener la flexibilidad de nuestro dise\u00f1o, es importante no usar la propiedad <code>gap<\/code> de la cuadr\u00edcula, ya que esto rompe la proporci\u00f3n entre el ancho y la altura totales, y los m\u00f3dulos (los elementos en nuestro bento dejan de ser exactamente cuadrados). Utilizaremos el margen de los contenidos para espaciar los &#8220;alimentos&#8221; o elementos de nuestro bento.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-personaliza-tu-diseno-bento\"><strong>Personaliza tu dise\u00f1o bento<\/strong><\/h2>\n\n\n\n<p>\u00a1Finalmente llega la parte m\u00e1s divertida y espec\u00edfica de este tutorial! Personalicemos nuestra caja bento decidiendo cu\u00e1ntas celdas ocupar\u00e1 cada elemento: usando el valor <code>span 2<\/code> en las propiedades <code>grid-column<\/code> o <code>grid-row<\/code>, podemos obtener m\u00f3dulos horizontales (2\u00d71 celdas) y verticales (1\u00d72 celdas). Combin\u00e1ndolos, conseguimos una celda grande cuadrada (2\u00d72 celdas).<\/p>\n\n\n\n<p>Estamos listos para especificar as\u00ed la forma (e importancia) que tendr\u00e1n nuestros <code>&lt;article&gt;<\/code> seg\u00fan el orden en el que est\u00e9n en la <code>&lt;section&gt;<\/code>. Agregamos una clase <code>layout-1<\/code>, que ser\u00e1 nuestra plantilla reutilizable, \u00a1y listo!<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>.bento.layout-1&gt; :nth-child(1) {<br>    <strong>grid-column<\/strong>: span 2;<br>    <strong>grid-row<\/strong>: span 2;<br>  <strong>background-color<\/strong>: var(--important-color);<br>  <strong>color<\/strong>: var(--light-color);<br>}<br><br>.bento.layout-1&gt; :nth-child(2) {<br>    <strong>grid-row<\/strong>: span 2;<br>  <strong>background-color<\/strong>: var(--secondary-color);<br>  <strong>color<\/strong>: var(--light-color);<br>}<br><br>.bento.layout-1&gt; :nth-child(3),<br>.bento.layout-1&gt; :nth-child(4),<br>.bento.layout-1&gt; :nth-child(8) {<br>    <strong>grid-column<\/strong>: span 2;<br>  <strong>background-color<\/strong>: var(--dark-color);<br>  <strong>color<\/strong>: var(--light-color);<br>}<br><br>.bento.layout-1&gt; :nth-child(n + 9) {<br>    <strong>display<\/strong>: none;<br>}<\/code><\/pre>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"604\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/grid-spans-1024x604.png\" alt=\"\" class=\"wp-image-31549\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/grid-spans-1024x604.png 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/grid-spans-300x177.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/grid-spans-768x453.png 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/grid-spans.png 1359w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-bento-layout-verticale\">Bento Layout verticale<\/h2>\n\n\n\n<p>Para pantallas verticales, es posible que debamos reorganizar nuestro dise\u00f1o bento. Aprovechemos esta oportunidad para crear un dise\u00f1o espec\u00edfico invirtiendo el n\u00famero de columnas y filas, y reajustando nuestros m\u00f3dulos para que mantengan un equilibrio en pantallas verticales.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"486\" height=\"811\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/grid-spans_vertical.png\" alt=\"\" class=\"wp-image-31550\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/grid-spans_vertical.png 486w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/grid-spans_vertical-180x300.png 180w\" sizes=\"auto, (max-width: 486px) 100vw, 486px\" \/><\/figure><\/div>\n\n\n<pre class=\"wp-block-preformatted\"><code><br><strong>@media<\/strong> screen <strong>and<\/strong> (aspect-ratio &lt; 1) {<br><br>  .bento.layout-1 {<br>      <strong>--bento-cols<\/strong>: 3;<br>      <strong>--bento-rows<\/strong>: 5;<br>  }<br><br>  .bento.layout-1&gt; :nth-child(n) {<br>      \/* Reset spans *\/<br>      <strong>grid-column<\/strong>: auto;<br>      <strong>grid-row<\/strong>: auto;<br>  }<br><br>  .bento.layout-1&gt; :nth-child(1),<br>  .bento.layout-1&gt; :nth-child(8) {<br>      <strong>grid-column<\/strong>: span 2;<br>      <strong>grid-row<\/strong>: span 2;<br>  }<br><br>  .bento.layout-1&gt; :nth-child(5) {<br>      <strong>grid-column<\/strong>: span 2;<br>  }<br><br>  .bento.layout-1&gt; :nth-child(7) {<br>      <strong>grid-column<\/strong>: 1;<br>      <strong>grid-row<\/strong>: 5;<br>  }<br>  <br>}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-diseno-de-caja-bento-y-consultas-de-contenedor\"><strong>Dise\u00f1o de caja bento y consultas de contenedor<\/strong><\/h2>\n\n\n\n<p>Y ahora, el plato fuerte de nuestro dise\u00f1o bento: \u00a1utilicemos las <em>container queries<\/em> para dar un dise\u00f1o espec\u00edfico a cada <code>&lt;article&gt;<\/code>!<\/p>\n\n\n\n<p>Antes de personalizar los formatos individuales de nuestros elementos, preparemos una base com\u00fan que facilite nuestro trabajo:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>.bento&gt;* {<br>  <strong>display<\/strong>: flex;<br>  <strong>flex-direction<\/strong>: column-reverse;<br>}<br><br>.bento.layout-1 <strong>h1<\/strong>, .bento.layout-1 <strong>h2<\/strong>, .bento.layout-1 <strong>h3<\/strong>, .bento.layout-1 <strong>p<\/strong> {<br>  <strong>margin<\/strong>: 0;<br>}<br><br>.bento.layout-1&gt;* <strong>figure<\/strong> {<br>  <strong>position<\/strong>: absolute;<br>  <strong>inset<\/strong>: 0;<br>}<br>.bento.layout-1&gt;* <strong>header<\/strong> {<br>  <strong>position<\/strong>: relative;<br>  <strong>z-index<\/strong>: 1;<br>  <strong>background-color<\/strong>: inherit;<br>}<br><br>.bento.layout-1&gt;* <strong>figure<\/strong> <strong>img<\/strong> {<br>    <strong>object-fit<\/strong>: cover;<br>    <strong>height<\/strong>: 100%;<br>}<br><br>.bento.layout-1&gt;* <strong>header<\/strong> {<br>    <strong>position<\/strong>: absolute;<br>    <strong>bottom<\/strong>: 0;<br>    <strong>inset-inline<\/strong>: 0;<br>    <strong>border-radius<\/strong>: 0;<br>    <strong>font-size<\/strong>: 70%;<br>    <strong>padding<\/strong>: 0.5rem;<br>}<\/code><\/pre>\n\n\n\n<p>\u00a1Por fin a\u00f1adimos las propiedades CSS <code>container-type<\/code> y <code>container-name<\/code> para darle a los contenidos de nuestros <em>bento layouts<\/em> el superpoder de hacer consultas sobre propiedades como <code>width<\/code>, <code>height<\/code> y, s\u00faper importante, <code>aspect-ratio<\/code>! \ud83d\ude80<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>.bento &gt; * {<br>  <strong>container-type<\/strong>: size;<br>  <strong>container-name<\/strong>: bento-item;<br>}<\/code><\/pre>\n\n\n\n<p>Completemos nuestro dise\u00f1o bento definiendo los diferentes formatos en los que debe aparecer cada art\u00edculo. Para ello, podemos evaluar tanto las dimensiones (y, por lo tanto, ocultar algunos elementos) como las proporciones: \u00bfser\u00e1 nuestro contenedor cuadrado, vertical u horizontal? \u00bfTendr\u00e1 suficiente espacio para todo?<\/p>\n\n\n\n<p>Descubramos c\u00f3mo lograrlo utilizando las container queries (consultas de contenedor):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code><br><strong>@container<\/strong> bento-item (width &lt; 200px) <strong>and<\/strong> (height &lt; 200px) {<br>  .bento.layout-1&gt;* <strong>header<\/strong> {<br>    <strong>font-size<\/strong>: 0.7rem;<br>  }<br>  <br>  .bento.layout-1&gt;* <strong>header<\/strong> <strong>p<\/strong> {<br>        <strong>display<\/strong>: none;<br>    }<br>}<br><br><strong>@container<\/strong> bento-item (aspect-ratio &gt; 1) {<br>  .bento.layout-1&gt;* <strong>header<\/strong> {<br>   <strong>top<\/strong>: 0;<br>    <strong>right<\/strong>: 60%;<br>  }<br>  <br>  .bento.layout-1&gt; * <strong>figure<\/strong> {<br>    <strong>inset<\/strong>: 0 0 0 40%;<br>  }<br>}<br><br><br><strong>@container<\/strong> bento-item (aspect-ratio = 1) <strong>and<\/strong> (width &gt; 200px) {<br>  .bento.layout-1&gt;* <strong>header<\/strong> {<br>    <strong>font-size<\/strong>: 120%;<br>    <strong>background-color<\/strong>: #0006;<br>    <strong>color<\/strong>: var(--light-color);<br>    <strong>backdrop-filter<\/strong>: blur(4px);<br>  }<br>}<\/code><\/pre>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"608\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/container-queries1-1024x608.png\" alt=\"\" class=\"wp-image-31551\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/container-queries1-1024x608.png 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/container-queries1-300x178.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/container-queries1-768x456.png 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/container-queries1.png 1340w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-microanimaciones\">Microanimaciones<\/h2>\n\n\n\n<p>Para dar vida a nuestro dise\u00f1o bento, a\u00f1adamos microanimaciones sutiles pero efectivas. Las animaciones hacen que la interfaz sea m\u00e1s din\u00e1mica y agradable, manteniendo siempre un enfoque minimalista que refleja la filosof\u00eda del dise\u00f1o bento.<\/p>\n\n\n\n<p>Primero, a\u00f1adamos una transici\u00f3n fluida a todos los elementos del bento:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>.bento &gt; * {<br>    <strong>transition<\/strong>: transform 0.3s ease-out, filter 0.3s ease-out;<br>}<\/code><\/pre>\n\n\n\n<p>Creamos un efecto de hover que eleva ligeramente el elemento y a\u00f1ade una sutil sombra.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>.bento &gt; *:hover {<br>    <strong>transform<\/strong>: translateY(-0.5rem);<br>    <strong>filter<\/strong>: drop-shadow(0 0.5rem 0.1rem #0009);<br>}<\/code><\/pre>\n\n\n\n<p>Para las im\u00e1genes, podemos a\u00f1adir un ligero efecto de zoom combinado con un movimiento hacia abajo, logrando una especie de movimiento de c\u00e1mara similar a un &#8220;dolly&#8221;.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>.bento.layout-1 &gt; * <strong>figure<\/strong> <strong>img<\/strong> {<br>    <strong>transition<\/strong>: transform 1s;<br>}<br><br>.bento.layout-1 &gt; *:hover <strong>figure<\/strong> <strong>img<\/strong> {<br>    <strong>transform<\/strong>: scale(1.50) translateY(15%);<br>}<\/code><\/pre>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"394\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/final-animated.gif\" alt=\"\" class=\"wp-image-31552\"\/><\/figure><\/div>\n\n\n<p>Recordemos respetar las preferencias de accesibilidad del usuario desactivando las animaciones si <code>prefers-reduced-motion<\/code> est\u00e1 activado en el navegador:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code><strong>@media<\/strong> (<strong>prefers-reduced-motion:<\/strong> reduce) {<br>    .bento &gt; *,<br>    .bento.layout-1 &gt; * <strong>header<\/strong>,<br>    .bento.layout-1 &gt; * <strong>figure<\/strong> <strong>img<\/strong> {<br>        <strong>transition<\/strong>: none;<br>    }<br>    <br>    .bento &gt; *:hover {<br>        <strong>transform<\/strong>: none;<br>    }<br>    <br>    .bento.layout-1 &gt; *:hover <strong>figure<\/strong> <strong>img<\/strong> {<br>        <strong>transform<\/strong>: none;<br>    }<br>}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusiones\"><strong>Conclusiones<\/strong><\/h2>\n\n\n\n<p>En este tutorial, hemos explorado c\u00f3mo crear un dise\u00f1o de caja bento moderno utilizando CSS contempor\u00e1neo. Inspir\u00e1ndonos en la filosof\u00eda del bento japon\u00e9s, hemos construido una interfaz modular empleando:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>CSS Grid<\/strong> para la estructura base, utilizando <code>span<\/code> en las propiedades <code>grid-column<\/code> y <code>grid-row<\/code> para crear m\u00f3dulos de diferentes tama\u00f1os.<\/li>\n\n\n\n<li>La propiedad <code>aspect-ratio<\/code> para obligar a la cuadr\u00edcula a mantener las proporciones cuadradas de los m\u00f3dulos.<\/li>\n\n\n\n<li><strong>Consultas de contenedor<\/strong> (<em>Container Queries<\/em>) para adaptar el contenido a diferentes contenedores.<\/li>\n\n\n\n<li><strong>Consultas de medios<\/strong> (<em>Media Queries<\/em>) para controlar los dise\u00f1os en orientaciones verticales.<\/li>\n\n\n\n<li><strong>Microanimaciones<\/strong> para dar vida a la interfaz.<\/li>\n<\/ul>\n\n\n\n<p>La belleza de este enfoque reside en su flexibilidad: al igual que una aut\u00e9ntica caja bento, podemos organizar nuestros contenidos en infinitas combinaciones, manteniendo siempre el orden y el equilibrio. Hemos visto c\u00f3mo las funcionalidades modernas de CSS nos permiten crear dise\u00f1os complejos pero mantenibles, responsivos pero precisos, din\u00e1micos pero accesibles.<\/p>\n\n\n\n<p>El c\u00f3digo de este tutorial est\u00e1 pensado como un punto de partida: os invito a experimentar para encontrar las recetas adecuadas para vuestro bento especial.<\/p>\n\n\n\n<p>\u00a1Buen provecho!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Una caja bento (\ud83c\udf71) es el famoso recipiente japon\u00e9s para almuerzos que mantiene separadas de manera ordenada las diferentes comidas preparadas. Llevar a la escuela un bento listo es un gesto de afecto hacia quien lo recibe, y la atenci\u00f3n con la que se organizan y presentan los distintos platos, adem\u00e1s de la calidad de&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/\">Read more<\/a><\/p>\n","protected":false},"author":255,"featured_media":31509,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[10632],"tags":[11742],"collections":[],"class_list":{"0":"post-31594","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-frontend-es","8":"tag-css-es","9":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Creamos un dise\u00f1o de caja bento usando CSS moderno<\/title>\n<meta name=\"description\" content=\"Scopri come creare un bento box design layout tramite questa guida e progetta layout ispirati all&#039;estetica delle bento box giapponesi.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Creamos un dise\u00f1o de caja bento usando CSS moderno\" \/>\n<meta property=\"og:description\" content=\"Scopri come creare un bento box design layout tramite questa guida e progetta layout ispirati all&#039;estetica delle bento box giapponesi.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-22T10:07:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-28T08:26:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1792\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Massimo Avvisati\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@MassimoAvvisati\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Massimo Avvisati\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/\"},\"author\":{\"name\":\"Massimo Avvisati\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/7d033c17576f9bdfec9dab783e58976a\"},\"headline\":\"Creamos un dise\u00f1o de caja bento usando CSS moderno\",\"datePublished\":\"2025-01-22T10:07:45+00:00\",\"dateModified\":\"2025-01-28T08:26:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/\"},\"wordCount\":1016,\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil.webp\",\"keywords\":[\"CSS\"],\"articleSection\":[\"Frontend\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/\",\"name\":\"Creamos un dise\u00f1o de caja bento usando CSS moderno\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil.webp\",\"datePublished\":\"2025-01-22T10:07:45+00:00\",\"dateModified\":\"2025-01-28T08:26:56+00:00\",\"description\":\"Scopri come creare un bento box design layout tramite questa guida e progetta layout ispirati all'estetica delle bento box giapponesi.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/#primaryimage\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil.webp\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil.webp\",\"width\":1792,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Frontend\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Creamos un dise\u00f1o de caja bento usando CSS moderno\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Codemotion.Italy\/\",\"https:\/\/x.com\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/7d033c17576f9bdfec9dab783e58976a\",\"name\":\"Massimo Avvisati\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/massimo-100x100.jpeg\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/massimo-100x100.jpeg\",\"caption\":\"Massimo Avvisati\"},\"description\":\"I am a full-stack developer, digital artist, maker, and educator with a passion for Artificial Intelligence. I create immersive installations and develop educational software, pushing the boundaries of technology. I believe in Free Software and Creative Commons licensing as a foundation for knowledge sharing. My goal is to craft unique and engaging educational experiences using cutting-edge technology, showcasing the potential of AI in education. Currently, my focus is on Educational Technology, where I strive to create innovative software and hardware tools that engage and inspire learners. I firmly believe in the power of Free Software and Creative Commons, utilizing these open platforms to ensure my work is accessible and reusable by others. I actively reject restrictive platforms that limit creativity and collaboration. By combining my artistic vision with cutting-edge technology, I aim to develop unique educational experiences that spark curiosity and foster a love of learning. Through my work, I strive to demonstrate the incredible potential of AI in education and the arts.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/massimo-avvisati-7220312\/\",\"https:\/\/x.com\/MassimoAvvisati\"],\"knowsAbout\":[\"Javascript\",\"Node.js\",\"PHP\",\"AI\",\"Machine Learning\",\"Web Development\",\"Free Software\"],\"knowsLanguage\":[\"English\",\"Spanish\",\"Italian\"],\"jobTitle\":\"Head of EdTech R&D\",\"worksFor\":\"Codemotion spa\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/author\/massimo-avvisati\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Creamos un dise\u00f1o de caja bento usando CSS moderno","description":"Scopri come creare un bento box design layout tramite questa guida e progetta layout ispirati all'estetica delle bento box giapponesi.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/","og_locale":"en_US","og_type":"article","og_title":"Creamos un dise\u00f1o de caja bento usando CSS moderno","og_description":"Scopri come creare un bento box design layout tramite questa guida e progetta layout ispirati all'estetica delle bento box giapponesi.","og_url":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2025-01-22T10:07:45+00:00","article_modified_time":"2025-01-28T08:26:56+00:00","og_image":[{"width":1792,"height":1024,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil.webp","type":"image\/webp"}],"author":"Massimo Avvisati","twitter_card":"summary_large_image","twitter_creator":"@MassimoAvvisati","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Massimo Avvisati","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/"},"author":{"name":"Massimo Avvisati","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/7d033c17576f9bdfec9dab783e58976a"},"headline":"Creamos un dise\u00f1o de caja bento usando CSS moderno","datePublished":"2025-01-22T10:07:45+00:00","dateModified":"2025-01-28T08:26:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/"},"wordCount":1016,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil.webp","keywords":["CSS"],"articleSection":["Frontend"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/","url":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/","name":"Creamos un dise\u00f1o de caja bento usando CSS moderno","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil.webp","datePublished":"2025-01-22T10:07:45+00:00","dateModified":"2025-01-28T08:26:56+00:00","description":"Scopri come creare un bento box design layout tramite questa guida e progetta layout ispirati all'estetica delle bento box giapponesi.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil.webp","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil.webp","width":1792,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/creamos-un-diseno-de-caja-bento-usando-css-moderno\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Frontend","item":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/"},{"@type":"ListItem","position":3,"name":"Creamos un dise\u00f1o de caja bento usando CSS moderno"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/7d033c17576f9bdfec9dab783e58976a","name":"Massimo Avvisati","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/massimo-100x100.jpeg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/massimo-100x100.jpeg","caption":"Massimo Avvisati"},"description":"I am a full-stack developer, digital artist, maker, and educator with a passion for Artificial Intelligence. I create immersive installations and develop educational software, pushing the boundaries of technology. I believe in Free Software and Creative Commons licensing as a foundation for knowledge sharing. My goal is to craft unique and engaging educational experiences using cutting-edge technology, showcasing the potential of AI in education. Currently, my focus is on Educational Technology, where I strive to create innovative software and hardware tools that engage and inspire learners. I firmly believe in the power of Free Software and Creative Commons, utilizing these open platforms to ensure my work is accessible and reusable by others. I actively reject restrictive platforms that limit creativity and collaboration. By combining my artistic vision with cutting-edge technology, I aim to develop unique educational experiences that spark curiosity and foster a love of learning. Through my work, I strive to demonstrate the incredible potential of AI in education and the arts.","sameAs":["https:\/\/www.linkedin.com\/in\/massimo-avvisati-7220312\/","https:\/\/x.com\/MassimoAvvisati"],"knowsAbout":["Javascript","Node.js","PHP","AI","Machine Learning","Web Development","Free Software"],"knowsLanguage":["English","Spanish","Italian"],"jobTitle":"Head of EdTech R&D","worksFor":"Codemotion spa","url":"https:\/\/www.codemotion.com\/magazine\/author\/massimo-avvisati\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil-600x400.webp","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil-600x600.webp","author_info":{"display_name":"Massimo Avvisati","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/massimo-avvisati\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil.webp",1792,1024,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil-150x150.webp",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil-300x171.webp",300,171,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil-768x439.webp",768,439,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil-1024x585.webp",1024,585,true],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil-1536x878.webp",1536,878,true],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil.webp",1792,1024,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil-100x100.webp",100,100,true],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil-180x128.webp",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil-896x504.webp",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil-400x225.webp",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil-600x400.webp",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/DALL\u00b7E-2025-01-20-12.10.13-A-horizontal-layout-design-of-a-bento-box-showcasing-an-organized-and-visually-appealing-arrangement-of-food.-The-bento-box-includes-compartments-fil-600x600.webp",600,600,true]},"uagb_author_info":{"display_name":"Massimo Avvisati","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/massimo-avvisati\/"},"uagb_comment_info":0,"uagb_excerpt":"Una caja bento (\ud83c\udf71) es el famoso recipiente japon\u00e9s para almuerzos que mantiene separadas de manera ordenada las diferentes comidas preparadas. Llevar a la escuela un bento listo es un gesto de afecto hacia quien lo recibe, y la atenci\u00f3n con la que se organizan y presentan los distintos platos, adem\u00e1s de la calidad de&#8230;&hellip;","lang":"es","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/31594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/255"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=31594"}],"version-history":[{"count":3,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/31594\/revisions"}],"predecessor-version":[{"id":31742,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/31594\/revisions\/31742"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/31509"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=31594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=31594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=31594"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=31594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}