zoukankan      html  css  js  c++  java
  • 类似今日头条,头部tab可滑动,下面的内容可跟着滚动,掺杂着vue和require等用法例子

     

    1、在main.js里

    /*主模块的入口 结合require一起使用*/

    require.config({//require的基础用法   配置一下
           paths: {
              "Zepto" : "zepto.min",
              "fastclick":"fastclick",
              "jquery-weui": "jquery-weui.min",
              "vue": "vue.min",
              "swiper": "swiper.min.new",
              "url": "base_url",
              "vue-resource":"vue-resource",
              "base64":"jquery.base64",
              "common":"../../js/wsc/common",
              "wx":"https://res.wx.qq.com/open/js/jweixin-1.2.0",
              "commonShare":"../../js/wsc/common_share",
          },
          shim: {//下面这些是非规范AMD
             'jquery-weui': {
                  deps: ['Zepto']
              },
              'swiper': {
                  deps: ['Zepto']
              },
              'vue': {
                  exports: 'Vue'
              },
              'vue-resource': {
                  deps: ['vue'],
              //exports: 'vue-resource'
              },
              'base64':{//不是AMD写法
                  deps: ['Zepto'],
              },
              'url': {
                  deps: ['Zepto']
              },
              'commonShare': {
                  deps: ['wx']
              },
          }
    
      });
    
      require(['Zepto','fastclick','jquery-weui', 'vue', "swiper", "url", "vue-resource","base64","common","wx","commonShare"], function (){
          var currentPage = $("#current-page").attr("current-page");
          var targetModule = $("#current-page").attr("target-module");
          if (targetModule) {
          // 页面加载完毕后再执行相关业务代码比较稳妥
              $(function () {
                  if(currentPage == 'manage_address'){
                  require(["city-data"], function (x) {
                      require(["city-picker"], function (x) {
                          require([targetModule], function (targetModule) {
                              // 不要在这里写业务代码
                              //全部统一调用init方法
                              //也就是每个模块都暴露一个init方法用于事件监听,页面内容加载等
                              targetModule.init(currentPage);
                          });
                      })
                  })
         }else{
              require([targetModule], function (targetModule) {
                  // 不要在这里写业务代码
                  //全部统一调用init方法
                  //也就是每个模块都暴露一个init方法用于事件监听,页面内容加载等
                  targetModule.init(currentPage);
              });
            }
        });
            return;
      }
    });

    2、在页面里

    <div class="swiper-container2">
        <div class="swiper-wrapper" >
            <div class="swiper-slide PDB60">
                <!--轮播图-->
                 <div class="swiper-container carousel loop" >
                      <div class="swiper-wrapper">
                          <div class="swiper-slide" >
                              <img src="img/1.jpg" />
                          </div>
                          <div class="swiper-slide" >
                            <img src="img/1.jpg" />
                          </div>
                      </div>
                      <div class="swiper-pagination"></div>
                </div>
                <div class="swiper-slide" v-for="i in 8">Slide {{i}}</div>
            </div>
       </div>
    </div>

    //所有的页面引入一个公共的require入口
    <script src="../../static/js/require.js" id="current-page" defer async="true" data-main="../../static/js/main" current-page="wsc_index" target-module="../../js/wsc/wsc_index"></script>

      

    3、在每个页面对应的js里

    define(['Zepto','vue','common','vue-resource','swiper'],function($,Vue,com,VueResource,Swiper){
          var newCtrl = {};
          newCtrl.init = function (page) {
              Vue.use(VueResource);//这里得use一下
              var vue = new Vue({
                  el: '.app',
                  data: {
                      tabs:['热门','男装','鞋包','手机','电器','食品','百货','服饰','tab..'],//头部所有可以滑动的tab
                      currentTabIndex:0,//当前的tab的点击
                      loop:'',//页面的局部轮播图
                      mySwiper:'',//头部的tab
                      pageSwiper:'',//页面的轮播
                  },
                  created: function () {
                      var that = this
                      that.footer_list=com.getFooterList();
                  },
                  mounted: function () {
                      var that = this;
                      that.initSwiper();
                      // 页面的滚动
                      that.getPageSwiper();
                  },
                  methods: {
                      initSwiper: function(){
                          //头部可滑动tab
                          this.mySwiper = new Swiper('#topNav', {
                              freeMode: true,
                              freeModeMomentumRatio: 0.5,
                              slidesPerView: 'auto',
                          });
                          //页面局部小轮播图
                          this.loop= new Swiper('.loop', {
                              pagination: '.swiper-pagination',
                              autoplay: 2000,
                              speed: 500,
                              loop: true,
                              onSlideChangeStart: function (swiper) {
                                swiper.startAutoplay();
                              },
                          })
                      },
                      swiperTab:function(swiper, e){
                          var that = this;
                          that.pageSwiper.slideTo(that.mySwiper.clickedIndex, 1000, false);//跳转
                          //    e.preventDefault()
                          slide = that.mySwiper.slides[that.mySwiper.clickedIndex]
                          
                          slideLeft = slide.offsetLeft
                          slideWidth = slide.clientWidth
                          slideCenter = slideLeft + slideWidth / 2
                          // 被点击slide的中心点
                          that.mySwiper.setWrapperTransition(300)
                              if (slideCenter < swiperWidth / 2) {
                              that.mySwiper.setWrapperTranslate(0)
                          } else if (slideCenter > maxWidth) {
                              that.mySwiper.setWrapperTranslate(maxTranslate)
                          } else {
                              nowTlanslate = slideCenter - swiperWidth / 2
                              that.mySwiper.setWrapperTranslate(-nowTlanslate)
                          }
                     },
                    //点击头部的tab
                    clickTab:function(index,item){
                        var that =this;
                        this.currentTabIndex=index;
                    },
                    getPageSwiper:function(){
                        var that = this;
                        swiperWidth = this.mySwiper.container[0].clientWidth
                        maxTranslate = this.mySwiper.maxTranslate();
                        maxWidth = -maxTranslate + swiperWidth / 2
                        this.pageSwiper = new Swiper('.swiper-container2', {
                            paginationClickable: true,
                            uniqueNavElements :false,
                            onSlideChangeStart: function(swiper){
                                that.currentTabIndex = swiper.activeIndex;
                                slide = that.mySwiper.slides[swiper.activeIndex];//获取当前的slide节点
                                slideLeft = slide.offsetLeft
                                slideWidth = slide.clientWidth
                                slideCenter = slideLeft + slideWidth / 2
                                // 被点击slide的中心点
                                that.mySwiper.setWrapperTransition(300)
                                if (slideCenter < swiperWidth / 2) {
                                    that.mySwiper.setWrapperTranslate(0)
                                } else if (slideCenter >maxWidth) {
                                    that.mySwiper.setWrapperTranslate(maxTranslate)
                                } else {
                                    nowTlanslate = slideCenter - swiperWidth / 2
                                    that.mySwiper.setWrapperTranslate(-nowTlanslate)
                                }
                            }
                       });
                    
                    },
                  }
              })
          };
          newCtrl.login = function () {};
          return newCtrl;
      })

    4、在css里

      #topNav {
        width: 100%;
        overflow: hidden;
        font: 16px/32px hiragino sans gb, microsoft yahei, simsun;
        border-bottom:1px solid #f8f8f8;
        height:44px;
        line-height:44px;
    }
    #topNav .swiper-slide {
        padding: 0 5px;
        letter-spacing:2px;
        width:3rem;
        text-align:center;
    }
    #topNav .swiper-slide span{
        font-size:15px;
        transition:all .3s ease;
        display:inline-block;
        height:90%;
    }
    #topNav .active span{
      transform:scale(1.1);
      color:#FF2D2D;
    }
    img{
        width:100%;
        line-height:0;
        max-height:150px;
    }
    .swiper-container2 {
      width: 100%;
      /*height: 90vh;*/
    }
    .swiper-container2 .swiper-slide{
       background: #fff;
    }
    .swiper-slide {
      text-align: center;
      font-size: 18px;
      background: #fff;
    
        /* Center slide text vertically */
        /* display: -webkit-box;
        display: -ms-flexbox;
        display: -webkit-flex;
        display: flex;
        -webkit-box-pack: center;
        -ms-flex-pack: center;
        -webkit-justify-content: center;
        justify-content: center;
        -webkit-box-align: center;
        -ms-flex-align: center;
        -webkit-align-items: center;
        align-items: center;*/
    }



  • 相关阅读:
    python 类C数组的两种形式:list -->内容可变, tuple --->内容不可变
    13、canvas操纵像素数据ImageData
    13、canvas操纵像素数据ImageData
    13、canvas操纵像素数据ImageData
    13、canvas操纵像素数据ImageData
    人工智能工程师学习路线
    人工智能工程师学习路线
    js数组排序和打乱
    js数组排序和打乱
    js数组排序和打乱
  • 原文地址:https://www.cnblogs.com/lmxxlm-123/p/9122554.html
Copyright © 2011-2022 走看看