zoukankan      html  css  js  c++  java
  • uniapp tab横向滑动菜单 wuc-tab 插件

    当内容过多的时候,滚动位置不准确

    <template>
    	<scroll-view class="wuc-tab" :class="tabClass" :style="tabStyle" scroll-with-animation scroll-x :scroll-left="scrollLeft"
    	 @scroll="scroll">
    		<div v-if="!textFlex">
    			<div class="wuc-tab-item" :class="[index === tabCur ? selectClass + ' cur':'']" v-for="(item,index) in tabList" :key="index"
    			 :id="index" @tap="tabSelect(index,$event)">
    				<text :class="item.icon"></text>
    				<span class="name">{{item.name}}</span>
    			</div>
    		</div>
    
    		<div class="flex text-center" v-if="textFlex">
    			<div class="wuc-tab-item flex-sub" :class="index === tabCur ? selectClass + ' cur':''" v-for="(item,index) in tabList"
    			 :key="index" :id="index" @tap="tabSelect(index,$event)">
    				<text :class="item.icon"></text>
    				<span class="name">{{item.name}}</span>
    			</div>
    		</div>
    	</scroll-view>
    </template>
    <script>
    	export default {
    		name: 'wuc-tab',
    		data() {
    			return {
    				scrollLeft: 0,
    				oldScrollLeft: 0
    			};
    		},
    		props: {
    			tabList: {
    				type: Array,
    				default () {
    					return [];
    				}
    			},
    			tabCur: {
    				type: Number,
    				default () {
    					return 0;
    				}
    			},
    			tabClass: {
    				type: String,
    				default () {
    					return '';
    				}
    			},
    			tabStyle: {
    				type: String,
    				default () {
    					return '';
    				}
    			},
    			textFlex: {
    				type: Boolean,
    				default () {
    					return false;
    				}
    			},
    			selectClass: {
    				type: String,
    				default () {
    					return 'text-blue';
    				}
    			}
    		},
    		methods: {
    			tabSelect(index, e) {
    				if (this.currentTab === index) return false;
    				this.$emit('update:tabCur', index);
    				this.$emit('change', index);
    			},
    			scroll: function(e) {
    				this.oldScrollLeft = e.detail.scrollLeft
    			},
    		},
    		watch: {
    			tabCur(val) {
            if (val == 0) { this.scrollLeft = this.oldScrollLeft setTimeout(() => { this.scrollLeft = 0 }, 5) } } } }; </script> <style> div, scroll-view, swiper { box-sizing: border-box; } .wuc-tab { white-space: nowrap; } .wuc-tab-item { height: 90upx; display: inline-block; line-height: 90upx; margin: 0 10upx; padding: 0 20upx; } .wuc-tab-item.cur { border-bottom: 4upx solid; } .wuc-tab.fixed { position: fixed; 100%; top: 0; z-index: 1024; box-shadow: 0 1upx 6upx rgba(0, 0, 0, 0.1); } .flex { display: flex; } .text-center { text-align: center; } .flex-sub { flex: 1; } .text-blue { color: #0081ff; } .text-white { color: #ffffff; } .bg-white { background-color: #ffffff; } .bg-blue { background-color: #0081ff; } .text-orange { color: #f37b1d } .text-xl { font-size: 36upx; } </style>

      

  • 相关阅读:
    Munge
    file upload custom form
    随笔摘要
    生成css 和 清缓存
    drupal commit 原则
    Git reset --hard
    www-data
    301/302的区别
    什么是request_uri
    in_array foreach array_search的性能比较
  • 原文地址:https://www.cnblogs.com/langqq/p/11726746.html
Copyright © 2011-2022 走看看