zoukankan      html  css  js  c++  java
  • 异行slide vue

    效果

    <template>
      <div class="hp-teacher-intro" v-if="item">
        <div class="title">
          <img class="icon" src="../../../../../../editorImg/teacher.png" alt="" />
          <h2>{{ moduleProp.title || '机构介绍' }}</h2>
        </div>
        <div class="card">
          <swiper class="swiper" :options="swiperOption" ref="mySwiper" @slideChange="slideChange">
            <!-- 添加的图片 -->
            <swiper-slide v-for="(v, index) in list" :key="index">
              <img class="img" :src="v.image" />
              <h4>{{ v.title }}</h4>
              <!-- <h6>
                {{ v.intro }}
              </h6> -->
            </swiper-slide>
          </swiper>
          <div v-for="(value, idx) in list" :key="idx" class="intro">
            <h6 v-show="idx === current">
              {{ value.intro }}
            </h6>
          </div>
          <!-- <div class="swiper">
            <a-carousel autoplay class="swiper-list">
              <img src="../../../../../../editorImg/peopel1.png" alt="" />
              <img src="../../../../../../editorImg/peopel2.png" alt="" />
              <img src="../../../../../../editorImg/peopel3.png" alt="" />
            </a-carousel>
          </div> -->
        </div>
      </div>
    </template>
    
    <script>
    import { mapState, mapActions } from 'vuex'
    import { getSitesEditorModuleStateKey } from '@/utils/util'
    import 'swiper/css/swiper.css'
    import { Swiper, SwiperSlide } from 'vue-awesome-swiper'
    export default {
      props: {
        moduleProp: {
          type: Object,
          default: () => {}
        }
      },
      data() {
        return {
          swiperOption: {
            // 可见图片张数
            slidesPerView: 3,
            // 默认选中中间一张
            centeredSlides: true,
            centeredSlidesBounds: true,
            // 无限循环
            loop: true,
            // effect: 'coverflow',
            // 小圆点(我此处没使用,列出供参考)
            pagination: {
              el: '.swiper-pagination',
              clickable: true
            },
            coverflow: {
              rotate: 0, // slide做3d旋转时Y轴的旋转角度。默认50。
              stretch: 200, // 每个slide之间的拉伸值,越大slide靠得越紧。 默认0。
              depth: 150, // slide的位置深度。值越大z轴距离越远,看起来越小。 默认100。
              // modifier: 1, // depth和rotate和stretch的倍率,相当于depth*modifier、rotate*modifier、stretch*modifier,值越大这三个参数的效果越明显。默认1。
              slideShadows: false // 开启slide阴影。默认 true。
            },
            // 自动轮播
            autoplay: {
              stopOnLastSlide: true,
              delay: 5000
            },
            // 上下按钮点击轮播效果
            navigation: {
              nextEl: '.swiper-button-next',
              prevEl: '.swiper-button-prev'
            }
          },
          list: [
            {
              image: require('../../../../../../editorImg/peopel1.png'),
              title: '11',
              intro: '11111111111111111112'
            },
            {
              image: require('../../../../../../editorImg/peopel2.png'),
              title: '222222',
              intro: '222222222222223'
            },
            {
              image: require('../../../../../../editorImg/peopel3.png'),
              title: '某某某:联合创始人某某某:联合创始人',
              intro:
                '某某某:联合创始人某某某:联合创始人某某某:联合创始人某某某:联合创始人某某某:联合创始人某某某:联合创始人某某某:联合创始人某某某:联合创始人某某某:联合创始人某某某:联合创始人某某某:联合创始人某某某:联合创始人'
            }
          ],
          current: 0
        }
      },
      computed: {
        ...mapState('sitesEditor', {
          item: function(state) {
            return state[getSitesEditorModuleStateKey('item', this.moduleProp)]
          }
        }),
        swiper() {
          return this.$refs.mySwiper.$swiper
        }
      },
      methods: {
        ...mapActions('sitesEditor', ['getModuleData']),
        async initData() {
          await this.getModuleData(this.moduleProp)
        },
        // 点击官网进行动态修改
        toOrgIntroOfficial() {
          const routerId = this.$route.params.id
          const routeUrl = this.$router.resolve({
            path: `/orgIntroOfficialEditor/edit/${routerId}`
          })
          window.open(routeUrl.href, '_blank')
        },
        slideChange() {
          this.current = this.swiper.realIndex
        }
      },
      mounted() {
        // this.initData()
      },
      components: {
        Swiper,
        SwiperSlide
      }
    }
    </script>
    
    <style lang="stylus" scoped>
    .hp-teacher-intro
      // height 144px
      width 100%
      padding 15px
     .title
        display flex
        align-items center
        .icon
          width 20px
          color #ff7e2f
          margin -8px 5px 0 5px
        h2
          // display inline-block
          font-weight bold
      .card
        padding 19px
        border-radius 10px
        box-shadow 0 0 8px #cccccc
        width 100%
        .swiper
          width 174px
          border-color white
          .swiper-slide
            // display flex
            position relative
            width 60px
            align-items center
            justify-content center
            .img
              // width 60px
              height 120px
              width 100%
            h4
              display none
            h6
              display none
          .swiper-slide-active
            z-index 999
            .img
              width 80px
              height 125px
            h4
              display block
              width 174px
              margin-left -60px
              margin-top 20px
              text-align center
        .intro
          text-align center
    </style>
  • 相关阅读:
    结构化思考力
    对象序列化解析
    单元测试的规范
    关于CefSharp的坎坷之路
    构建基于Chromium的应用程序
    C# 面向切面编程(AOP)--监控日志记录方案
    CefSharp 中断点 已达到中断点
    用批处理命令实现激活office2016
    Winform开发中的困境及解决方案
    VUE+Element 前端应用开发框架功能介绍
  • 原文地址:https://www.cnblogs.com/TTblog5/p/12943055.html
Copyright © 2011-2022 走看看