<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Angel Santana - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Descubre miles de cursos de programación escritos por expertos. Aprende Desarrollo Web, Ciencia de Datos, DevOps, Seguridad y obtén asesoramiento profesional para desarrolladores. ]]>
        </description>
        <link>https://www.freecodecamp.org/espanol/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Angel Santana - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/espanol/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 23 May 2026 19:21:56 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/espanol/news/author/angel-santana/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ CSS display: none y visibility: hidden – ¿Cuál es la diferencia? ]]>
                </title>
                <description>
                    <![CDATA[ display:none y visibility:hidden son dos declaraciones de estilos que puedes usar para ocultar elementos en la pantalla con CSS. Pero, ¿cuáles son las diferencias entre ellos? Al crear aplicaciones, hay ocasiones en las que deseas ocultar elementos visualmente (no eliminarlos del DOM, solo de la pantalla). Puedes hacer esto de ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/css-display-none-y-visibility-hidden-cual-es-la-diferencia/</link>
                <guid isPermaLink="false">65e737ee1222b503eefb0f37</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Angel Santana ]]>
                </dc:creator>
                <pubDate>Fri, 08 Mar 2024 07:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/03/11.-display-visibility-2.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/css-display-none-and-visibility-hidden-the-difference/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">CSS display:none and visibility:hidden – What's the Difference?</a>
      </p><p><code>display:none</code> y <code>visibility:hidden</code> son dos declaraciones de estilos que puedes usar para ocultar elementos en la pantalla con CSS. Pero, ¿cuáles son las diferencias entre ellos?</p><p>Al crear aplicaciones, hay ocasiones en las que deseas ocultar elementos visualmente (no eliminarlos del DOM, solo de la pantalla). Puedes hacer esto de diferentes maneras.</p><p>Dos enfoques comunes incluyen el uso de la propiedad <code>display</code> con el valor <strong><strong>none</strong></strong> o la propiedad &nbsp;<code>visibility</code> con el valor <strong><strong>hidden</strong></strong>.</p><p>Aunque ambos enfoques ocultan el elemento visualmente, hacen que el elemento se comporte de diferentes maneras. Explicaré estas diferencias en este artículo.</p><p>Este es el ejemplo que usaré para explicar cómo funciona todo esto:</p><p>El HTML:</p><pre><code class="language-html">&lt;div class="container"&gt;
  &lt;div class="block1"&gt;&lt;/div&gt;
  &lt;div class="block2"&gt;&lt;/div&gt;
  &lt;div class="block3"&gt;&lt;/div&gt;
&lt;/div&gt;
</code></pre><p>Y el CSS:</p><pre><code class="language-css">.container {
  padding: 20px;
  width: max-content;
  display: flex;
  border: 1px solid black;
}

.block1,
.block2,
.block3 {
  height: 40px;
  width: 120px;
}

.block1 {
  background-color: rgb(224, 110, 49);
  margin-right: 20px;
}

.block2 {
  background-color: rgb(77, 77, 234);
  margin-right: 20px;
}

