|
@ -1,9 +1,28 @@ |
|
|
<template> |
|
|
<template> |
|
|
<swiper :pagination="pagination" :modules="modules" class="header_swiper"> |
|
|
|
|
|
<swiper-slide>Slide 1</swiper-slide> |
|
|
|
|
|
|
|
|
<swiper |
|
|
|
|
|
:pagination="pagination" |
|
|
|
|
|
:modules="modules" |
|
|
|
|
|
:loop="true" |
|
|
|
|
|
@autoplayTimeLeft="onAutoplayTimeLeft" |
|
|
|
|
|
:autoplay="{ |
|
|
|
|
|
delay: 5000, |
|
|
|
|
|
disableOnInteraction: false, |
|
|
|
|
|
}" |
|
|
|
|
|
class="header_swiper" |
|
|
|
|
|
> |
|
|
|
|
|
<swiper-slide> |
|
|
|
|
|
<div class="slide_one">hello world</div> |
|
|
|
|
|
</swiper-slide> |
|
|
<swiper-slide>Slide 2</swiper-slide> |
|
|
<swiper-slide>Slide 2</swiper-slide> |
|
|
<swiper-slide>Slide 3</swiper-slide> |
|
|
<swiper-slide>Slide 3</swiper-slide> |
|
|
<swiper-slide>Slide 4</swiper-slide> |
|
|
<swiper-slide>Slide 4</swiper-slide> |
|
|
|
|
|
<template #container-end> |
|
|
|
|
|
<div class="autoplay-progress"> |
|
|
|
|
|
<svg viewBox="0 0 48 48" ref="progressLine"> |
|
|
|
|
|
<line x1="0" y1="2" x2="300" y2="2" stroke="skyblue"></line> |
|
|
|
|
|
</svg> |
|
|
|
|
|
</div> |
|
|
|
|
|
</template> |
|
|
</swiper> |
|
|
</swiper> |
|
|
</template> |
|
|
</template> |
|
|
<script> |
|
|
<script> |
|
@ -12,38 +31,40 @@ import { Swiper, SwiperSlide } from 'swiper/vue' |
|
|
// Import Swiper styles |
|
|
// Import Swiper styles |
|
|
import 'swiper/css' |
|
|
import 'swiper/css' |
|
|
// import required modules |
|
|
// import required modules |
|
|
import { Pagination } from 'swiper' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import { Pagination, Autoplay } from 'swiper' |
|
|
|
|
|
import { ref } from 'vue' |
|
|
export default { |
|
|
export default { |
|
|
components: { |
|
|
components: { |
|
|
Swiper, |
|
|
Swiper, |
|
|
SwiperSlide, |
|
|
SwiperSlide, |
|
|
}, |
|
|
}, |
|
|
setup() { |
|
|
setup() { |
|
|
|
|
|
const progressLine = ref(null) |
|
|
|
|
|
const onAutoplayTimeLeft = (s, time, progress) => { |
|
|
|
|
|
progressLine.value.style.setProperty('--progress', 1 - progress) |
|
|
|
|
|
} |
|
|
return { |
|
|
return { |
|
|
|
|
|
onAutoplayTimeLeft, |
|
|
|
|
|
progressLine, |
|
|
pagination: { |
|
|
pagination: { |
|
|
clickable: true, |
|
|
|
|
|
renderBullet: function (index, className) { |
|
|
renderBullet: function (index, className) { |
|
|
let indexName = '' |
|
|
|
|
|
switch (index) { |
|
|
|
|
|
case 0: |
|
|
|
|
|
indexName = '产品梦工厂' |
|
|
|
|
|
break |
|
|
|
|
|
case 1: |
|
|
|
|
|
indexName = '硬件实验室' |
|
|
|
|
|
break |
|
|
|
|
|
case 2: |
|
|
|
|
|
indexName = '结构实验室' |
|
|
|
|
|
break |
|
|
|
|
|
case 3: |
|
|
|
|
|
indexName = '全案开发' |
|
|
|
|
|
break |
|
|
|
|
|
} |
|
|
|
|
|
return '<div class="' + className + '">' + indexName + '</div>' |
|
|
|
|
|
|
|
|
return '<div class="' + className + '"></div>' |
|
|
}, |
|
|
}, |
|
|
}, |
|
|
}, |
|
|
modules: [Pagination], |
|
|
|
|
|
|
|
|
modules: [Pagination, Autoplay], |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
} |
|
|
} |
|
|
</script> |
|
|
</script> |
|
|
|
|
|
|
|
|
|
|
|
<style scoped lang="scss"> |
|
|
|
|
|
.header_swiper { |
|
|
|
|
|
.slide_one { |
|
|
|
|
|
width: 100%; |
|
|
|
|
|
height: 100%; |
|
|
|
|
|
background: url(../../../../assets/img/1.jpg); |
|
|
|
|
|
background-position: 40%; |
|
|
|
|
|
background-size: auto 100%; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
</style> |