index.vue
<template>
<view>
<!-- 原顶部组件 -->
<view class="uni-tab-bar">
<scroll-view scroll-x class="uni-swiper-tab" >
<block v-for="(tab,index) in tabBars" :key="tab.id">
<view class="swiper-tab-list" :class="{'active':tabIndex==index}" @tap="tabtap(index)">
{{tab.name}}
<view class="swiper-tab-line"></view>
</view>
</block>
</scroll-view>
</view>
<!-- 引入顶部导航组件 -->
<!-- <swiper-tab-head :tabBars="tabBars" :tabIndex="tabIndex" @tabtap="tabtap"></swiper-tab-head> -->
<view class="uni-tab-bar" >
<swiper class="swiper-box" v-bind:style="{height:swiperheight+'rpx'}" :current="tabIndex" @change="tabChange">
<swiper-item v-for="(items,index) in newslist" :key="index">
<scroll-view scroll-y class="list">
<!-- 图文列表 -->
<block v-for="(item, index1) in items.list" :key="index1">
<index-list :item="item" :index="index1"></index-list>
</block>
<!-- 上拉加载-->
<view class="load-"more></view>
</scroll-view>
</swiper-item>
</swiper>
</view>
<!-- <block v-for="(item, index) in list" :key="index">
<index-list :item="item" :index="index"></index-list>
</block> -->
</view>
</template>
<script>
import indexList from "../../components/index/index-list.vue";
import swiperTabHead from "../../components/index/swiper-tab-head.vue";
export default {
components:{
indexList,
swiperTabHead
},
data() {
return {
swiperheight:1350,
tabIndex:0,
tabBars: [
{name: '关注',id: 'guanzhu'},
{name: '推荐1',id: 'tuijian'},
{name: '体育2',id: 'tiyu'},
{name: '推荐3',id: 'tuijian'},
{name: '体育4',id: 'tiyu'},
{name: '推荐5',id: 'tuijian'},
{name: '体育6',id: 'tiyu'},
{name: '热点',id: 'redian'}
],
newslist:[
{
loadtext:"上拉加载更多",
list:[
{
userpic:"../../static/demo/datapic/10.jpg",
username:"昵称",
isgaunzhu:true,
title:"这是一个",
type:"img", //img:图文 video:视频类型
titlepic:"../../static/demo/datapic/11.jpg", //封面图
infonum:{
index:1 ,//0未订 1顶 2踩
dingnum:11,
cainum:12,
},
commentnum:10,//评论
sharenum:10, //分享
},
{
userpic:"../../static/demo/datapic/10.jpg",
username:"昵称",
isgaunzhu:true,
title:"这是一个",
type:"img", //img:图文 video:视频类型
titlepic:"../../static/demo/datapic/11.jpg", //封面图
infonum:{
index:1 ,//0未订 1顶 2踩
dingnum:11,
cainum:12,
},
commentnum:10,//评论
sharenum:10, //分享
},
{
userpic:"../../static/demo/datapic/10.jpg",
username:"昵称",
isgaunzhu:true,
title:"这是一个",
type:"img", //img:图文 video:视频类型
titlepic:"../../static/demo/datapic/11.jpg", //封面图
infonum:{
index:1 ,//0未订 1顶 2踩
dingnum:11,
cainum:12,
},
commentnum:10,//评论
sharenum:10, //分享
},
],
},
{
loadtext:"上拉加载更多",
list:[
{
userpic:"../../static/demo/datapic/10.jpg",
username:"昵称",
isgaunzhu:true,
title:"这是一个",
type:"img", //img:图文 video:视频类型
titlepic:"../../static/demo/datapic/11.jpg", //封面图
infonum:{
index:1 ,//0未订 1顶 2踩
dingnum:11,
cainum:12,
},
commentnum:10,//评论
sharenum:10, //分享
},
{
userpic:"../../static/demo/datapic/10.jpg",
username:"昵称",
isgaunzhu:true,
title:"这是一个",
type:"img", //img:图文 video:视频类型
titlepic:"../../static/demo/datapic/11.jpg", //封面图
infonum:{
index:1 ,//0未订 1顶 2踩
dingnum:11,
cainum:12,
},
commentnum:10,//评论
sharenum:10, //分享
},
{
userpic:"../../static/demo/datapic/10.jpg",
username:"昵称",
isgaunzhu:true,
title:"这是一个",
type:"img", //img:图文 video:视频类型
titlepic:"../../static/demo/datapic/11.jpg", //封面图
infonum:{
index:1 ,//0未订 1顶 2踩
dingnum:11,
cainum:12,
},
commentnum:10,//评论
sharenum:10, //分享
},
],
},
{
list:[
{
userpic:"../../static/demo/datapic/10.jpg",
username:"昵称",
isgaunzhu:true,
title:"这是一个",
type:"img", //img:图文 video:视频类型
titlepic:"../../static/demo/datapic/11.jpg", //封面图
infonum:{
index:1 ,//0未订 1顶 2踩
dingnum:11,
cainum:12,
},
commentnum:10,//评论
sharenum:10, //分享
},
{
userpic:"../../static/demo/datapic/10.jpg",
username:"昵称",
isgaunzhu:true,
title:"这是一个",
type:"img", //img:图文 video:视频类型
titlepic:"../../static/demo/datapic/11.jpg", //封面图
infonum:{
index:1 ,//0未订 1顶 2踩
dingnum:11,
cainum:12,
},
commentnum:10,//评论
sharenum:10, //分享
},
{
userpic:"../../static/demo/datapic/10.jpg",
username:"昵称",
isgaunzhu:true,
title:"这是一个",
type:"img", //img:图文 video:视频类型
titlepic:"../../static/demo/datapic/11.jpg", //封面图
infonum:{
index:1 ,//0未订 1顶 2踩
dingnum:11,
cainum:12,
},
commentnum:10,//评论
sharenum:10, //分享
},
],
}
],
list:[
//图片样式
{
userpic:"../../static/demo/datapic/10.jpg",
username:"昵称",
isgaunzhu:true,
title:"这是一个标题",
type:"img", //img:图文 video:视频类型
titlepic:"../../static/demo/datapic/11.jpg", //封面图
infonum:{
index:1 ,//0未订 1顶 2踩
dingnum:11,
cainum:12,
},
commentnum:10,//评论
sharenum:10, //分享
},
//视频样式
{
userpic:"../../static/demo/datapic/10.jpg",
username:"昵称",
isgaunzhu:true,
title:"这是一个标题",
type:"video", //img:图文 video:视频类型
titlepic:"../../static/demo/datapic/11.jpg", //封面图
playnum:200000,
long:"2:47",
infonum:{
index:0 , //0未顶 1顶 2踩
dingnum:11,
cainum:12,
},
commentnum:10, //评论
sharenum:10, //分享
}
]
}
},
onLoad(){
uni.getSystemInfo({
success:(res)=>{
let height=res.windowHeight-rpx(100);
console.log(height);
console.log(res.screenHeight);
this.swiperheight=height;
}
})
},
methods: {
//点击事件
tabtap(index){
this.tabIndex=index
},
//滑动事件
tabChange(e){
this.tabIndex=e.detail.current;
}
}
}
</script>
<style>
.uni-swiper-tab{
border-bottom:2rpx solid #EEEEEE ;
}
.swiper-tab-list{
font-weight: bold;
}
.uni-tab-bar {
color: #343434;
}
.active .swiper-tab-line {
border-bottom: 8rpx solid #fede33;
width: 70rpx;
margin: auto; /* 居中 */
border-radius: 20rpx;
}
</style>
组件:swiper-tab-head.vue
<template>
<view class="uni-tab-bar">
<scroll-view scroll-x class="uni-swiper-tab" >
<block v-for="(tab,index) in tabBars" :key="tab.id">
<view class="swiper-tab-list" :class="{'active':tabIndex==index}" @tap="tabtap(index)">
{{tab.name}}
<view class="swiper-tab-line"></view>
</view>
</block>
</scroll-view>
</view>
</template>
<script>
export default {
//传入数据
props:{
tabBars:Array,
tabIndex:Number,
},
methods:{
//点击事件 子组件传到父组件
tabtap(index){
/* this.tabIndex=index; */
this.$emit('tabtap',index);
},
}
}
</script>
<style>
/* 样式已经导入组件 */
/* .uni-swiper-tab{
border-bottom:2rpx solid #EEEEEE ;
}
.swiper-tab-list{
font-weight: bold;
}
.uni-tab-bar {
color: #343434;
}
.active .swiper-tab-line {
border-bottom: 8rpx solid #fede33;
width: 70rpx;
margin: auto; /* 居中 */
/* border-radius: 20rpx; */
/* } */
/* */
</style>
未解决上下滑动高度问题