修改轮播

master
fanluyan 2 years ago
parent 545cd1a11f
commit f6b16ce615

@ -271,4 +271,3 @@ export default {
} }
// https://v1.github.surmon.me/vue-awesome-swiper/ // https://v1.github.surmon.me/vue-awesome-swiper/
</style> </style>

@ -1,22 +1,30 @@
<template> <template>
<div class="thumb-example2"> <div class="thumb-example">
<!-- swiper1 -->
<swiper <swiper
class="swiper gallery-top" class="swiper gallery-top"
:options="swiperOptionTop" :options="swiperOptionTop"
ref="swiperTop" ref="swiperTop"
> >
<swiper-slide <swiper-slide
:class="`slide-${index + 1}`" class="slide-1"
v-for="(item, index) in terminalPhoto" v-for="(item, index) in terminalPhoto"
:key="item.id" :key="item.id"
v-bind:style="{ >
'background-image': 'url(' + item.path + ')', <viewer class="bigimg" v-if="item.path.indexOf('nopic') == -1">
}" <!-- <img :src="item.path + '!1280x720'" alt="" /> -->
></swiper-slide> <img v-if="index == 0" :src="item.path + '!1280x720'" />
<!-- <swiper-slide class="slide-2"></swiper-slide> <img
<swiper-slide class="slide-3"></swiper-slide> v-else
<swiper-slide class="slide-4"></swiper-slide> src="../../assets/img/loading.jpg"
<swiper-slide class="slide-5"></swiper-slide> --> :data-src="item.path + '!1280x720'"
class="swiper-lazy"
/>
</viewer>
<div class="bigimg" v-else>
<img :src="item.path" alt="" />
</div>
</swiper-slide>
<div <div
class="swiper-button-next swiper-button-white" class="swiper-button-next swiper-button-white"
slot="button-next" slot="button-next"
@ -33,13 +41,56 @@
ref="swiperThumbs" ref="swiperThumbs"
> >
<swiper-slide <swiper-slide
:class="`slide-${index + 1}`" class="slide"
v-for="(item, index) in terminalPhoto" v-for="(item, index) in terminalPhoto"
:key="item.id" :key="item.id"
v-bind:style="{ >
'background-image': 'url(' + item.path + ')', <div class="bigimg" v-if="item.path.indexOf('nopic') == -1">
}" <!-- <img :src="item.path + '!1280x720'" alt="" /> -->
></swiper-slide> <img v-if="index == 0" :src="item.path + '!260x160'" />
<img
v-else
src="../../assets/img/loading.jpg"
:data-src="item.path + '!260x160'"
class="swiper-lazy"
/>
</div>
<div class="bigimg" v-else>
<img :src="item.path" alt="" />
</div>
<!-- <img v-if="index == 0" :src="item.path + '!1280x720'" />
<img
src="item.path + '!260x160'"
alt=""
:data-src="item.path + '!260x160'"
class="swiper-lazy"
v-else-if="item.path.indexOf('nopic') == -1"
/>
<img :src="item.path" alt="" v-else /> -->
<p class="timeInfo" v-if="item.path.indexOf('nopic') == -1">
<el-tooltip
class="item"
effect="dark"
content="拍照时间"
placement="top-start"
>
<span>{{ $moment(item.photoTime).format("HH:mm:ss") }}</span>
</el-tooltip>
(
<el-tooltip
class="item"
effect="dark"
content="图片上传时间"
placement="top-start"
>
<span> {{ $moment(item.recvTime).format("HH:mm:ss") }}</span>
</el-tooltip>
)
<span>--通道{{ item.channelId }}</span>
</p>
</swiper-slide>
</swiper> </swiper>
</div> </div>
</template> </template>
@ -47,10 +98,7 @@
<script> <script>
import { Swiper, SwiperSlide } from "vue-awesome-swiper"; import { Swiper, SwiperSlide } from "vue-awesome-swiper";
import "swiper/css/swiper.css"; import "swiper/css/swiper.css";
export default { export default {
name: "swiper-example-thumbs-gallery",
title: "Thumbs gallery with Two-way control",
components: { components: {
Swiper, Swiper,
SwiperSlide, SwiperSlide,
@ -64,22 +112,55 @@ export default {
data() { data() {
return { return {
swiperOptionTop: { swiperOptionTop: {
loop: true,
loopedSlides: 5, // looped slides should be the same
spaceBetween: 10, spaceBetween: 10,
//loop: true,
freeMode: true,
// loopedSlides: 1,
lazy: {
loadPrevNext: true,
loadPrevNextAmount: 1,
loadOnTransitionStart: true,
},
// lazyLoading: true, //
navigation: { navigation: {
nextEl: ".swiper-button-next", nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev", prevEl: ".swiper-button-prev",
}, },
observer: true, //swiperswiper
observeParents: true, //swiperswiper
onSlideChangeEnd: function (swiper) {
swiper.update();
},
virtual: {
slides: (function () {
var slides = [];
for (var i = 0; i < 100; i += 1) {
slides.push("Slide " + (i + 1));
}
return slides;
})(),
},
}, },
swiperOptionThumbs: { swiperOptionThumbs: {
loop: true,
loopedSlides: 5, // looped slides should be the same
spaceBetween: 10, spaceBetween: 10,
centeredSlides: true, centeredSlides: true,
slidesPerView: "auto", slidesPerView: "auto",
touchRatio: 0.2, touchRatio: 0.2,
lazyLoading: true, //
slideToClickedSlide: true, slideToClickedSlide: true,
lazy: {
loadPrevNext: true,
loadPrevNextAmount: 5,
loadOnTransitionStart: true,
//loadOnTransitionStart: true,
},
observer: true, //swiperswiper
observeParents: true, //swiperswiper
onSlideChangeEnd: function (swiper) {
swiper.update();
},
//loop: true,
//loopedSlides: 4,
}, },
}; };
}, },
@ -91,36 +172,111 @@ export default {
swiperThumbs.controller.control = swiperTop; swiperThumbs.controller.control = swiperTop;
}); });
}, },
methods: {},
}; };
</script> </script>
<style lang="less">
<style lang="less" scoped> .thumb-example {
.thumb-example2 { width: 100%;
height: 480px; display: flex;
background-color: #000; flex-direction: column;
.swiper { height: calc(100% - 26px);
.swiper-slide { box-sizing: border-box;
background-size: cover; .gallery-top {
background-position: center; //background: #fcc;
} width: 100%;
height: 80%;
&.gallery-top { overflow: hidden;
height: 80%; margin-bottom: 4px;
//border: 3px solid transparent;
.slide-1 {
width: 100%; width: 100%;
overflow: hidden;
.bigimg {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
img {
width: 100%;
height: 100%;
object-fit: fill;
}
} }
&.gallery-thumbs { .swiper-button-prev.swiper-button-disabled,
height: 20%; .swiper-button-next.swiper-button-disabled {
box-sizing: border-box; opacity: 0.35;
padding: 10px 0; cursor: auto;
pointer-events: none;
display: none !important;
} }
&.gallery-thumbs .swiper-slide { }
width: 25%; .gallery-thumbs {
height: 100%; width: 100%;
opacity: 0.4; height: 18%;
.slide {
width: 20%;
border: 3px solid transparent;
overflow: hidden;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
.bigimg {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
img {
//width: 100%;
height: 100%;
object-fit: fill;
}
} }
&.gallery-thumbs .swiper-slide-active {
opacity: 1; .timeInfo {
position: absolute;
bottom: 0px;
width: 100%;
background: #f0f0f0;
padding: 8px 0px;
font-size: 12px;
text-align: center;
color: #333;
} }
} }
.swiper-button-next.swiper-button-white,
.swiper-container-rtl .swiper-button-prev.swiper-button-white,
.swiper-button-prev.swiper-button-white,
.swiper-container-rtl .swiper-button-next.swiper-button-white {
width: 40px;
height: 40px;
border-radius: 30px;
position: absolute;
top: 50%;
transform: translateY(-50%);
background-color: rgba(0, 0, 0, 0.5);
display: flex;
justify-content: center;
align-items: center;
font-size: 30px;
color: #fff;
text-align: center;
line-height: 60px;
}
.swiper-button-next:after,
.swiper-container-rtl .swiper-button-prev:after,
.swiper-button-prev:after,
.swiper-container-rtl .swiper-button-next:after {
transform: scale(0.5);
}
} }
// https://v1.github.surmon.me/vue-awesome-swiper/
</style> </style>

Loading…
Cancel
Save