Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

190
Vistas
No se puede desplazar la imagen hacia arriba si se hace zoom con CSS

Creé un componente de vista de imagen con botones para rotar, acercar y alejar. Cuando hace clic en un botón, agrega transform CSS a la imagen.

Por alguna razón, cuando hago zoom en la imagen, no puedo desplazarla hasta la esquina superior o izquierda. Traté de agregar transform-origin: top left; a la imagen, y corrige el zoom, sin embargo, rompe la rotación. ¿Cómo puedo solucionar este problema?

Puedes ver mi código aquí https://codesandbox.io/s/delicate-star-eitj3s?file=/src/app/app.component.ts

EDITAR: transform-origin: top left; hace que la imagen se adhiera a la esquina superior izquierda, pero necesito mantener la imagen en el centro. ¿Es posible arreglar el desplazamiento y mantener el origen de las transformaciones de la imagen en el centro?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

tienes razón.transform-origin: arriba a la izquierda; es la solución Ponga la condición en su método transformImage como se muestra a continuación y pase verdadero/falso

 private transformImage(zoom): void { this.renderer.setStyle( this.image.nativeElement, "transform", `rotate(${this.angle}deg) scale(${this.scale})` ); if (zoom) { this.renderer.setStyle( this.image.nativeElement, "transform-origin", `top left` ); }

}

https://codesandbox.io/s/practical-night-n71z3q?from-embed

over 4 years ago · Santiago Trujillo Denunciar

0

 rotate(): void { this.angle = this.angle + 90; this.transformImage("rotate"); } private transformImage(transformType?: string): void { switch (transformType) { case "rotate": this.renderer.setStyle( this.image.nativeElement, "tranform-origin", "center center" ); break; default: this.renderer.setStyle( this.image.nativeElement, "tranform-origin", "top left" ); break; } this.renderer.setStyle( this.image.nativeElement, "transform", `rotate(${this.angle}deg) scale(${this.scale})` ); }

codigosandbox

over 4 years ago · Santiago Trujillo Denunciar

0

Podemos usar alto y ancho para hacer zoom y transformar para rotar. Con display:flex se puede mantener en el centro. Manifestación

 .image-viewer { display: flex; overflow: auto; width: 100%; height: 100%; border: 1px solid black; } .image-viewer img { margin:auto; width: 70%; height: 70%; transition: 0.3s; } .image-controls { width: 100%; text-align: center; } .image-controls button { transition: opacity 0.2s; opacity: 0.8; &:hover { opacity: 1; } }
 private transformImage(): void { this.renderer.setStyle( this.image.nativeElement, "transform", `rotate(${this.angle}deg)` ); this.renderer.setStyle( this.image.nativeElement, "width", `${100 * this.scale}%` ); this.renderer.setStyle( this.image.nativeElement, "height", `${100 * this.scale}%` ); /*this.image.nativeElement.scrollIntoView({ behavior: "smooth", inline: "center", block: "start" });*/ }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda