Mostrando entradas con la etiqueta web. Mostrar todas las entradas
Mostrando entradas con la etiqueta web. Mostrar todas las entradas

24 sept 2013

Tutorial slider plugin básico en jQuery.

Tutorial slider plugin básico en jQuery.

Como ya sabemos, jQuery es de las más potentes y utilizadas librerías de Javascript, hoy en día reconocida como el propio framework de Javascript que sin duda se caracteriza por las funciones y eventos que implementa en este lenguaje, haciendo un marco de trabajo más preciso para quienes programan en él.

jQuery nos proporciona gran facilidad al escribir código, ya que es tan sencillo, que podemos realizar grandes proyectos en tan poco tiempo.

Desarrollando un Slider plugin básico.

En este tutorial vamos a desarrollar un slider bastante sencillo en el que las imágenes se desplazaran de manera horizontal cada 4 segundos y tendrá sus respectivos navegadores.

index.html


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es">
    <head>
        <title>Slider</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <link href="css/style.css" rel="stylesheet" type="text/css" media="screen" />
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script>
        <script type="text/javascript" src="js/slider.js"></script>
        <script type="text/javascript">
            //jQuery
            $(document).ready(function() {
                //Slider
                $("#slider").Slider();
            });
        </script>
    </head>
    <body>
        <div class="container">
        <div id="slider">
            <figure>
                <img src="img/1.jpg" title="Esta es la primera prueba">
                <figcaption>
                    <h2><a href="#">Prueba uno</a></h2>
                    <p>Descripción Imagen de prueba uno</p>
                </figcaption>
            </figure>
            <figure>
                <img src="img/2.jpg" title="Esta es la segunda prueba">
                <figcaption>
                    <h2><a href="#">Prueba dos</a></h2>
                    <p>Descripción Imagen de prueba dos</p>
                </figcaption>
            </figure>
            <figure>
                <img src="img/3.jpg" title="Esta es la tercera prueba">
                <figcaption>
                    <h2><a href="#">Prueba tres</a></h2>
                    <p>Descripción Imagen de prueba tres</p>
                </figcaption>
            </figure>
        </div>
        </div>
    </body>
</html>


Como ven no es nada del otro mundo, un documento html como cualquier otro. Llamamos el archivo .css que contiene los estilos, las librerías jquery desde google, el archivo .js de nuestro plugin y en el script indicamos que en el momento en que se cargue la pagina se ejecute nuestro pugin Slider() en el div con id slider.

Aquí podemos ver que las imágenes y su titulo y descripción, son incluidas directamente en nuestro archivo HTML con el uso de la etiqueta figure de HTML5.

Ahora vamos a darle estilo.

style.css


.container{
    width:530px;
    margin:0 auto;
}
#slider{
    width:530px;
    height:260px;
    float:left;
    margin-top:10px;
    margin-right:10px;
    box-shadow:3px 3px 4px rgba(187, 187, 187, 0.65);
}


el container es el div que contiene al div id slider y lo centra en el navegador.


.slider-container{
    width:100%;
    float:left;
}
.wrapper{
    position:relative;
    margin:0 auto;
    overflow:hidden;
}


los divs slider-container y wrapper serán creados con el jquery.


.wrapper figure{
    margin:0;
}
.wrapper figure figcaption{
    width:100%;
    position:absolute;
    bottom:0px;
    background:#000;
    opacity:0.5;
    color:#eee;
}
.wrapper figure figcaption h2{
    font-size:20px;
    margin-left:20px;
    font-weight:bold;
}
.wrapper figure figcaption a{
    color:#eee;
}
.wrapper figure figcaption p{
    margin-left:20px;
}


Le damos estilos a la etiqueta figure y a los elementos que contiene.


.nav{
    position:relative;
    margin:0 auto;
}
.nav a{
    background:#222;
    color:#eee;
    padding:0px 5px 0px 5px;
    margin-right:2px;
    border-radius:2px;
}


Esta clase es para el navegador que sera generado con el js y permitirá que se navegue entre las imágenes.


a.prev,
a.next {
    position: absolute;
    top: 50%;
    background:#222;
    padding:2px;
    border-radius:2px;
    color:#eee;
}
a.next {
    right: 0;
}


Las clases prev y next son para enlaces que también serán generados con el jquery y sirven para ir a la imagen anterior o a la siguiente respectivamente.

