Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Rotação de imagem

Bom dia,

Eu percebi uma outra forma de rotacionar imagem com menos linha de código. veja o seguinte

          <my-responsive-img v-my-transform.animate.reverse="15" :url="photo.url" :title="photo.titulo"/>

Na home o instrutor colocou o modificador reverse para rotacionar a imagem anti-horário

e no transform ficaria assim

import Vue from 'vue'

Vue.directive('my-transform', {
  bind(el, binding, vnode) {
    let current = 0;
    el.addEventListener('dblclick', function () {
      let increment = binding.value || 90;

      if(binding.modifiers.reverse){
        current-=increment;
      } else {
        current += increment;
      }

      el.style.transform = `rotate(${current}deg)`;
      if (binding.modifiers.animate) el.style.transition = 'transform 0.5s';

    })

  }
});

Mas eu analisando, eu percebi que podemos economizar linhas de código, deixando o mesmo assim

          <my-responsive-img v-my-transform.animate="-15" :url="photo.url" :title="photo.titulo"/>

tiro o reverse e passo o 15 negativo

e no transform ficaria assim

import Vue from 'vue'

Vue.directive('my-transform', {
  bind(el, binding, vnode) {
    let current = 0;
    el.addEventListener('dblclick', function () {
      let increment = binding.value || 90;
        current += increment;
      el.style.transform = `rotate(${current}deg)`;
      if (binding.modifiers.animate) el.style.transition = 'transform 0.5s';

    })

  }
});

veja que economizei um IF e linhas de código.

Agora minha dúvida é, os dois jeitos estão certos? Quais dos dois são boas práticas de programação?

6 respostas

E se você não quiser que sua animate seja reverse? Talvez você queira que ela possua uma animação diferente. Como fica?

Deu na mesma, os mesmos efeito com o reverse, e sem o reverse e o número negativo, ficou a mesma coisa.

Você quer que eu subo o código pro github pra dar uma olhada?

Na verdade eu queria que você pensasse mais sobre a função da sua própria diretiva...

v-my-transform.animate

Observando esta diretiva eu sei que é para animar. Imagine que a animação padrão seja no sentido horário, contudo, eu quero que seja reversa.

Eu não quero ter que abrir o código de outra pessoa e criar uma nova função para ter uma animação reversa.

Sabendo disto, eu posso fazer:

v-my-transform.animate.reverse

Você terá várias funções de animação em uma única diretiva :)

Sacou?!?

ata, agora entendi o que você disse. Porém, o -15 continua fazendo o mesmo efeito do reverse. Mas pelo que entendi, ficaria mais legível para outro desenvolvedor usar reverse do que colocar -15.

Seria isso?

solução!
Mas pelo que entendi, ficaria mais legível para outro desenvolvedor usar reverse do que colocar -15.

Sim.

Ele faz efeito porque você está passando valor negativo. Mostre este código para outra pessoa e pergunta se ela irá entender este -15.

Eu iria ficar viajando ao olhar para este -15.Provavelmente teria que abrir o código para saber do que trata.

É melhor deixar como animate.reverse, pois deixa explícito o que a diretiva irá fazer e ainda por cima reflete a quantidade de graus que desejo rotacionar.

...os dois jeitos estão certos? Se funcionou, então OK.

Quais dos dois são boas práticas de programação? Acredito que seja a forma do professor e pelos motivos citados acima.

Ok, blz, muito obrigado pelo esclarecimento, vou fazer o que é certo, mesmo usando mais linhas de código.