JSFiddle - React, Tailwind, and code Playground

by tema1302

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.3/vue.min.js"></script>
<div id="app">
  <button
    v-for="(n, i) in images"
    @click="image = i"
    :disabled="image === i"
  >Trump #{{ i }}</button>
  <div>
    <transition name="imagerrr" mode="out-in">
      <img :key="image" :src="images[image]">
    </transition>
  </div>
</div>

CSS

img {
  width: 300px;
}

.imagerrr-enter-active,
.imagerrr-leave-active {
  transition: opacity .3s;
}

.imagerrr-enter,
.imagerrr-leave-to {
  opacity: 0;
}

JavaScript

new Vue({
  el: '#app',
  data: {
    image: 0,
    images: [
      'https://specials-images.forbesimg.com/imageserve/5babef3da7ea4342a948c024/416x416.jpg?background=000000&cropX1=1318&cropX2=2825&cropY1=226&cropY2=1732',
      'https://pixel.nymag.com/imgs/daily/intelligencer/2018/08/24/24-donald-trump-2.w700.h700.jpg',
      'https://pixel.nymag.com/imgs/daily/intelligencer/2018/11/29/29-trump-rich.w700.h700.jpg',
    ],
  },
});