如何使用CSS全方位旋转图像

时间:2019-05-09 12:57:07

标签: html css vue.js sass

我有一个基本上在覆盖层上的图像,我想使用css和vue js在所有方向上旋转图像。

我有一个我写的codepen,可以帮助您了解我在做什么,下面我已经发布了代码

<div id="app">
  <v-app id="inspire">
    <div class="text-xs-center image-rotation" :class="{rotateImageRight: right, rotateImageLeft: left }">
      <img src="https://picsum.photos/500/300" />
    </div>
    <v-btn @click="rotateRight"> rotate right </v-btn>
    <v-btn @click="rotateLeft"> rotate left </v-btn>

  </v-app>
</div>

下面是我正在使用的CSS

.image-rotation {
  &.rotateImageRight {
    transform: rotate(90deg);
  -ms-transform: rotate(90deg); 
  -webkit-transform: rotate(90deg); 
  }
  &.rotateImageLeft {
    transform: rotate(-90deg);
  -ms-transform: rotate(-90deg); 
  -webkit-transform: rotate(-90deg);
  }
}

最后是我的vuejs代码

new Vue({
  el: '#app',
  data () {
    return {
      right: false,
      left: false
    }
  },
  methods: {
   rotateRight() {
     this.right = !this.right
   },
    rotateLeft() {
      this.left = !this.left
    }
  }
})

下面是我的密码笔链接

https://codepen.io/waseem-khan-the-bold/pen/RmrZNY

1 个答案:

答案 0 :(得分:2)

我认为最好的方法是直接将旋转应用于绑定的样式标签。参见下面的示例

new Vue({
  el: '#app',
  data () {
    return {
      rotation: 0,
    }
  },
  methods: {
   rotateRight() {
     this.rotation -= 90
   },
    rotateLeft() {
     this.rotation += 90
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@1.5.14/dist/vuetify.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/vuetify@1.5.14/dist/vuetify.min.css" rel="stylesheet"/>
<div id="app">
  <v-app id="inspire">
    <div class="text-xs-center" :style="`transform: rotate(${rotation}deg);`">
      <img src="https://picsum.photos/500/300" />
    </div>
    <v-btn @click="rotateLeft"> rotate left </v-btn>
    <v-btn @click="rotateRight"> rotate right </v-btn>
  </v-app>
</div>

或codepen:https://codepen.io/anon/pen/ardLdQ