1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- <template>
- <!-- #ifdef APP -->
- <scroll-view style="flex:1;" v-if="isShow">
- <!-- #endif -->
- <image class="transition-transform" id="transition-transform" @transitionend="onEnd" src="/static/uni.png"></image>
- <text class="adjust">对图片设置transform进行旋转,在旋转完成的transitionend事件后,继续旋转</text>
- <button class="adjust" @click="switchBtn">{{buttonValue}}</button>
- <!-- #ifdef APP -->
- </scroll-view>
- <!-- #endif -->
- </template>
- <script>
- export default {
- data() {
- return {
- times: 0,
- element: null as UniElement | null,
- isStart: false,
- buttonValue: "开启图片旋转",
- onTransitionEndTriggr: false,
- isShow: false
- }
- },
- onReady() {
- // onReady中动态修改isShow是为了验证在安卓手机上子线程中创建节点可能会崩溃的问题,不具备代码参考性。
- // #ifdef APP-ANDROID
- var that = this
- class ThreadRunnable extends Runnable {
- override run() {
- that.isShow = true
- }
- }
- new Thread(new ThreadRunnable()).start()
- // #endif
- // #ifndef APP-ANDROID
- this.isShow = true
- // #endif
- },
- methods: {
- switchBtn() {
- if (!this.isStart) {
- if (this.element == null) {
- this.element = uni.getElementById('transition-transform')
- }
- this.buttonValue = "关闭图片旋转"
- this.times = this.times + 1
- this.element!.style.setProperty('transition-duration', '2000ms')
- this.element!.style.setProperty('transform', 'rotate(' + this.times * 360 + 'deg)')
- this.isStart = true
- } else {
- this.isStart = false
- this.times = 0
- this.onTransitionEndTriggr = false
- this.buttonValue = "开启图片旋转"
- this.element!.style.setProperty('transition-duration', '0ms')
- this.element!.style.setProperty('transform', 'rotate(0deg)')
- }
- },
- onEnd() {
- console.log('transform transitionend')
- if (this.isStart) {
- this.times = this.times + 1
- this.element!.style.setProperty('transform', 'rotate(' + this.times * 360 + 'deg)')
- this.onTransitionEndTriggr = true
- }
- }
- }
- }
- </script>
- <style>
- .adjust {
- margin: 10px;
- }
- .transition-transform {
- width: 200px;
- height: 200px;
- margin: 25px auto;
- border-radius: 100px;
- transition-property: transform;
- transition-timing-function: linear;
- transform: rotate(0deg);
- }
- </style>
|