¿Hay un opuesto a la exhibición: ninguno?


Lo opuesto a visibility: hidden es visibility: visible. Del mismo modo, ¿hay algo opuesto para display: none?

Muchas personas se confunden al descubrir cómo mostrar un elemento cuando tiene display: none, ya que no es tan claro como usar la propiedad visibility.

Podría usar visibility: hidden en lugar de display: none, pero no da el mismo efecto, así que no voy con él.

 147
css
Author: RockPaperLizard, 2013-07-13

11 answers

display: none no tiene un opuesto literal como visibility:hidden.

La propiedad visibility decide si un elemento es visible o no. Por lo tanto, tiene dos estados (visible y hidden), que son opuestos entre sí.

La propiedad display, sin embargo, decide qué reglas de diseño seguirá un elemento. Hay varios tipos diferentes de reglas sobre cómo se diseñarán los elementos en CSS, por lo que hay varios valores diferentes(block, inline, inline-block etc - ver el documentación para estos valores aquí ).

display:none elimina un elemento del diseño de la página por completo, como si no estuviera allí.

Todos los demás valores para display hacen que el elemento sea una parte de la página, por lo que en cierto sentido son todos opuestos a display:none.

Pero no hay un valor que sea el contrario directo de display:none, al igual que no hay un estilo de cabello que sea lo contrario de "calvo".

 130
Author: Paul D. Waite,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-10 14:39:54

Un verdadero opuesto a display: none no existe (todavía).

Pero display: unset es muy cercano y funciona en la mayoría de los casos.

Desde MDN (Red de Desarrolladores de Mozilla):

La palabra clave CSS unset es la combinación de las palabras clave initial y inherit. Al igual que estas otras dos palabras clave de CSS, se puede aplicar a cualquier propiedad CSS, incluida la abreviatura de CSS all. Esta palabra clave restablece la propiedad a su valor heredado si hereda de su padre o a su valor inicial si ni. En otras palabras, se comporta como la palabra clave inherit en el primer caso y como la palabra clave inicial en el segundo caso.

(fuente: https://developer.mozilla.org/docs/Web/CSS/unset)

Tenga en cuenta también que display: revert se está desarrollando actualmente. Véase MDN para más detalles.

 60
Author: RockPaperLizard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-18 19:21:39

Al cambiar el elemento display en Javascript, en muchos casos una opción adecuada para 'deshacer' el resultado de element.style.display = "none" es element.style.display = "". Esto elimina la declaración display del atributo style, revirtiendo el valor real de la propiedad display al valor establecido en la hoja de estilos para el documento (al valor predeterminado del navegador si no se redefine en otro lugar). Pero el enfoque más confiable es tener una clase en CSS como

.invisible { display: none; }

Y añadiendo/eliminando este nombre de clase a/desde element.className.

 24
Author: Ilya Streltsyn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-13 14:46:23

Puede usar

display: normal;

Funciona normalmente.... Es un pequeño hackeo en css;)

 6
Author: indera,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-05 10:01:29

Como explica Paul, no hay un opuesto literal de display: ninguno en HTML, ya que cada elemento tiene una visualización predeterminada diferente y también puede cambiar la visualización con una clase o estilo en línea, etc.

Sin embargo, si usa algo como jQuery, sus funciones mostrar y ocultar se comportan como si hubiera un opuesto a mostrar ninguno. Cuando se oculta, y luego se muestra un elemento de nuevo, se mostrará exactamente de la misma manera que lo hacía antes de que se ocultara. Lo hacen almacenando el antiguo valor de la mostrar la propiedad al ocultar el elemento para que cuando lo muestre de nuevo se muestre de la misma manera que lo hizo antes de ocultarlo. https://github.com/jquery/jquery/blob/740e190223d19a114d5373758127285d14d6b71e/src/css.js#L180

Esto significa que si establece un div, por ejemplo, para mostrar en línea, o bloque en línea y lo oculta y luego lo muestra de nuevo, se mostrará una vez más como mostrar en línea o bloque en línea igual que antes

<div style="display:inline" >hello</div>
<div style="display:inline-block">hello2</div>
<div style="display:table-cell" >hello3</div>

Script:

  $('a').click(function(){
        $('div').toggle();
    });

Aviso que la propiedad display del div permanecerá constante incluso después de que se oculte (display: none) y se muestre de nuevo.

 3
Author: user3589536,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-05 08:28:28

Uso display:block; Funciona para mí

 3
Author: Pradeep Behera,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-10 16:40:57

En el caso de una hoja de estilo para imprimir, utilizo lo siguiente:

/* screen style */
.print_only { display: none; }

/* print stylesheet */
div.print_only { display: block; }
span.print_only { display: inline; }
.no_print { display: none; }

Usé esto cuando necesitaba imprimir un formulario que contenía valores y los campos de entrada eran difíciles de imprimir. Así que agregué los valores envueltos en un lapso.etiqueta print_only (div.print_only se usó en otro lugar) y luego aplicó la clase .no_print a los campos de entrada. Así que en la pantalla verías los campos de entrada y cuando se imprimen, solo los valores. Si desea obtener fantasía que podría utilizar JS para actualizar los valores en las etiquetas span cuando se actualizaron los campos, pero eso no era necesario en mi caso. Tal vez no la la solución más elegante, pero funcionó para mí!

 1
Author: TonyP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-31 20:07:01

La mejor respuesta para display: none es

display:inline

O

display:normal
 -1
Author: Yasir Akbar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-18 05:02:41

Visibility:hidden ocultará el elemento pero el elemento es su con DOM. Y en caso de display: none eliminará el elemento del DOM.

Así que tiene la opción de ocultar o mostrar el elemento. Pero una vez que lo eliminas ( me refiero a mostrar ninguno) no tiene un valor opuesto claro. display tiene varios valores como display: block, display: inline, display: inline-block y muchos otros. puede comprobarlo desde el W3C.

 -3
Author: Hardik Sondagar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-14 02:56:48

Puedes usar esto display:block; y también agregar overflow:hidden;

 -3
Author: Bel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-18 05:03:53

El mejor "opuesto" sería devolverlo al valor predeterminado que es:

display: inline
 -5
Author: TimNguyenBSM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-29 21:38:38