Foros del Web » Programando para Internet » Javascript »

Hacerle a un div el resize de un textarea

Estas en el tema de Hacerle a un div el resize de un textarea en el foro de Javascript en Foros del Web. Hola. Alguien me podría por favor ayudar con hacerle un resize a un div?, por ejemplo, a un textarea se le puede cambiar el tamaño ...
  #1 (permalink)  
Antiguo 08/09/2016, 17:27
 
Fecha de Ingreso: mayo-2013
Mensajes: 40
Antigüedad: 10 años, 10 meses
Puntos: 0
Pregunta Hacerle a un div el resize de un textarea

Hola.

Alguien me podría por favor ayudar con hacerle un resize a un div?, por ejemplo, a un textarea se le puede cambiar el tamaño con el mouse desde una esquina, es posible hacer eso mismo con un div?

Muchas gracias por su ayuda.
__________________
Alex
  #2 (permalink)  
Antiguo 08/09/2016, 23:15
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Hacerle a un div el resize de un textarea

Solo necesitas trabajar con los eventos mousedown (cuando se pulsa el botón del ratón) y mouseup (cuando se lo suelta).

La idea es que el tamaño del <div> se supedite a la posición en la que se encuentre el cursor del ratón una vez que se suelta el botón izquierdo del mismo, pero que previamente fue pulsado cuando se encontraba sobre el elemento. Entonces, para evitar conflictos cuando pulses el botón estando el cursor en otra parte del documento que no sea el <div>, puedes utilizar una bandera o comodín (cualquier variable) que cambie de valor cuando ocurran los eventos mencionados. Cuando se pulse el botón izquierdo del ratón estando el cursor del mismo sobre el <div>, el valor de la bandera, que inicialmente puede ser, por ejemplo, false, cambiaría a true y volvería a ser false cuando se suelte el botón izquierdo del ratón estando el cursor fuera del <div>. En ese momento, se comprueba que el valor de la bandera sea true —obviamente antes de que cambie— y las dimensiones del <div> serían las mismas que la posición en los ejes X y Y del cursor cuando se soltó el botón izquierdo del ratón.

Código Javascript:
Ver original
  1. var div = document.querySelector("#id del div"), flag = false;
  2.  
  3. div.addEventListener("mousedown", function(){
  4.     flag = true;
  5. }, false);
  6.  
  7. document.addEventListener("mouseup", function(event){
  8.     if (flag){
  9.         div.style.width = event.clientX + "px";
  10.         div.style.height = event.clientY + "px";       
  11.         flag = false;
  12.     }
  13. }, false);

DEMO

Es una forma algo rudimentaria de hacerlo, pero puedes tomarla como base para hacer algo mejor.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 09/09/2016, 06:46
 
Fecha de Ingreso: mayo-2013
Mensajes: 40
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Hacerle a un div el resize de un textarea

Hola Alexis88, tu ayuda me servido bastante, veré si lo puedo adaptar y mejorar a lo que necesito.

Muchas gracias.
__________________
Alex
  #4 (permalink)  
Antiguo 09/09/2016, 12:13
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 8 años, 5 meses
Puntos: 86
Respuesta: Hacerle a un div el resize de un textarea

Supongamos que existe una propiedad que se llama resize y supongamos que nos importa que ie no la acepte
Código CSS:
Ver original
  1. div{
  2.   resize: both;
  3.   overflow: auto;
  4. }
[URL="http://caniuse.com/#search=resize"]Tabla de compatibilidad[/URL]

Pero casi siempre hay un roto para un descosido. Aunemos ambos lenguajes
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html dir="ltr" lang="es-es">
  3.     <title></title>
  4.     <meta charset="utf-8">
  5.     <style>
  6.         div{
  7.             width: 250px;
  8.             height: 150px;
  9.             background-color: red;
  10.             resize: both;
  11.             overflow: auto;
  12.         }
  13.     </style>
  14. </head>
  15.  
  16.     <div id="foo"></div>
  17.  
  18.  
  19.     <script>
  20.         var div = document.querySelector("#foo"), flag = false;
  21.  
  22.         if (!('resize' in div.style)) {
  23.  
  24.             div.addEventListener("mousedown", function(){
  25.                 flag = true;
  26.             }, false);
  27.              
  28.             document.addEventListener("mouseup", function(event){
  29.                 if (flag){
  30.                     div.style.width = event.clientX + "px";
  31.                     div.style.height = event.clientY + "px";        
  32.                     flag = false;
  33.                 }
  34.             }, false);
  35.         }
  36.     </script>
  37.  
  38. </body>
  39. </html>
Esto hará que si el navegador no acepta la propiedad, se logre el mismo efecto con código javascript
  #5 (permalink)  
Antiguo 09/09/2016, 16:44
 
Fecha de Ingreso: mayo-2013
Mensajes: 40
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Hacerle a un div el resize de un textarea

Excelente, no sabia que el css tenia una propiedad para el resize, ya la probé y me funciona de maravilla, gracias mpozo.
__________________
Alex

Etiquetas: html, html5
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:46.