轮播图里嵌套一个视频,其余是图片,在data里怎么写video链接?

<template>
<div>

<div id="sidebar">
  <div class='panel'>
    <div id="slider">  
      <div class="window" @mouseover="stop" @mouseleave="play">
        <!-- 轮播图片 -->
        <ul class="container" :style="containerStyle">
          <li @click="dianji(sliders[sliders.length - 1].a)">        
            <img :src="sliders[sliders.length - 1].img" alt="">              
          </li>
          <li v-for="(item, index) in sliders" :key="index" @click="dianji(item.a)">
           **<video v-if="item.type == video"  class="vjs-tech" controls :src="item.video"></video>
            <img v-else="item.type == img" :src="item.img" alt="">**             
          </li>
          <li @click="dianji(sliders[0].a)">
            <img :src="sliders[0].img" alt="">             
          </li>
        </ul>

        <!-- 轮播左右箭头 -->
        <ul class="direction">
          <li class="left" @click="move(450, 1, speed)">
            <svg class="icon" width="18px" height="18px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#ffffff" d="M481.233 904c8.189 0 16.379-3.124 22.628-9.372 12.496-12.497 12.496-32.759 0-45.256L166.488 512l337.373-337.373c12.496-12.497 12.496-32.758 0-45.255-12.498-12.497-32.758-12.497-45.256 0l-360 360c-12.496 12.497-12.496 32.758 0 45.255l360 360c6.249 6.249 14.439 9.373 22.628 9.373z"  /></svg>
          </li>
          <li class="right" @click="move(450, -1, speed)">
            <svg class="icon" width="18px" height="18px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#ffffff" d="M557.179 904c-8.189 0-16.379-3.124-22.628-9.372-12.496-12.497-12.496-32.759 0-45.256L871.924 512 534.551 174.627c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0l360 360c12.496 12.497 12.496 32.758 0 45.255l-360 360c-6.249 6.249-14.439 9.373-22.628 9.373z"  /></svg>
          </li>
        </ul>
        <!-- 轮播圆点 -->
        <ul class="dots">
          <li v-for="(dot, i) in sliders" :key="i" 
            :class="{dotted: i === (currentIndex-1)}" @click = jump(i+1)>
          </li>
        </ul>
      </div>
    </div>
  </div>
  <Homepage_right></Homepage_right>
</div>    

</div>
</template>
<script>
import Homepage_right from '@/components/Homepage_right'
export default {

name: 'Rotation_chart',
components:{
  Homepage_right,
},
props: {
  initialSpeed: {
    type: Number,
    default: 30
  },
  initialInterval: {
    type: Number,
    default: 4
  }
},
data () {
  return {
    sliders:[
      { 
        type: video,         
        video: 'https://mooc.len.com/wp-content/uploads/2018/11/最终版20181128.mp4',
      },
      {   
        type: img,    
        img: require('../public/images/acronym.jpg'),
        a: 'sip:selfservice@lenovo.com'           
      },
      {
        type: img,
        img: require('../public/images/studio.jpg'),
        a: 'http://ccai.xyz'
      },
      {
        type: img,
        img: require('../public/images/baibianxiaoka.png'),
        a: 'http://ss.lenovo.com'
      }
    ],
    currentIndex:1,
    distance:-450,
    transitionEnd: true,
    speed: this.initialSpeed
  }
},
computed:{
  containerStyle() {
    return {
      transform:`translate3d(${this.distance}px, 0, 0)`
    }
  },
  interval() {
    return this.initialInterval * 1500
  }
},
mounted() {
  this.init()
},
methods:{
  init() {
    this.play()
    window.onblur = function() { this.stop() }.bind(this)
    window.onfocus = function() { this.play() }.bind(this)
  },
  move(offset, direction, speed) {
    console.log(speed)
    if (!this.transitionEnd) return
    this.transitionEnd = false
    direction === -1 ? this.currentIndex += offset/450 : this.currentIndex -= offset/450
    if (this.currentIndex > 4) this.currentIndex = 1
    if (this.currentIndex < 1) this.currentIndex = 4

    const destination = this.distance + offset * direction
    this.animate(destination, direction, speed)
  },
  animate(des, direc, speed) {
    if (this.temp) {
      window.clearInterval(this.temp);
      this.temp = null ;
    }
    this.temp = window.setInterval(() => {
      if ((direc === -1 && des < this.distance) || (direc === 1 && des > this.distance)) {
        this.distance += speed * direc
      } else {
        this.transitionEnd = true
        window.clearInterval(this.temp)
        this.distance = des
        if (des < -1820) this.distance = -450
        if (des > -450) this.distance = -1820
      }
    }, 50)
  },
  jump(index) {
    const direction = index - this.currentIndex >= 0 ? -1 : 1;
    const offset = Math.abs(index - this.currentIndex) * 450;
    const jumpSpeed = Math.abs(index - this.currentIndex) === 0 ? this.speed : Math.abs(index - this.currentIndex) * this.speed ;
    this.move(offset, direction, jumpSpeed)
  },
  play() {
    if (this.timer) {
      window.clearInterval(this.timer)
      this.timer = null
    }
    this.timer = window.setInterval(() => {
      this.move(450, -1, this.speed)
    }, this.interval)
  },
  stop() {
    window.clearInterval(this.timer)
    this.timer = null
  },
  dianji(a){
    window.open(a)
  },
}

}
</script>
图片描述
图片描述

阅读 2.4k
1 个回答

先不看js <video v-if="item.type == video" class="vjs-tech" controls :src="item.video"></video>

        <img v-else="item.type == img" :src="item.img" alt=""> 这段代码就有问题,v-if="item.type == 'video'", img  v-if"item.type == 'img'"
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题