.block3 {
  background-color: rgb(12, 154, 142);
}
</code></pre><p>Tenemos un <code>div</code> con una clase de <strong><strong>container</strong></strong>. Este <code>div</code> tiene tres <code>divs</code> hijos con clases de <strong><strong>block1</strong></strong>, <strong><strong>block2</strong></strong> y <strong><strong>block3</strong></strong>, respectivamente. Hemos especificado algunos estilos para los <code>divs</code>. El primer hijo <code>div</code> es <code>orange</code>, el segundo es <code>blue</code>, y el tercero es <code>teal</code>.</p><p>Aquí está el resultado:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/12/image-77.png" class="kg-image" alt="image-77" width="600" height="400" loading="lazy"></figure><h2 id="c-mo-utilizar-display-none-en-css"><strong>Cómo utilizar <code>display: none</code> en CSS</strong></h2><p>La propiedad <code>display</code> establece cómo se muestra un elemento (como <strong><strong>inline</strong></strong> o <strong><strong>block</strong></strong>) y también determina el diseño de los elementos hijos de un elemento padre (como <strong><strong>flex</strong></strong>, <strong><strong>grid</strong></strong>, etc.).</p><p>Con un valor <strong><strong>none</strong></strong> para esta propiedad, la visualización del elemento se desactiva. Esto significa que el elemento – así como sus hijos – no se mostrarán. El documento se representa sin el elemento, <strong>como si no existiera</strong>.</p><p>Ahora veremos cómo funciona <code>display: none</code>. A continuación se muestra un ejemplo con este estilo aplicado al elemento <strong><strong>.block2</strong></strong>:</p><pre><code class="language-css">.block2 {
  background-color: rgb(77, 77, 234);
  margin-right: 20px;
  display: none;
}
</code></pre><p>Aquí está el resultado:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/12/image-78.png" class="kg-image" alt="image-78" width="600" height="400" loading="lazy"></figure><p>Como puedes ver aquí, el elemento <strong><strong>.container</strong></strong> ha reducido su ancho. Es como si el elemento <strong><strong>.block2</strong></strong> no existiera. Debido a que usamos <code>display:none</code> en este elemento, no se representa en el documento. Entonces su espacio en la pantalla queda vacío para que lo ocupen otros elementos.</p><p>También podemos probar esto moviendo y agregando <code>display: none</code> al elemento <strong><strong>.block1</strong></strong>:</p><pre><code class="language-css">.block1 {
  background-color: rgb(224, 110, 49);
  margin-right: 20px;
  display: none;
}

.block2 {
  background-color: rgb(77, 77, 234);
  margin-right: 20px;
  display: none;
}
</code></pre><p>El resultado:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/12/image-79.png" class="kg-image" alt="image-79" width="600" height="400" loading="lazy"></figure><p>Aquí ves que <strong><strong>.block1</strong></strong> y <strong><strong>.block2</strong></strong> no se representan, por lo que sus espacios están ocupados.</p><h2 id="c-mo-utilizar-visibility-hidden-en-css"><strong>Cómo utilizar <code>visibility: hidden</code> en CSS</strong></h2><p>La propiedad <code>visibility</code>, especifica si un elemento es visible o no. Pero esta propiedad no afecta el diseño del elemento. Esta es la principal diferencia en comparación con la propiedad <code>layout</code>.</p><p>Con un valor <strong><strong>hidden</strong></strong> para esta propiedad, el elemento al que se aplica se vuelve "invisible". El espacio requerido por el modelo de cajas del elemento permanece, pero el elemento en sí está oculto.</p><p>Veamos cómo se aplica esta propiedad a nuestro ejemplo anterior. Aquí está el resultado de este estilo aplicado al elemento <strong><strong>.block2</strong></strong>:</p><pre><code class="language-css">.block2 {
  background-color: rgb(77, 77, 234);
  margin-right: 20px;
  visibility: hidden;
}
</code></pre><p>El resultado:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/12/image-80.png" class="kg-image" alt="image-80" width="600" height="400" loading="lazy"></figure><p>Como notarás aquí, a diferencia de <code>display: none</code>, el elemento <strong><strong>.block2</strong></strong> es invisible, pero su diseño permanece intacto. De hecho, el <code>margin-right</code> sobre este elemento todavía está ahí. Sólo el elemento en sí está oculto.</p><p>Agreguemos también este estilo a <strong><strong>.block1</strong></strong> para ver el resultado:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/12/image-81.png" class="kg-image" alt="image-81" width="600" height="400" loading="lazy"></figure><p>Ahora ambos elementos son invisibles, pero aún se representan en el documento, por lo que su espacio no está vacío.</p><p>Lo siguiente que quizás estés pensando es "¿Cuál es la diferencia entre <code>visibility: hidden</code> y <code>opacity: 0</code>?"</p><h2 id="visibility-hidden-vs-opacity-0"><strong><code>visibility: hidden</code> vs <code>opacity: 0</code></strong></h2><p>Ambos estilos se ven muy similares. Puedo mostrarte esto reemplazando <code>visibility:hidden</code> con <code>opacity:0</code> en nuestros ejemplos anteriores:</p><pre><code class="language-css">.block1 {
  background-color: rgb(224, 110, 49);
  margin-right: 20px;
  opacity: 0;
}

