Comment pouvez-vous régler la hauteur de jQuery UI accordion?
Dans mon INTERFACE j'ai un accordéon de configuration comme ceci:
<div id="object_list">
<h3>Section 1</h3>
<div>...content...</div>
//More sections
</div>
L'accordéon fonctionne correctement lorsqu'il est formé, et il semble s'ajuster de lui-même pour le contenu à l'intérieur de chacune des sections. Cependant, si je puis ajouter plus de contenu dans l'accordéon après la .accordéon() appel (via ajax), à l'intérieur de la section finit par déborder.
Depuis l'accordéon est en cours de création avec presque pas de contenu, tous à l'intérieur divs sont extrêmement petites, et donc le contenu déborde et vous obtenez des accordéons avec des barres de défilement à l'intérieur avec presque pas de zone de visualisation.
J'ai tenté d'ajouter min-hauteur de styles pour les object_list div, et le contenu divs en vain. Ajouter le min-height à l'intérieur des divs sorte de travaillé, mais il a sali l'accordéon animations, et de l'ajouter à la object_list div n'a absolument rien fait.
Comment puis-je obtenir une taille raisonnable de l'sections de contenu, même quand il n'y a pas assez de contenu pour remplir ces sections?
Vous devez vous connecter pour publier un commentaire.
Lorsque vous déclarez l'accordéon de contrôle de la div, vous pouvez mettre une hauteur dans le style pour la balise div. Vous pouvez ensuite régler le fillSpace: vrai propriété à la force de l'accordéon de contrôle pour remplir le div de l'espace, peu importe quoi. Cela signifie que vous pouvez définir la hauteur de ce qui fonctionne le mieux pour vous page. Vous pouvez alors changer la hauteur de la div lorsque vous ajoutez votre code
Si vous voulez de l'accordéon à redimensionner dynamiquement le contenu qu'il contient en tant que de besoin, vous pouvez effectuer les opérations suivantes truc publié sur le site de jQuery UI.
Cela signifie que lorsque vous sélectionnez une zone avec beaucoup de texte, l'accordéon va recalculer il.
clearStyle
etfillSpace
options. Vous devez maintenant utiliser la nouvelleheightStyle
option. Voir ma réponse pour plus d'info.'heightStyle': 'content'
œuvres. Voir stackoverflow.com/a/49077271/999943autoHeight a été dépréciée en 1.9, et retiré dans 1.10.
Utilisation:
automatique de la taille de votre intérieur div.
Mise à JOUR:
Je vois que c'est encore un post, j'ai donc décidé de m'assurer que ma réponse est toujours valide. Il semble que cela peut ne plus fonctionner en jQuery UI 1.11. Il note que le [contenu] propriété a été abandonné, et à utiliser [panneau] à la place. Prise de l'extrait de code maintenant ressembler à quelque chose de plus comme ceci:
JE N'AI PAS ENCORE TESTÉ, JUSTE TROUVÉ, ET SERA DE RETOUR ET SUPPRIMER CE COMMENTAIRE QUAND J'AURAI LE TEMPS DE TESTER
heightStyle: "content",
de fixer la hauteur standard 500px. Merci!panel
n'existe pas... Voir ma réponse ci-dessous pour plus de détails. stackoverflow.com/a/49077271/999943À partir de la documentation il semble que vous aurez besoin de mettre en
...et aussi
Je crois que l'utilisation de clearStyle permet d'ajouter dynamiquement le contenu sans l'Accordéon obtenir de la manière.
Alors essayez cette...
Elle ressemble à toutes les réponses ici sont maintenant en utilisant des options dépréciées.
Avec la dernière version de jQuery UI (1.10.x), vous devez initialiser votre accordéon avec
heightStyle: "fill"
pour obtenir l'effet escompté..Vous pouvez en lire plus à l'jQuery UI API docs ici: http://api.jqueryui.com/accordion/#option-heightStyle
Si votre page dimensions changent de manière dynamique et vous avez besoin de recalculer votre accordéon taille, vous devez actualiser votre accordéon à l'aide de la
refresh
méthode:C'est préférable que l'
resize
méthode est maintenant obsolète.Réglage de la DIV, la hauteur d'fera l'affaire.
Désactivation automatique fonctionne... (avec une chaîne en plus de l'auto ou de remplissage) comme la solution à raconter à utiliser le "panneau de configuration". Mais...
Qui est le même que tous les déchets de la chaîne de
"heightStyle"
. Le"heightStyle"
vous êtes à la recherche pour est"content"
.(valeurs pour l'option
"heightStyle"
en jQuery UI 1.12)"auto"
: Tous les panneaux seront à la hauteur de la plus haute du panneau."fill"
: Développer à la hauteur en fonction de l'accordéon parent hauteur."content"
: Chaque panneau sera seulement aussi grand que son contenu.Exemple:
https://jsfiddle.net/qkxyodpq/5/
Espère que ça aide.
Dans votre jquery-ui.js recherchez la section suivante et modifier
heightstyle: "auto"
àheightstyle: "content"
donc la mise à jour du fichier ressemble à ceci.Il suffit d'appeler le accordéons
.resize()
méthode, cela va recalculer sa taille.http://docs.jquery.com/UI/Accordion#method-resize
.accordion("resize")
au lieu de.resize()
.accordion("refresh")
à la place.J'ai récemment mis en place un accordéon qui extrait le contenu via ajax lors d'un onglet est activé et a couru dans le même problème. J'ai essayé d'utiliser certains des suggestions posté ici, mais ils n'ont jamais assez a augmenté le panneau correctement jusqu'à ce que j'ai défini la heightStyle de contenu.
Je suis à l'aide de jQuery-UI version 1.10.4.
pour moi, la suite travaillé avec précision.
});