1. 程式人生 > >微信小程式實現tab和swiper切換結合效果viewpage+tab效果

微信小程式實現tab和swiper切換結合效果viewpage+tab效果


swiper.js 程式碼

//index.js
//獲取應用例項
var app = getApp();
var mtabW;
Page({
    data: {
        tabs: ["A", "B", "C", "D", "E"],//tob標題
        pageData: ["pageA", "pageB", "pageC", "pageD", "pageE"],//page資料
        activeIndex: 0,
        slideOffset: 0,
        tabW: 0,
        index:0,
        topView: 'A'
    },
    onLoad: function () {
        var that = this;
        wx.getSystemInfo({
            success: function (res) {
                mtabW = res.windowWidth / 3;  
                that.setData({
                    tabW: mtabW
                })
            }
        });

    },

    tabClick: function (e) {
        console.log(e)
        var that = this;
        var index = 0;
        for (var i = 0; i < this.data.tabs.length; i++) {
            if (this.data.tabs[i] === e.currentTarget.dataset.item) {
                index = i
                break
            }
        }
        var offsetW = e.currentTarget.offsetLeft; 
        this.setData({
            activeIndex: index,
            slideOffset: offsetW
        });
    },
    bindChange: function (e) {
        var current = e.detail.current;
        var offsetW = current * mtabW;    
        this.setData({
            activeIndex: current,
            index: current,
            slideOffset: offsetW,
            topView: this.data.tabs[current]
        });
        console.log(this.data.topView + ' ' + offsetW)

    }

})
swiper.wxml
<scroll-view scroll-x="true" class="weui-navbar" scroll-into-view="{{topView}}">
    <block wx:for-items="{{tabs}}" wx:key='key'>
        <view id="{{item}}" class="{{activeIndex == index ?'item_on':''}} default-item" bindtap="tabClick" style="width:{{tabW}}px" data-item='{{item}}'>
            {{item}}
        </view>
    </block>
    <view class="weui-navbar-slider" style="transform:translateX({{slideOffset}}px);"></view>
</scroll-view>
<view class="rec" />
<swiper current="{{activeIndex}}" class="swiper-box" duration="100" bindchange="bindChange">
<block wx:for="{{pageData}}" wx:key='key'>
    <swiper-item class="swiper-item">
            <view >{{item}}</view>
    </swiper-item>
     </block>
</swiper>

swiper.wxss
page {
  height: 100%;
}
view , scroll-view{
  padding: 0px;
  margin: 0px;
}
.weui-navbar{
   width: 100%;
   position: fixed;
   border-bottom: 1px solid #0000ff;
   box-sizing: border-box;
   white-space: nowrap; 
   z-index: 100;
   background: white;
}
.rec{
  width: 100%;
  height: 7%;
}
.weui-navbar .default-item{
  /*width:25%;*/
  display: inline-block;
  text-align: center;
  font-size: 32rpx;
  box-sizing: border-box;
  height: 7%;
  padding-bottom: 20rpx;
}
.weui-navbar .item_on{
   color: #0000ff;
}
.weui-navbar-slider{
    position: absolute;
    width: 160rpx;
    height: 2px;
    content:"";
    background: #0000ff;
    bottom: 0px;
    left: 12.5rpx;
    transition: transform .3s;
}
.swiper-box{
  height: 100%;
  border-bottom: 1px solid #d1d1d1;
}
.swiper-box .swiper-item{
   text-align: center;
   padding-top: 200rpx;
   height: 100%;
}



相關推薦

程式實現顯示隱藏控制元件-頭像-取值-bindblur事件

