mvtapia posted on August 7, 2009 02:10

Hola todos,

 

Hoy quiere compartir algo super util que tuve que utilizar uno de mis ultimos projectos. Lastimosamente no puede ponerlo en mi portafolio por razones de confidencialidad. Sin embargo, la necesidad del proyecto era poder manipular imagenes de una manera basica (mover y cambiar el tamaño).

La herramienta que he utilizado para la mayoria de Javascript es JQuery. La razon es sencilla, es facil y rapido de usar.

En este ejemplo, primero creamos una pagina con un Draggable basico.

<!DOCTYPE html>
<html>


<head>

<link type="text/css" href="http://jqueryui.com/latest/themes/base/ui.all.css" rel="stylesheet" />
<script type="text/javascript" src="http://jqueryui.com/latest/jquery-1.3.2.js"></script>
<script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.core.js"></script>
<script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.draggable.js"></script>
<style type="text/css">

#draggable { width: 100px; height: 70px; background: silver; }

</style>
<script type="text/javascript">

$(document).ready(function(){
$("#draggable").draggable();
});

</script>

</head>
<body style="font-size:62.5%;">

<div id="draggable">Drag me</div>

</body>


</html>

En este codigo, se crea un <div> con un 'id' = draggable y cuando se inicia la pagina, este se le agrega la propiedad de JQuery llamada "draggable".

JQuery, tambien tiene una serie de propiedades parecidas como:

  • Draggable
  • Droppable
  • Resizable
  • Selectable
  • Sortable

Asi que si quisieramos hacer esta div Resizable o Dropable o Selectable, no seria ningun problema. Solo se haria los siguente:


<script type="text/javascript">

$(document).ready(function(){
$("#draggable").resizable();
});

</script>

Mi problema con esto era que si yo queria combinar las dos manipulaciones, solo me aceptaba resizable().


<script type="text/javascript">

$(document).ready(function(){
$("#draggable").draggable();
$("#draggable").resizable();
});

</script>

Despues de un poco de googling aprendi como combinar estas manipulaciones y parece que JQuery solo puede hacer un tipo de operacion sobre el objeto y si quieres que el objecto haga varias, entonces debes prender y apagar el propiedad (lo cual puede ser un caos). Asi que para hacer lo mas facil, solo creamos un contenedor para la imagen y listo.

<!DOCTYPE html>
<html>


<head>

<link type="text/css" href="http://jqueryui.com/latest/themes/base/ui.all.css" rel="stylesheet" />
<script type="text/javascript" src="http://jqueryui.com/latest/jquery-1.3.2.js"></script>
<script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.core.js"></script>
<script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.draggable.js"></script>
<style type="text/css">

#draggable { width: 100px; height: 70px; background: silver; }

</style>
<script type="text/javascript">

$(document).ready(function(){
$("#draggable").draggable();
$("#resizable").resizable();
});

</script>

</head>
<body style="font-size:62.5%;">

<div id="resizable">
<div id="draggable">Drag me</div>
</div>

</body>


</html>

Posted in: Javascript , JQuery  Tags:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
mvtapia posted on April 1, 2009 05:57

Hola todos,

Pienso que hablar sobre las tecnicas para incorporar la creatividad de un diseñador en nuestras paginas web es un buen comienzo para un blog ya que muchas veces nos vemos limitados por las capacidades de un browser o por los estandares del internet. Este es el caso con los scroll bars que encierran un texto.

Para los diseñadores siempre hay una salida facil, FLASH. No entrare en detalle en porque trato de evitar utilizar flash cuando estoy traduciendo un diseño de illustrator a HTML, pero solo les digo que no lo recomiendo. No es nada contra flash, es mas, flash se puede utilizar de maneras excelente para dar detalles muy profesionales. Yo lo utilizo, solo no para hacer scrollbars.

Volviendo a lo nuestro, cuando estaba buscado por internet en como hacer un scrollbar con colores y con diferentes propiedades me encontre con un codigo CSS muy sencillo.

 

   scrollbar-face-color:#903030;
   scrollbar-arrow-color:#FFFFFF;
   scrollbar-track-color:#C0B0B0;
   scrollbar-shadow-color:rgb(0,0,0);
   scrollbar-highlight-color:rgb(0,0,0);
   scrollbar-3dlight-color:#808080;
   scrollbar-darkshadow-Color:#202020;

 


