Afficher le pied de page dans PrimeFaces modèle, lorsque fullPage de p:mise en page est définie sur false
Pied de page ne s'affiche pas (en fait, il est mal affiché en haut de la page), lorsque fullPage
est définie sur false dans PrimeFaces modèle.
<p:layout fullPage="false">
<p:layoutUnit position="north" size="135">
<!--Put north content here, if any-->
</p:layoutUnit>
<p:layoutUnit position="west" size="225" header="Menu Item" collapsible="true">
<!--Put west content here, if any-->
</p:layoutUnit>
<p:layoutUnit position="center" size="2500" maxSize="2500">
<!--Put center content here, if any-->
</p:layoutUnit>
<p:layoutUnit position="east" size="175">
<!--Put east content here, if any-->
</p:layoutUnit>
<p:layoutUnit position="south" size="90">
<!--Put south/footer content here, if any-->
</p:layoutUnit>
</p:layout>
Comment afficher un pied de page, lorsque fullpage
est définie à false?
EDIT :
si <p:layout>
est donné une hauteur comme suit,
<p:layout fullPage="false" style="height: 2000px;">
puis le pied de page est affiché au bas de la page en fonction de la valeur de la height
attribut CSS mais il n'est pas encore collant, pied de page - il ne pas s'ajuster selon le contenu de la page.
Alors, Est-il un moyen de le rendre collant?
Mise à jour :
Le comportement reste stationnaire sur PrimeFaces 5.3 final (libération), lorsque fullPage
est fixé à false
comme dit précédemment tout au long de la question.
En effet, c'est clairement un bug. Cette partie est réparable en donnant
html,body,.ui-layout-container
une hauteur de 100%, mais ensuite il y a un peu de JavaScript passe automatiquement ré-ajuste la hauteur sur cette base, l'amenant à se comporter presque exactement comme fullPage="true"
. Si vous souhaitez continuer à utiliser <p:layout>
, la solution/contournement va être méchant. Il serait préférable de rapporter le bogue de PF gars et re-vérifier encore une fois on s'est fixé. En attendant, êtes-vous ouvert à JS/jQuery en fonction des solutions de contournement?Le bug a déjà été signalé par VeenarM comme lié, dans sa réponse, mais il n'a pas encore eu d'un premier examen. Par conséquent, il est raisonnable de penser qu'il ne va pas être fixée au moins jusqu'à ce que PrimeFaces version 5.0. De toute façon, je suis à la recherche d'une solution de contournement, si tout, peu importe, si c'est méchant/maladroit/laid/irritant.
J'ai eu également le même post sur le PrimeFaces Forum de la Communauté, mais n'a pas trouvé une solution de contournement.
J'ai fait du pur CSS tentatives, plein de
!important
mess pour remplacer inline/JS généré styles et un autre JS oneliner ou deux pour modifier le DOM HTML structure. Je suis venu près, mais le tout est très fragile et se rompt dès lors j'ai par exemple redimensionner la fenêtre, ou quand j'ai de développer/réduire "l'occident" unité, en raison de la layout.js
. C'est simple, clair terrible. Je suis très tenté de dire simplement déposer l'ensemble de la PF disposition de chose et de composer la mise en page vous-même le "HTML" de façon à l'aide de certains divs (ou p:panneaux) et quelques lignes de CSS. Mais alors il n'est pas pliable/redimensionnable/refermable.
OriginalL'auteur Tiny | 2014-03-22
Vous devez vous connecter pour publier un commentaire.
De visualiser facilement ce que vous en fin de compte (et à confirmer vos besoins pour moi), voici en SSCCE saveur un pur HTML/CSS solution de ce que vous êtes (apparemment) pas de demander. Le sticky footer solution est en grande partie basée sur Ryan Fait la démarche de (un
min-height:100%
et une marge négative sur l'élément conteneur qui couvre tout, mais le pied de page), et cela ne prend pas en charge IE6/7 plus (en raison de:after
pseudoselector), par la présente, la simplification du code HTML (pas de non-sémantique désordre comme<div id="pushfooter">
nécessaire). Remarque: les couleurs de fond sont purement pour la visualisation.Remarque: en raison de la façon dont les flotteurs de travail, la
<div id="side">
(la "east unité") a, dans le balisage HTML pour être placé avant tous les non-éléments flottants à la même "ligne", comme le<div id="content">
(le "centre de l'unité"), sinon il va être aligné par rapport au bas de la dernière non flottant élément.Maintenant, afin d'atteindre exactement la même chose avec le
<p:layout>
chose, qui, fondamentalement, rend presque la même structure HTML, uniquement avec le pied de page est encore à l'intérieur du conteneur et de l'est de l'unité après le centre de l'unité, vous devez vous assurer qu'aucun de la disposition des unités est pliable/caisses/redimensionnable (ces attributs tous déjà par défaut àfalse
et peut donc être omis par souci de concision) et que vous appliquez la PrimeFaces-builtin clearfix classe de styleui-helper-clearfix
sur le conteneur de l'unité pour effacer les flotteurs (sinon, le menu, le contenu et le côté recoupe le pied de page lorsque l'écran est réduit à la verticale):Vous pouvez ensuite appliquer le code CSS suivant dans votre PrimeFaces-remplacer la feuille de style de supprimer/remplacer tous les "pas pertinent" PrimeFaces générés par les propriétés CSS sur ces disposition des unités en définissant le positionnement absolu avec des offsets fixes/dimensions de retour à initiale/par défaut les valeurs (note: la fonction exacte de
!important
est d'être en mesure de remplacer codé en dur ou en ligne,style
propriétés d'une véritable feuille de style, il y a dans ce cas particulier, tout simplement pas d'autre option aussi longtemps que vous n'avez pas à réécrire PrimeFaces composants et moteurs de rendu). Le point clé est que vous devez vous retrouver avec exactement le même code HTML/CSS (par défaut) comme le SSCCE:Et enfin ajouter le script suivant dans l'ordre de bouger le côté (à l'est de l'unité) avant le contenu (unité centrale), de sorte que la flotte aller intention, et pour déplacer le pied de page à la fin de corps, de sorte qu'il est à l'extérieur de l'élément conteneur:
Assurez-vous que ce script est ré-exécuté lorsque vous effectuez une mise à jour ajax avec
@all
sur le même point de vue pour une raison quelconque (qui en est à son propre une mauvaise idée).Avec cette "solution" (je l'appellerais plutôt un hack et il suffit de jeter tout de suite et aller pour un sain d'esprit et de nettoyer le HTML/CSS solution, si nécessaire avec
<p:panel>
s au lieu de<div>
s), c'est encore un peu fragile; l'auto-incluslayout.js
script auto-ajuste la disposition des unités sur chaque fenêtre de redimensionnement. Mais jusqu'à présent, ils ne semblent pas casser quoi que ce soit dans tous les navigateurs modernes que j'ai essayé (IE>8).J'ai certains composants de l'ouest et de l'est des unités comme
<p:slider>
affiché à l'intérieur de<p:panel>
et une couleur de la liste affichée à l'aide de<p:dataGrid>
à l'intérieur de<p:panel>
. Ils sont tous foiré, leurs positions, l'apparence, la hauteur, la largeur... considérablement changé. Il nécessite un renforcement de la CSS/JS pour les afficher correctement. Je manque beaucoup de connaissances de HTML/CSS/JS (quelqu'un avec suffisamment de connaissances en HTML/CSS/JS pouvez bien sûr le faire, mais certainement pas moi), j'ai quitté avec certains choix sont, d'exclure le pied de page à partir du modèle à jamais, utiliserfullPage="true"
ou de l'utilisation de la plaine de vanille HTML/CSS modèle ha ha 🙂J'ai rapidement essayé un
<p:panel><p:inputText id="i"/><p:slider for="i"/></p:panel>
dans le centre de l'unité, semble correct.Les composants sur le centre de l'unité de l'air fin, mais les composants à l'ouest et à l'est des unités de shuffle.
Il n'y a aucune unité est dans la question/réponse? Si vous le gardez, la réponse devrait fonctionner, sinon la question et la réponse doit être modifiée.
OriginalL'auteur BalusC
Cela peut ou peut ne pas être un bug dans PrimeFaces - vous êtes mieux de demander. La mise en page est en fait sur votre page si vous vérifiez la source, mais son positionnement est au-dessus de la tête, probablement parce qu'il n'a aucune idée de l'endroit où il doit être. Dans une pleine page de il sait que sa position généré par la page, mais sinon, il pourrait être n'importe où vous voulez qu'il soit. Essayez d'utiliser CSS pour le déplacer etc, reportez-vous à.
et l'utilisation
styleClass
, etc pour attacher des classes, mon hack était juste pour utiliser!important
que vous ne devriez pas vraiment le faire.etc..
Bien que je suis plus enclin à penser que c'est un bug comme aucun des CSS est appliqué correctement.
J'ai créé un rapport sur PF et j'espère que quelqu'un peut donner un peu plus d'informations sur le problème.
Je ne sais pas, j'en sais assez CSS pour obtenir de moi, c'est quelqu'un elses travail 🙂 Comme je l'ai mentionné, il semble que la surveillance et probablement vous préférerez peut-être utiliser fullPage="true" pour l'instant. Je vais reponsd de retour avec ce que jamais je obtenir de l'IssueTracker sur Primefaces site web.
pas de
!important
, veuillezon n'a visiblement pas lu l'ensemble des commentaires disant: "qui vous ne devriez pas vraiment faire"...
Le statut d'un problème sur le tracker est NotMovedToGitHub : "le Marquage comme NotMovedToGitHub, si vous souhaitez fournir d'autres commentaires, veuillez créer un nouveau ticket sur GitHub avec des détails de continuer la discussion là-bas."
OriginalL'auteur VeenarM
Apparemment
<p:mise en page>
nécessite une hauteur appropriée, lorsquefullPage
est fixé àfalse
. La hauteur est nécessaire pour afficher le pied de page à la position appropriée (il doit se placer au bas de la fenêtre du navigateur) comme,Appris de PrimeFaces Extensions
<pe:mise en page>
qui ne fonctionne pas avec l'erreur suivante dans la boîte d'alerte JavaScript au chargement de la page,si
fullPage
de<pe:layout>
est fixé àfalse
et la hauteur n'est pas défini. Pour que cela fonctionne correctement, il a besoin de la hauteur comme suit.Il est difficile de dire si c'est délibéré ou intentionnel.
Il serait délicieux, si quelqu'un pouvait exposer comment ajuster le pied de page selon le contenu de la page, un collant pied de page.
Mais la question n'est pas l'état qui.
Annexé à la question du corps.
OriginalL'auteur Tiny
Pour s'assurer que la mise en page DIV a une hauteur relative :
1_ Tous les composants entre le CORPS et la mise en page doit avoir une hauteur relative, la sorcière doit être de 100%.
2_ Toujours utiliser des DIV à la place de l'écart entre le CORPS et votre mise en page (pas des éléments inline).
exemple :
Dans ce cas, il dosent, ajoutez ce code à votre page, (j'ai corrigé il y a longtemps mais sa a probablement un rapport avec le problème) :
je vous conseille aussi, utiliser la mise en page de PF de l'Extension de la bibliothèque, de ses plus stable, un modèle peut être trouvé ici erp.agitech.net admin/pass
<html>
) et 2) n'est pas nécessaire à tous (donc il est parfaitement bien de n'avoir aucune) encore de votre réponse, cela implique que. Que l'extrait de code JavaScript serait plus utile si vous expliquer en détail ce qu'est exactement vous avez changé et pourquoi, au lieu de rechercher&trouver jeu.1) Pas de travail pour moi, sans aller jusqu'à HTML, comme je l'ai dit tous les composants entre le CORPS et la Mise en page, 2) je ne comprends pas vous mon anglais est limité
Euh, c'est de travailler pour vous parce que vous avez utilisé le script. Div/span autour de la mise en page est complètement inutile. Avec ce script, vous n'avez pas besoin de déclarer les hauteurs.
OK, maintenant je comprends u, comme je l'ai dit je le modifie, il y a longtemps, et maintenant je suis en utilisant le PF extension Mise en page par défaut PF mise en page, mais je pense que j'ajoute cette ligne.jq.css('height', $(window).hauteur()-10);
L'exemple de montrer qu'aucune DURÉE doit être comprise entre le CORPS et la Mise en page sinon la Mise en page de l'initialisation échoue
OriginalL'auteur Nassim MOUALEK