.block2 {
  background-color: rgb(77, 77, 234);
  margin-right: 20px;
  opacity: 0;
}
</code></pre><p>El resultado:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/12/image-82.png" class="kg-image" alt="image-82" width="600" height="400" loading="lazy"></figure><p>Puedes ver que visualmene no hay diferencia entre este resultado y el anterior. Pero hay una diferencia en el comportamiento de los elementos.</p><p>Los elementos con <code>visibility: hidden</code> <strong>no son interactuables</strong>. No sé si esta es la mejor palabra para esto 😂 pero lo que quiero decir es que los usuarios no pueden interactuar (por ejemplo, haciendo click) con dichos elementos. Esto se debe a que dichos elementos son realmente invisbles.</p><p>Los elementos con <code>opacity: 0</code>, por otro lado, <strong>son interactivos</strong>, ya que en realidad son visibles, solo que están transparentes. La propiedad <code>opacity</code> no especifica la visibilidad de un elemento – solo especifica la transparencia.</p><p>Podemos comprobar esta diferencia con un ejemplo. Digamos que el elemento <strong><strong>.block2</strong></strong> tenía un atributo <code>onclick</code> como este:</p><pre><code class="language-html">&lt;div class="block2" onclick="alert('hello')"&gt;&lt;/div&gt;
</code></pre><p>Si usa <code>visibility:hidden</code> en este elemento, al hacer click en el espacio donde está el elemento, no se activará nada. Pero si usa <code>opacity:0</code> en este elemento, al hacer click en ese mismo espacio, se activará el modal de alerta que muestra el texto "hello". Puede probar esto en su navegador para verlo en vivo.</p><h2 id="casos-de-uso-para-display-none-y-visibility-hidden"><strong>Casos de uso para <code>display:none</code> y <code>visibility:hidden</code></strong></h2><p>Estas declaraciones de estilo pueden tener diferentes propósitovs dependiendo de lo que desee lograr.</p><p>En mi experiencia, uso <code>display:none</code> cuando quiero ocultar algo. Piense en ocultar una ventana emergente, un elemento de la lista de tareas pendientes en la interfaz de usuario o la barra lateral de una página.</p><p>El uso de <code>visibility:hidden</code> para estas cosas hace que se conserve su espacio y podría hacer que una página parezca extraña cuando hay un espacio en blanco.</p><p>Las únias veces que utilizo <code>visibility:hidden</code> es cuando quiero mostrar alguna animación mientras "oculto" o "muestro" un elemento. La propiedad <code>display</code> no permite animar entre valores, pero la propiedad <code>visibility</code> sí. Uso <code>visibility</code> en combinación con <code>opacity</code> para tales animaciones de aparición y desaparición gradual.</p><h2 id="concluyendo"><strong>Concluyendo</strong></h2><p>En resumen, <code>display: none</code>, <code>visibility: hidden</code>, y <code>opacity: 0</code> se pueden usar para ocultar elementos visualmente, pero:</p><ul><li><code>display: none</code> desactiva el diseño de los elementos, por lo que no se representan.</li><li><code>visibility: hidden</code> oculta los elementos sin cambiar su diseño.</li><li><code>opacity: 0</code> hace que los elementos sean transparentes, pero los usuarios pueden interactuar con ellos.</li></ul><p>Si te ha gustado este artículo, compártelo con otros para aprender 😇</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
