2011-06-27 24 views
14

Normalmente, al crear un elemento de datos = "página" elemento con jQuery móvil, se ocupa de toda el área de visualización. Por esta razón, no entiendo cómo crear una barra lateral. Me gustaría emular lo siguiente, pero ver fuente no ayuda mucho:Creación de una barra lateral en jQuery mobile

http://jquerymobile.com/demos/1.0b1/docs/lists/index.html

en cuenta que al hacer clic en un elemento de la lista, se convierte en una barra lateral y se muestra otra lista en el principal área de contenido. Además, si la pantalla se reduce lo suficiente, solo muestra el área de contenido principal. ¿Hay alguna característica especial en jQuery mobile que lo permita, o hay una gran cantidad de javascript y CSS opacos detrás?

Respuesta

13

Mirando por encima de la versión beta Dividir vista sintaxis se puede controlar la "barra lateral" de esta manera:

<div data-role="page" id="jqm-home" class="type-home"> 
    <div data-role="content"> 
     <div class="content-secondary"> 
      This would be the sidebar/split view on a tablet, 
      would show up stacked on a mobile device 
     </div><!-- end content-secondary -->  

     <div class="content-primary"> 
      This is the main content. 

      If Tablet device this would be to the right of the above content, 
      if mobile this would be below the above content. 

     </div><!-- end content-primary --> 
    </div><!-- end content --> 
</div><!-- end page --> 

Docs: http://jquerymobile.com/demos/1.0b1/ (derecha haga clic para ver fuente)

CSS pertinente: http://jquerymobile.com/demos/1.0b1/docs/_assets/css/jqm-docs.css

Un artículo decente de ALA que habla de consultas de medios (lo que solían hacer esto): http://www.alistapart.com/articles/responsive-web-design/

+0

Sí, también vi eso, pero no creo que en realidad sea donde está hecha la barra lateral. Creo que ese es el código para dividir las dos listas separadas que se muestran en el enlace que acabas de dar. Es por eso que no creo que "ver fuente" sea útil en este contexto ... solo muestra cómo se ve la raíz de la demostración. –

+3

Esta es la forma en que se realiza la barra lateral: echa un vistazo a http://jquerymobile.com/demos/1.0b1/docs/_assets/css/jqm-docs.css, que es el css adicional para la demostración, son solo usa consultas de medios para enviar # contenido-secundario a la izquierda si hay suficiente espacio en la pantalla. –

+0

Me corrigen, pero todavía estoy confundido. Cuando trato de emular el código anterior, al hacer clic en cualquier enlace de la barra lateral, se reemplaza toda la vista por el nuevo elemento data-role = "page" al que me he vinculado. El comportamiento deseado (que tiene la demostración) es cambiar el área de contenido principal y la barra lateral permanece. ¿Cómo funciona el enlace? –

0

Necesita agregar este código a un archivo javascript:

function setPositions(){ 
    var winwidth = $(window).width() 

    if(winwidth >= 750){ 
     $('.content-secondary').css({'float':'left','width':'35%'}); 
     $('.content-primary').css({'margin-left':'36%'}); 
    } 
    else{ 
     $('.content-secondary').css({'float':'none','width':'100%'}); 
     $('.content-primary').css({'margin-left':'0px'}); 
    } 
} 


$(function(){ 
    setDefaultTransition(); 
    $(window).bind("throttledresize", setPositions); 
}); 
+3

En general, no es una buena idea hacer con JavaScript lo que se debe hacer con CSS. –

+0

debe hacer esto con las consultas de medios de CSS en su lugar, por favor lea: http://www.w3.org/TR/css3-mediaqueries/ –

+0

Prefiero usar js sobre consultas de medios ... ... css debería ** no * * ser usado para manejar la lógica (eso es lo que las consultas de los medios están haciendo efectivamente) ... ese es el trabajo de un lenguaje de scripting, como js ... ... ... el trabajo de css es contener datos (básicamente una "base de datos") de los valores relacionados con el diseño que se "consulta" durante el análisis) – dsdsdsdsd

Cuestiones relacionadas