Ir al contenido principal

web movil con jQuery mobile

  Una de las formas de adaptar una página web al móvil es con el uso del framework de jQuery, el llamado jQuery mobile. En realidad no adaptamos nuestra web al móvil, sino que construimos una página nueva para el móvil.

    Vamos por partes, primero tenemos que incluir, entre los <head> de la página, la llamada al framework de la siguiente manera: de nuestra página, la llamada al framework, lo cual haremos del siguiente modo:

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0-rc.1/jquery.mobile.structure-1.3.0-rc.1.min.css" />
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.0-rc.1/jquery.mobile-1.3.0-rc.1.min.js"></script>

Con este método accedemos directamente al servidor de jQuery, desde el cual descargamos lo necesario para que el framework funcione correctamente. Con la primera linea descargamos la hoja de estilos, en la segunda el script principal de jQuery y en la tercera linea descargamos el script de jQuery-mobile propiamente dicho.
Ejemplo de como podría quedar.

   Después ya solo nos queda construir la página propiamente dicha. El formato debe de ser obligatoriamente en HTML5 ya que jQuery recogerá los datos de ciertas etiquetas para construir la página.

   Vamos con un primer fragmento de la página:


<div data-role="page" id="inicio">
  <div data-role="header" data-theme="c">
  <h1>Talleres</h1><br> <h1>Guadamia</h1>
  <a href="#" data-icon="home" data-icon-pos="notext" data-theme="e"></a>
  </div>   //fin de header

      <img id="imgback" src="images/nombre.gif" alt="Taller de coches">

   <div data-role="content">
      <ul data-role="listview" data-inset="true">
      <li><a href="#diagnosis" data-transition="slideup">Diagnósis del automóvil</a></li>
      <li><a href="#mecanica" data-transition="slideup">Mecánica y electricidad</a></li>
      <li><a href="#neumaticos" data-transition="slideup">Neumáticos y amortiguación</a></li>
      <li><a href="#contacto" data-transition="slideup">Contacto</a></li>
      </ul>   //fin de data-role="listview"
    <a href="tel:+34687759906" data-role="button" data-theme="b">Llámanos ahora</a>
   </div>   //fin de content

   <div data-role="footer"><h5>Página hecha con jQuery mobile por Jose luis Acebedo Parajón</h5>
</div>   //fin de footer