Estas son una de las propiedades que podemos utilizar como programadores para cambiarle el look de los scrolls de nuestras paginas. Pero si lo intentan, veran que solo funciona en Internet Explorer. Por que? Bueno, Microsoft? eh... Microsoft? Estas propiedades no son aprobadas por  W3C y son consideradas ilegales porque modifican las preferencias del usuario. Me imagino que Microsoft penso que seria bueno exponer esa funcionalidad a los programadores. Esto no esta mal si tu aplicacion corre en una intranet donde los usuarios solo pueden usar internet explorer, pero eso no es el caso mas general. Por lo cual, le recomiendo que siguan los estandares.

 


La manera de resolver esto es con javascript y si son como yo y no tienen tiempo para escribir un framework de javascript, hay muchos. Uno del los que mas me gusta es JQuery y un plugin para hacer scrollbars es JScrollPane.

 


Como utilizarlo, es muy sencillo. Primero, descargen la libreria JQuery y JScrollPane plugin e incluyan el siguiente codigo en el <head> de su pagina.

<script type="text/javascript" src="scripts/jquery-1.2.6.min.js"></script>
<script type="text/javascript" src="scripts/jquery.mousewheel.min.js"></script>
<script type="text/javascript" src="scripts/jquery.em.js"></script>
<script type="text/javascript" src="scripts/jScrollPane.js"></script>
<link rel="stylesheet" type="text/css" media="all" href="styles/jScrollPane.css" />
<script type="text/javascript">


$(function()


{


    $('.scroll-pane').jScrollPane();


});


</script> 

El siguiente paso es remplazar scroll pane con el nombre del <div> o la clase que van a contener el scrollpane.

<div class="scroll-pane">
    Test Text...
<div>

Por ultimo, hay que hacer que el div genere un scroll automatico cuando el texto se pasa del tamano. 

<style>


    .scroll-pane


    {


        overflow: auto;


   }


</style>

Listo!!! Esta es la manera mas rapida de crear un scrollbar que puede ser modificada por CSS y javascript. Por supuesto hay muchos parametros que se pueden modificar entre los de CSS estan:

.winXP .jScrollPaneTrack {
background: url(images/windows_track.gif) repeat-y;
}
.winXP .jScrollPaneDrag {
background: url(images/windows_drag_middle.gif) no-repeat 0 50%;
}
.winXP .jScrollPaneDragTop {
background: url(images/windows_drag_top.gif) no-repeat;
height: 4px;
}
.winXP .jScrollPaneDragBottom {
background: url(images/windows_drag_bottom.gif) no-repeat;
height: 4px;
}
.winXP a.jScrollArrowUp {
height: 17px;
background: url(images/windows_arrow_up.gif) no-repeat 0 0;
}
.winXP a.jScrollArrowUp:hover {
background-position: 0 -20px;
}
.winXP a.jScrollArrowDown {
height: 17px;
background: url(images/windows_arrow_down.gif) no-repeat 0 0;
}
.winXP a.jScrollArrowDown:hover {
background-position: 0 -20px;
}
.winXP a.jScrollActiveArrowButton, .winXP a.jScrollActiveArrowButton:hover {
background-position: 0 -40px;


}

Esto fue extraido del ejemplo "operating system style scrollbars". Entre los parametros de Javascript, estan los siguientes:

  • scrollbarWidth

  • scrollbarMargin

  • wheelSpeed

  • showArrows

  • arrowSize

  • animateTo

  • dragMinHeight

  • dragMaxHeight

  • animateInterval

  • animateStep

  • maintainPosition

  • scrollbarOnLeft

  • reinitialiseOnImageLoad

 Si les interesa ver mas opciones, puede ver los ejemplos en la pagina de jScrollPane y vean el codigo fuente de la pagina. En general, la documentacion no es muy buena pero hasta el momento me ha funcionado.


Posted in: Javascript , JQuery  Tags:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Recent Posts

Buscar Blog

Social Network

Facebook Follow me on Twitter


    follow me on Twitter
    Disclaimer
    Las Opiniones expresadas aqui son mias personales y no representan la opinion de mi empleador.

    © Copyright 2010 Marco Tapia