Vamos con el jQuery, aquí es donde se pone realmente interesante. Analicemos por partes.

slider.js


(function($){
    $.fn.Slider=function(options){
        var opt={
            'width':530,
            'height':239,
            'auto':true,
            'autoSpeed':4000,
            'fadeSpeed':1000
        };


Primero colocamos las opciones predeterminadas en la variable:

width: para el ancho del wrapper.
height: para el alto del wrapper.
auto: para determinar si comenzara a pasar las imágenes automáticamente
autoSpeed: el intervalo de tiempo en que cambian las imágenes
fadeSpeed: la velocidad a la que se desvanece o aparece cada imagen al cambiar.


this.each(function(){
if(options){
$.extend(opt,options);
}
$(this).children().wrapAll('<div class="slider-container"/>');
container=$(this).find('.slider-container');
container.find('figure').wrapAll('<div class="wrapper"/>');
var wrapper=$(this).find('.wrapper');

wrapper.append('<a href="#" class="prev">Prev</a><a href="#" class="next">Next</a>');
container.append('<div class="nav">');
var nav=container.find('.nav');
wrapper.find('figure').each(function(i){
i+=1;
nav.append('<a href="#">'+i+'</a>');
});


Ahora hemos creado el elemento wrapper para que contenga los elementos figure y el elemento slider-container que contendrá al elemento wrapper.

Por medio de la función append(), hemos creado los enlaces prev y next. dentro del wrapper y dentro del slider container hemos creado un nuevo div de clase nav que contendrá el navegador de las imágenes.

Como vemos se crea una función que cuenta la cantidad de elementos figure dentro del wrapper y guarda un numero en la variable i por cada una de ellas y luego crea enlaces dentro del div nav con cada numero.


            var Slider=function(){
                this.figures=wrapper.find('figure');
                this.figuresList=(this.figures.length)-1;
                this.navPrev=wrapper.find('a.prev');
                this.navNext=wrapper.find('a.next');
                this.bullets=container.find('.nav a');
                this.caption=this.figures.find('figcaption');


Ahora pasamos a crear el objeto Slider y sus atributos y métodos.

this.figures: guardara los elementos figure como un array.
this.figurestList: cuenta la cantidad de elementos figure.
this.navPrev y this.navNext son obviamente los navegadores de anterior y siguiente.
this.bullets: guarda los enlaces del navegador de imágenes en un array.
this.caption: guarda los elementos figcaption de cada elemnto figure en un array.


                this.getCurrentIndex = function(){
                    return this.figures.filter('.current').index();
                };


Método getCurrentIndex: Obtiene el elemento figure que esta visible


                this.go=function(index){
                    this.figures
                        .removeClass('current')
                        .fadeOut(opt.fadeSpeed)
                        .eq(index)
                        .fadeIn(opt.fadeSpeed)
                        .addClass('current');
                    this.bullets
                        .removeClass('current')
                        .eq(index)
                        .addClass('current');
                };


Metodo go: Primero le quita la clase current al elemento figure que está visible y lo desvenase luego selecciona el siguiente a través del parámetro index, lo muestra y le agrega la clase current. También verifica el enlace de la imagen en el div nav que corresponde al figure, le quita la clase current, selecciona al siguiente y le agrega la clase current.


                this.next=function(){
                    var index=this.getCurrentIndex();
                    if(index<this.figuresList){
                        this.go(index+1);
                    }else{
                        this.go(0);
                    }
                };
                this.prev=function(){
                    var index=this.getCurrentIndex();
                    if(index>0){
                        this.go(index-1);
                    }else{
                        this.go(this.figuresList);
                    }
                };


Métodos next y prev: primero verifican que figure esta visible luego, utilizando un condicional, el método next verifica que el figure actual sea menor que el total de elementos figure; si es el caso, se llama al método go pasándole como parámetro el figure actual mas uno, en caso contrario se le pasara al método go el parámetro 0. En el caso del método prev se verifica que el figure actual sea mayor que 0 y si es así se le pasa como parámetro al método go el index menos uno, osea, el numero de figure actual menos uno y en caso contrario se le pasa el parámetro this.figurestList que como sabemos es la cantidad total de figures que contiene el div slider.


                this.init=function(){
                    wrapper
                        .width(opt.width)
                        .height(opt.height);
                    this.figures.hide().first().addClass('current').show();

                    this.bullets.first().addClass('current');
                    var padding = wrapper.css('padding-left').replace('px', '');

                    nav.width(opt.width);
                };
            };


Metodo init: Este es el método que le da vida a nuestro slider, vamos a verlo por partes

1) Le decimos que le aplique las opciones de width y height (ancho y alto) al div clase wrapper.
2) Ocultamos los elementos figure con excepción del primero al cual le daremos la clase current y lo mostraremos.
3) le agregamos laclase current al primer enlace que esta dentro del div clase nav
4) le pasamos la opción de width (ancho) al div clase nav


            var slider=new Slider();
            slider.init();


Ahora se instancia el objeto Slider() y se llama al método init.



            slider.navNext.click(function(e){
                e.preventDefault();
                slider.next();
            });
            slider.navPrev.click(function(e){
                e.preventDefault();
                slider.prev();
            });

            slider.bullets.click(function(e){
                e.preventDefault();
                slider.go($(this).index());
            });


Eventos del mouse.

al darle click al enlace clase next llamamos al método next de la clase Slider. lo propio sucede al hacer click sobre el enlace clase prev pero en este se llama al método prev.

Al darle click a alguno de los enlaces que están dentro del div nav se llama al método go y se le pasa como parámetro el index del mismo enlace.


            if(opt.auto===true){
                var timer=function(){
                    slider.next();
                };
                var interval=setInterval(timer,opt.autoSpeed);

                wrapper.hover(function(){
                    clearInterval(interval);
                },function(){
                    interval=setInterval(timer, opt.autoSpeed);
                });

                slider.bullets.click(function(){
                    clearInterval(interval);
                    interval=setInterval(timer,opt.autoSpeed);
                });
            }
        });
    };
})(jQuery);


