81 votes

Afficher Child Div dans Hidden Parent Div

Comment puis-je afficher une Div enfant tout en gardant sa Div parent cachée? Est-ce possible?

Mon code est ci-dessous:

  .Main-Div{
   display:none;
}

    Ceci est un peu de texte..
    Ceci est un peu de texte..

    Ceci est un peu de texte..
    Ceci est un peu de texte..

124voto

Patrick Read Points 1336

Définissez la visibilité de la classe parent en hidden ou collapse. Définissez celle de l'enfant en visible. Quelque chose comme cela :

.parent > .child
{
    visibility: visible;
}

.parent
{
    visibility: hidden;
    width: 0;
    height: 0;
    margin: 0;
    padding: 0;
}

Exemple complet : http://jsfiddle.net/pread13/h955D/153/

Modifié avec l'aide de @n1kkou

8 votes

Cela fonctionne bien, mais que se passe-t-il si vous ne voulez pas que vos éléments masqués occupent de l'espace? Je crois que la visibilité ne donne pas d'aide

1 votes

@PatrickRead concernant le commentaire ci-dessus, y a-t-il une solution qui utilise display: none? Ou quelque chose qui ne lui permettrait pas d'occuper de l'espace?

1 votes

@AlanH Oui, ajoutez .parent{ height:0; width:0; margin:0; padding:0; }

37voto

Headshota Points 11302

Je ne pense pas que ce soit possible.

Vous pouvez utiliser JavaScript pour extraire l'élément, ou le dupliquer puis l'afficher.

En jQuery, vous pourriez copier un élément.

var element = jQuery('.Inner-Div').clone();

Et ensuite l'ajouter à n'importe quel élément visible qui pourrait être approprié.

element.appendTo('certains éléments');

0 votes

Bonjour Shota.. Pourriez-vous m'aider avec un extrait de code javascript?

28voto

Luke Points 417

D'accord, pas possible avec display:none. Voici une solution différente qui cachera le parent et montrera l'enfant - cependant, la hauteur du parent ne sera pas réduite.

.Main-Div {
    position: relative;
    left: -9999px;
}

.Inner-Div {
    position: relative;
    left: 9999px;
}

Exemple: http://jsfiddle.net/luke_charde/jMYF7/

0 votes

Oui je pense que cela devrait être la vraie réponse, vous pouvez définir ceci comme media="print" et cela fonctionnera comme un charme, avec la réponse acceptée vous devriez pré-rendre votre dom de manière programmatique.

6voto

BremnerWafer Points 61

Pourquoi ne pas :

.Main-Div{
font-size:0px;
line-height:0;
margin:0;
padding:0;
height:0;

}

.Inner-Div{
font-size:12pt
}

au lieu de display:none si votre Main Div contient uniquement du texte ?

Cette solution devrait permettre de réduire le texte dans la div parent sans masquer la div enfant. Elle fonctionne également avec les lecteurs d'écran sans faire des choses étranges comme pousser la div hors de la vue ou dupliquer l'objet avec JS.

1voto

patrick Points 2038

J'ai utilisé une astuce jQuery pour remplacer le code parent par le code enfant. C'était quelque chose dont j'avais besoin pour mon problème spécifique, mais cela pourrait être utile pour quelqu'un d'autre:

   testcontent... void info from a template

      Je voulais seulement ce contenu

ensuite le code:

$(document).ready(function(){
   $("#wrapper").html($("#inside").html());
});

notez que cela ne modifiera pas les ID des DIV... une autre option est celle-ci (qui conservera les mêmes ID):

$(document).ready(function(){
   $("#wrapper").before($("#inside").outerHTML).remove();
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X