HTML, Body hauteur de 100% ne fonctionne pas

Ok, donc j'ai une application mobile avec Cordova et AngularJS. Pour le style j'utilise Moins et Bootstrap.


Problème

Dans l'application mobile, j'ai essayé de la taille de mes divs avec pourcentage (%). Mais cela ne semble pas fonctionner. Je n'arrive pas à changer le comportement suivant: The divs are as big as the content inside of them. Ce problème semble assez facile et j'ai essayé plusieurs options ici (stackoverflow) ainsi que sur le web. Je n'ai pas encore trouvé la solution pour le fixer et il est assez ennuyeux.


J'ai essayé

Ajoutant html, body { height: 100% },

Ajoutant html, body, #canvas { height: 100%}

Ajoutant #canvas { min-height: 100% }

Ajoutant html { height: 100% } body { min-height: 100% }

Et beaucoup d'autres variations. À l'aide de px fonctionne, mais je ne sais pas quelle taille mon appareil mobile, de sorte que n'est pas vraiment très pratique.. (j'ai aussi utiliser bootstrap et certaines des requêtes de média pour le style).


Exemple

Quand j'ai ajouter des éléments à ma div-je obtenir le comportement suivant:

HTML, Body hauteur de 100% ne fonctionne pas

Je veux enlever ce blanc vide de l'espace, mais je ne peux obtenir que lors de l'utilisation de px au lieu de %.


Moins exemple:

html, body {
    background: transparent;
    height: 100%;
    margin: 0;
    padding: 0;    
}

#canvas {
    min-height: 100%;
}

body {
    -webkit-touch-callout: none;                 //prevent callout to copy image, etc when tap to hold 
    -webkit-text-size-adjust: none;              //prevent webkit from resizing text to fit 
    -webkit-user-select: node;                   //prevent copy paste, to allow, change 'none' to 'text'  
    min-height: 100%;
    margin: 0;
    padding: 0; 
    background-color: @cgiColor;  
}

.header {
    top: 0px;
    width: 100%;
    height: 5%;
    background: @companyColor;
    color: @textColor;
}

.incidentContainer {
    background: @appBodyColor;
    width: 100%;
    height: 70%;
}

.footer {
    position: absolute;
    color: @textColor;
    bottom: 0px;
    height: 15%;
    width: 100%;    
    background: @companyColor;
}

Informations supplémentaires

Je suis en utilisant AngularJS, pour mon application est une simple page de l'application. Mon index.html se présente comme suit:

<body oncontextmenu="return false" >  
   <div class="{{ pageClass}}"  ng-view ></div>        
   <script type="text/javascript" src="cordova.js"></script>
   <script data-main="main" src="lib/require.js"></script>
</body>

Avec bien sûr la norme des liens vers mon CSS feuilles, et ainsi de suite.
Toutes les autres pages sont inclus dans le "ng-view " et n'ont pas de ou balises. - Ce parce qu'ils sont inclus.


Solution

La solution était d'ajouter la règle CSS suivante:

div[ng-view]{
     height: 100%;
}

Cela a fonctionné, parce que tous les divs (sauf pour le html & corps) sont des enfants de cet élément. L'ajout de l'composée à 100% de la div de l'espace durée à 100% de l'écran et offre ainsi un espace pour le pourcentage de travail.

Les crédits vont à Jai pour cette réponse!

  • Nous allons avoir besoin de voir le rendu HTML de la structure.
  • ajouté le rendu HTML de la structure
  • Êtes-vous reportant à la rubrique "Informations Supplémentaires" de la section? Il ressemble Angulaire rend que le post-pageload. Vous pourriez peut-être ouvrir les Outils de développement sur la page chargée, cliquez <body>, puis cliquez sur Modifier le code HTML, et copie de la sortir de là? C'est une question de style, de sorte que nous ne sommes vraiment préoccupés par la façon dont le code HTML ressemble à la fin. Vous pouvez supprimer intérieure au niveau des pièces que vous croyez ne sont pas pertinentes (il suffit d'écrire "Beaucoup de Contenu" ou quelque chose)
  • ne peut toujours pas voir de rendu html, si votre code html est produit par l'angulaire, alors vous devez inspecter l'élément et collez le code html à partir de là
InformationsquelleAutor Mr.wiseguy | 2015-12-08