El bucle del plugin

Ahora verificmos que la opción auto sea verdadera y en este caso definimos una función timer que llamará al método next de la clase Slider y a continuación creamos un bucle con setInterval que repetirá la función timer (llamada al metodo next de la clase Slider) cada tanto tiempo (el tiempo es definido en la opción autoSpeed, en este caso 4 segundos).

la siguiente función nos dice que al pasar el mouse sobre el div clase wrapper se detendra el bucle y al quitarlo se reiniciará.

Y por ultimo al hacer click sobre cualquier enlace dentro del div clase nav, también se detendrá el bucle.

Este es un plugin sencillo desarrollado para que hasta el mas novato puede entender que estamos haciendo y es una buena base para integrar mas funciones y desarrollar algo más profecional.

Espero que haya sido de ayuda y tienen permiso de copiarlo, modificarlo y distribuirlo sin ningún problema, aunque agradecería una referencia al autor XD.

Aprendamos PHP; Lo B'asico


 Para aquellos que se están iniciando en el diseño web, ya se abran dado cuenta de que con solo HTML y CSS no es suficiente para obtener el resultado que desean en un sitio. Si quieres crear áreas privadas a las que solo se acceda con un usuario y contraseña, que se carguen tus ultimas publicaciones en la pagina de inicio, comentarios, etc y no tener que revolver el código cada vez que actualizas, estas en el lugar correcto.

En esta serie de tutoriales aprenderás el uso y funcionamiento básico de esta poderosa herramienta llamada php. A comenzar.

¿Qué es php?

Parafraseando a la ilustre Wikipedia: Php es un lenguaje de programación que trabaja de lado del servidor, en principio diseñada para desarrollar webs dinámicas. El código es interpretado por un servidor web con un modulo de procesador de php.

¿Que necesitamos?

Obviamente necesitamos configurar un servidor, instalar php, mysql y un administrador de bases de datos. En este caso, como yo trabajo bajo Ubuntu, explicare la instalación básica de Apache, php, mysql y phpmyadmin en dicha distribución, los que trabajen con otros sistemas operativos pueden buscar en Google como configurar un servidor y de seguro les aparecerá algo. Continuemos.

Vamos con apache, abre la terminal y pon lo siguiente

sudo apt-get install apache2

comprueba la instalación en la siguiente dirección:

http://127.0.0.1

o

http://localhost

Ahora vamos con php 5

sudo apt-get installphp5 libapache2-mod-php5

Reiniciamos el servidor:

sudo /etc/init.d/apache2 restart

El directorio default de nuestro servidor es /var/www/ aquí sera donde guardaremos todos los archivos y directorios de nuestra/s web/s