微信小程式實現顯示和隱藏控制元件 .wxml: <view class=" {{showOrHidden?'show':'hidden'}}"></view> .wxss: .hidden { display: none; } .show { display: b

程式實現tabswiper切換結合效果viewpage+tab效果

swiper.js 程式碼 //index.js //獲取應用例項 var app = getApp(); var mtabW; Page({ data: { tabs: ["A", "B", "C", "D", "E"],//tob標題

程式實現給迴圈列表點選新增類(單項多項)

在微信小程式裡面沒有DOM物件, 不能操作DOM. 所有的操作通過資料來實現,下面主要實現了給迴圈列表點選新增類的操作 一、單項 目標需求:實現下圖,給點選的view增加類,每次只能選擇一個。 主要思路:給點選的view增加類,

(四)程式--輪播圖swiper元件實現及Boolean值陷阱

輪播圖 swiper 元件 前期需要的搭建 將需要輪播的圖片儲存到/images/post/ 目錄下,沒有就建立它 在pages目錄下新建一個名為post的目錄,然後在post目錄下新建頁面所需要的4個檔案post.js, post.json, post.wxml, p

程式實現歷史搜尋記錄的本地儲存刪除

輸入框和搜尋按鈕表單的wxml,沒啥特別的,這裡綁定了輸入框的輸入值,樣式我就不放上來了 <form class='searchForm' bindsubmit='searchSubmitFn'> <input value="{{searchValue}}"

程式實現快遞查詢功能(介面傳值、JSON資料請求解析、radio-group的使用...)

執行效果: 請求資料之前需要首先在小程式平臺設定伺服器域名 第一個介面的實現:介面傳值、radio-group的使用 first.wxml <!--first.wxml--&g

程式實現搜尋城市的功能實現附效果圖完整程式碼

示例圖: 展示所有城市的資料,可實現模糊搜尋。 先上程式碼 <view class="page"> <view class="closeLocation" bindtap="goBack"> <image src="/img/icon/cl

程式實現簡易版tab切換效果

利用三元運算子實現登入註冊效果切換 直接上程式碼 wxml: <view class='top'> <text class="{{login?'active':''}}" catchtap='login'>登入</text>

程式--日期格式化實現倒計時

首先看看日期怎麼格式化第一種:Date.prototype.Format = function (fmt) { //author: meizz     var o = {        "M+": this.getMonth() + 1, //月份         "d+":

程式--實現swiper切換

// pages/qurry1/query1.js var util = require('../../utils/util.js'); Page({ /** * 頁面的初始資料 */ data: { currentTab: 0, active: false, }, // tab的切換 tabNav: fu

程式實現tab切換

程式碼如下: wxml <view class="tab"> <text class="image-text {{select1?'yes':'no'}}" bindtap="s

程式實現tab頁面切換功能

wxml<scroll-view scroll-x="true" class="ip_tab_comtainer"> <view class="ip_tab_comtainer_padd"></view> <block wx:for="{{ips}}" wx:

程式登入-openidunionid

本文轉自https://www.cnblogs.com/yaoyuqian/p/8203792.html   我們一般都是先獲取到微信的 unionid,然後再通過 unionid 去登入自己的網站,就可以關聯到使用者在自己網站上的 user_id,但是在小程式登入中,有時候可以獲取到

程式實現與後臺PHP互動

微信小程式實現與後臺PHP互動 接下來將講後臺如何與前臺進行資料及圖片之間的互動,相信這一點是很多人所關注的,因為當時我實在團隊中負責後臺開發,因此對前端不是特別瞭解,這裡我會貼出前端開發時的部分程式碼截圖,微信小程式的官方api介紹地址是:   https://mp.weix

坑:程式wx.requestwx.uploadFile中傳引數的區別

微信小程式中通過元件<form>提交表單的時候,在js中通過e.detail.value得到所提交表單的json格式資料。一般提交表單我們都是通過wx.request請求,提交表單資料,通過引數data傳資料, wx.request({ url: 'test.php', //僅為示例,

程式實現倒計時計時器

微信小程式驗證碼倒計時*秒 var timer = setInterval(function () { lastTime--; that.setData({ codeText:

程式scroll-view元件

scroll-view的css樣式很坑   按照下邊這個 .scroll-view_H{   white-space: nowrap; } .scroll-view-item{   height: 200px; }

程式實現驗證碼倒計時效果

效果圖 wxml <input class='input-pwd' placeholder="新密碼" placeholder-style='color: #000' password focus bindconfirm='getPwd'/> <input class='i

程式:globalDataStorage資料儲存中的坑

前言 在小程式登入是,將返回的使用者資料,儲存在globalData中和storage中。 // 儲存的資料是一個物件 wx.setStorageSync('userAuthData', user.data.data); this.globalData.userAuthData = user

程式實現星星評價效果

程式碼實現 wxml檔案 ? 1 2 3