123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- <template>
- <div class="imgcon">
- <div class="swiper-container" :class="keyid" >
- <ul class="swiper-wrapper imgul">
- <li class="swiper-slide img" v-for="(pic, picii) in list" :key="picii" :style="{ backgroundImage: `url(${pic})` }"></li>
- </ul>
- <ul class="pagination">
- <li :class="{active:picii==current}" v-for="(pic, picii) in list" :key="picii"></li>
- </ul>
- </div>
- </div>
- </template>
- <script setup>
- import { ref, watch, defineEmits, computed, onMounted, nextTick, defineProps } from "vue";
- const current = ref(0)
- const props = defineProps({
- list: {
- type: Array,
- default: [],
- },
- keyid:{
- type: String,
- default: 'keyid',
- }
- });
- const initScroll = () => {
- nextTick(() => {
- let t = setTimeout(() => {
- clearTimeout(t);
- console.log(props.keyid);
- new Swiper(`.${props.keyid}`, {
- on: {
- touchMove(swiper, e) {
- e.stopPropagation();
- e.preventDefault();
- },
- slideChange() {
- current.value = this.activeIndex;
- },
- },
- });
- }, 100);
- });
- };
- onMounted(() => {
- initScroll();
- });
- </script>
- <style lang="scss" scoped>
- .imgcon{
- min-height: 34vh;
- .swiper-container {
- position: relative;
- .imgul {
- .img {
- height: 34vh;
- width: 100%;
- background-size: auto 100%;
- background-position: center;
- }
- }
- .pagination{
- position: absolute;
- left: 50%;
- bottom: 10px;
- transform: translateX(-50%);
- z-index: 99;
- >li{
- width: 8px;
- height: 8px;
- margin: 0 4px;
- display: inline-block;
- border-radius: 50%;
- background-color: rgba(0, 0, 0, 0.2);
- &.active{
- background-color: var(--editor-main-color);
- }
- }
- }
- }
- }
- </style>
|