Si no tenemos permisos para modificar el contenido del directorio /var/www/ escribimos lo siguiente en la terminal:

sudo shown -R usuario:www-data /var/www

donde usuario es tu nombre de usuario.

Ahora le damos permisos de lectura y ejecución a todos los usuarios, y de escritura al propietario

sudo chmod -R 755 /var/www/

para comprobar el funcionamiento de php podemos crear un archivo dento del directorio /var/www/ con cualquier nombre pero con extensión .php. En este caso info.php, lo abrimos en cualquier editor de texto y escribimos lo siguiente:

<?php phpInfo();?>

lo guardamos y abrimos la siguiente dirección en nuestro navegador de preferencia.

http://127.0.0.1/info.php o http://localhost/info.php

Donde info.php es el archivo que recién creamos. Debería aparecernos algo como esto:

PHP

Ahora vamos con el servidor y el cliente mysql

sudo apt-get install mysql-server mysql-client

Nos pedirá la clave del usuario root.

Ahora vamos con los módulos:

sudo apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Reiniciamos de nuevo apache:

sudo /etc/init.d/apache2 restart

Ahora instalamos phpmyadmin

sudo apt-get install phpmyadmin

nos pedirá elegir el servidor, escogeremos apache2 y nos pedirá configurar la base de datos con dbconfig-common y le diremos que no.

Para ver si funciona entramos a

http://127.0.0.1/phpmyadmin o http://localhost/phpmyadmin

Y debería aparecer así:

html

Si no funciona ejecutamos lo siguiente en la terminal

sudo gedit /etc/apache2/httpd.conf

En el archivo que aparece en el editor de textos gedit escribimos lo siguiente

Include /etc/phpmyadmin/apache.conf

Reiniciamos de nuevo el servidor

sudo /etc/init.d/apache2 restart

Y debería funcionar a la perfección

Sintaxis básica

Hola Mundo en Php

Primero vamos a crear un documento php en el directorio /var/www/, en este caso ejemplo.php.es importante que tenga la extensión .php pues podemos insertar codigo html en este tipo de documentos pero no podemos insertar codigo php en un documento html.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es">
    <head>
        <title>Mi primer scrit con php</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    </head>
    <body>
        <?php
            echo 
"Hola Mundo";         ?>     </body>
</html>


Al terminar lo abrimos escribiendo la ruta de acceso en el navegador, en este caso es:

http://127.0.0.1/ejemplos/ejemplo.php o http://localhost/ejemplos/ejemplo.php

Y aparecerá algo como esto:

MySQL

Explicación:

Como siempre voy a asumir que los que leen esto ya conocen de HTML así que saltaré directamente al código php.

Como vemos el código php se puede insertar directamente en un documento con código HTML y la parte php se coloca entre los delimitadores <?php ?>. <?php indica que lo que viene a continuación es código php y ?> indica que finalizamos el código php, también puede ser <? ?>. Ejemplos

<?php
   echo 
"esto es php"; ?>
<? echo 
"esto es php";?>


Por ultimo vemos el comando echo que es un constructor de lenguaje que nos sirve en este caso para mostrar en el navegador la cadena Hola Mundo.

También es posible abreviar el comando echo cuando va justo después del indicador de apertura de php.

<?= "Hola Mundo"?>

El código php puede ser incluido en cualquier punto de HTML por ejemplo

<h1><?="Mi Primer Script PHP";?></h1>

Además lo podemos incluir cuantas veces queramos dentro de etiquetas HTML Ejemplo

<h1><?="Script PHP";?></h1>
<?php
   echo 
"Esto es un Script PHP"; ?> <ul>
    <li><a href="<?="www.ejemplo.com";?>"><?="Primer Elemento de la Lista";?></a><li>
    <li><a href="www.ejemplo.com">Segundo Elemento de la Lista"</a><li>
</ul>


Los Comentarios

Php soporta las formas de comentarios de C, C++ y Shell Por ejemplo:

<?php
   echo “esto es u ejemplo
;//Comentario tipo C     /*Comentario
    Multilinea*/
    #Comentario tipo shell ?>


Hay que tener cuidado con los comentarios multilinea:

<?php
   
/*Comentario
    /*Esto dará error*/
  Multilinea*/ ?>


Eso será todo por ahora, espero que les sea útil.