</div>   //fin de page



   Con este sencillo código ya tenemos el menú principal de nuestra página que quedará como veis en la imagen superior. Lo nuevo aquí son los data-role, data-theme, data-transition y data-icon. Estos data son los que leerá jQuery para construir nuestra página. Aquí comentaré unos pocos, para saber más sobre ellos consultar la guía oficial (en inglés) en http://jquerymobile.com/demos/1.2.0/.
   Con data-role="page" indicamos donde comienza y donde termina nuestra página (importante saber que dentro del mismo código HTML5 tendremos todas la páginas que necesitemos, este primer código sería la página principal o menú principal). Dentro de data-role="page" están las divisiones de la página en: cabecera (data-role="header"), contenido (data-role="content") y pié de página (data-role="footer"). A cada contenido de la página podemos asignarle un color o tipo de letra diferente lo cual realizamos con data-theme="letra",  la letra (desde la a hasta la c) nos dará un color y letra diferentes. Dentro de mi contenido (content) tengo el menú principal que se divide en una vista de lista (listview), donde están las opciones del menú (diagnosis, mecánica, neumáticos y contacto) y un botón (button) que realiza una llamada al número especificado. En este ejemplo tenemos otros data, como data-icon el cual nos muestra un icono específico o data-transition que realizará una transición al abrir el enlace especificado.

   Ahora bien, ¿cómo mostrar más información?. En el ejemplo arriba descrito tenemos varios enlaces dentro de a href todos precedidos de una almohadilla (#). Pues es tan sencillo como insertar, seguido del código anterior, un código como el siguiente:


<div data-role="page" id="diagnosis">
   <div data-role="header"><h1>Diagnósis del automóvil</h1></div>   //fin de header
   <div data-role="content">
    Aquí una descripción, un texto, o lo que queráis.<br>
   <a href="#inicio"data-role="button" data-inline="true">Inicio</a>   //botón para volver a la pagina de inicio
   </div>   //fin de content
   <div data-role="footer">
   <h3>Más información en <a href="#cajadialogo" data-rel="dialog">la vista web</a> de la página</h3>
   </div>   //fin de footer
</div>   //fin de page

   Podéis ver que el código es prácticamente igual que el primero, con la única excepción de que, dentro del div data-role="page", insertamos un id con el mismo nombre del enlace que queremos mostrar (esta vez sin la almohadilla, id="diagnosis"). Y así hacemos lo mismo para todos los enlaces que tengamos.
   Si os dais cuenta, en el primer código, dentro del div data-role="page", también le hemos puesto un id con el nombre de inicio. Esto es para volver a la página de inicio a través del botón de enlace que ponemos en las restantes páginas.

   Lo siguiente sería la estructura básica de una página en jQuery-mobile:


<!DOCTYPE html>
<html lang="es-ES">
<head>
<meta charset="utf-8" />
<title>Titulo</title>
<meta name="viewport" content="width=device-width", minimum-scale=1.0, maximum-scale=1.0"/>
<link rel="stylesheet" href="themes/personalstyle.min.css" />
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0-rc.1/jquery.mobile.structure-1.3.0-rc.1.min.css" />
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.0-rc.1/jquery.mobile-1.3.0-rc.1.min.js"></script>
</head>
<body>

<div data-role="page" id="inicio">
  <div data-role="header" data-theme="c">
  <h1>Talleres</h1><br> <h1>Guadamia</h1>
  <a href="#" data-icon="home" data-icon-pos="notext" data-theme="e"></a>
  </div>

      <img id="imgback" src="images/nombre.gif" alt="Taller de coches">
   <div data-role="content">
    
      <ul data-role="listview" data-inset="true">
      <li><a href="#diagnosis" data-transition="slideup">Diagnósis del automóvil</a></li>
      <li><a href="#mecanica" data-transition="slideup">Mecánica y electricidad</a></li>
      <li><a href="#neumaticos" data-transition="slideup">Neumáticos y amortiguación</a></li>
      <li><a href="#contacto" data-transition="slideup">Contacto</a></li>
      </ul>
    <a href="tel:+34687759906" data-role="button" data-theme="b">Llámanos ahora</a>
   </div>
   <div data-role="footer"><h5>Página hecha con jQuery mobile por Jose luis Acebedo Parajón</h5>
</div>
</div>

<div data-role="page" id="diagnosis">
   <div data-role="header"><h1>Diagnósis del automóvil</h1></div>
   <div data-role="content">
    Contenido de diagnósis.<br>
   <a href="#inicio"data-role="button" data-inline="true">Inicio</a>
   </div>
   <div data-role="footer">
   <h3>Más información en la vista web de la página</h3>
   </div>
</div>

<div data-role="page" id="mecanica">
   <div data-role="header"><h1>Mecánica y electricidad</h1></div>
   <div data-role="content">
    Contenido de mecánica.</br>
   <a href="#inicio"data-role="button" data-inline="true">Inicio</a>
   </div>
   <div data-role="footer">
   <h3>Más información en la vista web de la página</h3>
   </div>
</div>

<div data-role="page" id="contacto">
   <div data-role="header"><h1>Contacto</h1></div>
   <div data-role="content">
    Contenido de contacto.<br>
   <a href="#inicio"data-role="button" data-inline="true">Inicio</a>
   </div>
   <div data-role="footer">
   <h3>Más información en la vista web de la página</h3>
   </div>
</div>

<div data-role="page" id="neumaticos">
   <div data-role="header"><h1>Neumáticos y amortiguación</h1></div>
   <div data-role="content">
   Contenido de neumáticos.<br>
   <a href="#inicio"data-role="button" data-inline="true">Inicio</a>
   </div>
   <div data-role="footer">
   <h3>Más información en la vista web de la página</h3>
   </div>
</div>

</body>
</html>

   Sólo necesitamos incluir, entre los head de nuestra página, los meta que necesitemos o un link a nuestro propio CSS si lo precisamos. 

   Y, para redireccionar a nuestra página móvil a los que nos visiten desde un móvil ver este post.

Comentarios

Entradas populares de este blog

Leer un archivo XML con jQuery y javascript y modificar un HTML con su contenido

   Una manera muy interesante y fácil de modificar los textos de tu página web. Si, por ejemplo, tenemos una página donde cambiamos a menudo unas noticias que tenemos en el margen derecho, podríamos tener un código HTML como este:    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Manejar archivo XML</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script src="leerxml.js"></script> <link rel="stylesheet" href="estilos.css"> </head> <body> <h1>Titulo de la página</h1> <div id="derecha"> <div class="noticias"> <div class="prim

Recargar div con efecto de aparición suave (Fade In) en jQuery

  En este post continúo con el código que describí en el segundo post sobre cómo refrescar un div sin necesidad de refrescar toda la página, pero añadiéndole unas lineas para este se aparezca de forma suave. La página de ejemplo es http://www.talleresguadamia.com y el código es el que sigue: <script type="text/javascript"> $(document).ready(function(){    $("#contenido a").each(function(){       var href = $(this).attr("href");       $(this).attr({ href: "#"});       $(this).click(function(event){                  $("#contenido").css("display","none");          $("#contenido").load(href).fadeIn(700);        });    }); });; </script>   Podéis ver lo fácil que es. Hemos agregado sólo dos cosas:   - La linea  "$('#contenido').css('display','none')", que lo único que hace es cambiar la propiedad css "display" del div "#contenido&q

Código jQuery para ver una imagen al pasar el ratón sobre un enlace.

   Voy a explicar un código en jQuery , para que, al pasar el puntero del mouse sobre un enlace o, en este caso, sobre un texto cualquiera (sin necesidad de ser un enlace), se nos muestre una imagen cerca del enlace y que esta desaparezca al retirar el puntero del mouse (sin necesidad de hacer click sobre él). Podéis pensar que me estoy repitiendo con un anterior post. Casi que si. Pero la diferencia es que, en este caso, no sabemos donde estará situada la imagen. Es decir que, dependiendo de la situación de la pantalla donde esté el enlace o texto, allí se mostrará la imagen.    Vamos al grano. Primero el código en HTML:       <span class="enlace" title="hyneria.png">Hyneria</span>    Podéis ver que, en este caso, no se trata de un enlace. Le pongo el nombre de 'enlace' a la clase porque en el CSS le doy apariencia de enlace. Aquí lo importante es 'title' el cual contiene el nombre de la imagen que queremos mostrar (pod