Come rendere all'altezza di un dijit Accordionpane dinamica
-
20-09-2019 - |
Domanda
Non riesco a capire come dire al accordioncontainer per impostare l'altezza del suo riquadro di fisarmonica per l'auto in modo che l'altezza del riquadro è dinamico a seconda del suo contenuto.
Nel codice seguente sto aggiungendo due riquadri a un accordioncontainer. Uno ha un'altezza di 10px e un altro ha 90px ma in entrambi i casi l'altezza del riquadro fisarmonica è calcolato a 10px. Sembra che il suo prendere sempre l'altezza del primo.
var accordionContainer = new dijit.layout.AccordionContainer({'id':'accContainer'}).placeAt("test");
var accordPane = new dijit.layout.ContentPane({"title": "test", "content":"<div style='height:10px'>sdfsdfsdf</div>"});
var accordPane2 = new dijit.layout.ContentPane({"title": "test1", "content":"<div style='height:90px'>sdfsdfsdf</div>"});
accordionContainer.addChild(accordPane);
accordionContainer.addChild(accordPane2, 1);
accordPane.startup();
accordPane2.startup();
accordionContainer.startup();
accordionContainer.selectChild(accordPane2);
Sto usando dojo 1.3.2
Soluzione 2
I escludeva la funzione _getTargetHeight di dijit.layout.AccordionContainer e torno sempre 'auto' per l'altezza. Animazione di vetri scorrevoli non funziona correttamente, ma non è così evidente.
_getTargetHeight: function(/* Node */ node){
// summary:
//For the given node, returns the height that should be
//set to achieve our vertical space (subtract any padding
//we may have).
//This is used by the animations.
//var cs = dojo.getComputedStyle(node);
//return Math.max(this._verticalSpace - dojo._getPadBorderExtents(node, cs).h, 0);
return 'auto';
}
Altri suggerimenti
Non è attualmente possibile. Ho scritto un codice di blog / campione di spiegare perché e come generare un gruppo di TitlePane di che si espandono a loro altezza naturale (piuttosto che l'altezza del contenitore per l'AccordionContainer):
http: // www. sitepen.com/blog/2008/10/21/quick-fixes-and-dojo-support/
Si richiede che un singolo widget di TitleGroup (personalizzato, codice blog), e mettendo dentro di TitlePane. Ogni si comportano per lo più come un AccordionPane (con title = "" attributi, href = "" capacità di carico, ecc) e delegati titolo scatta per gestire lo stato aperto / chiuso di fratelli.
provare a impostare le dimensioni sul contenitore di fisarmonica stessa per una dimensione che è abbastanza grande da contenere il vostro soddisfare più i riquadri titolo necessarie, per es.
#accContainer{
height: 120px;
width: 200px;
}
L'avvio () chiamata sul contenitore dovrebbe iniziare i riquadri bambino per voi.
Ora si può anche semplicemente usare dijit.TitlePane
s senza container a tutti. È possibile passare open: false
quando si crea un'istanza i vetri a partire bene chiuse. Credo che li racchiude in un dojox.widget.TitleGroup
emulerà il comportamento di avere 1 aperto alla volta.