05_index.vue中添加图文列表模块并封装

1. 效果图

2. 子组件uni代码

 代码:

<template>
    <!-- 最大view包裹 -->
    <view class="index-list">
        <view class="index-list1 u-f-ac u-f-jsb">    <!-- 第一行 -->
            <view class="u-f-ac">                            <!-- 左边 头像 -->
                <image :src="item.userpic"
                mode="widthFix"
                lazy-load></image>
                {{item.username}}                              <!-- 左边 昵称 -->
            </view>
            <view class="u-f-ac" v-show="item.isguanzhu">                 <!-- 右边 决定是否显示 -->
                <view class="icon iconfont icon-zengjia"></view>关注    <!-- 右边 关注图标和文字 -->
            </view>
        </view>
        <view class="index-list2">{{item.title}}</view>   <!-- 第二行,标题行,一行 -->
        <view class="index-list3 u-f-ajc">                     <!-- 第三行 -->
            <!-- 图片 默认显示 -->
            <image :src="item.titlepic"
            mode="widthFix"
            lazy-load></image>
            <!-- 视频 浮动在图片上 -->
            <template v-if="item.type=='video'">
                <view class="icon iconfont icon-bofang index-list-play"></view>
                <view class="index-list-playinfo">
                    {{item.playnum}}次播放 {{item.long}}
                </view>
            </template>
        </view>
        <view class="index-list4 u-f-ac u-f-jsb">         <!-- 第四行 -->
            <view class="u-f-ac">                         <!-- 左边 -->
                <view class="u-f-ac" :class="{'active':(item.infonum.index==1)}">
                    <view class="icon iconfont icon-icon_xiaolian-mian"></view>
                    {{item.infonum.dingnum}}
                </view>
                <view class="u-f-ac" :class="{'active':(item.infonum.index==2)}">
                    <view class="icon iconfont icon-kulian"></view>
                    {{item.infonum.cainum}}
                </view>
            </view>
            <view class="u-f-ac">                         <!-- 右边 -->
                <view class="u-f-ac">
                    <view class="icon iconfont icon-pinglun1"></view>
                    {{item.commentnum}}
                </view>
                <view class="u-f-ac">
                    <view class="icon iconfont icon-zhuanfa"></view>
                    {{item.sharenum}}
                </view>
            </view>
        </view>
    </view>
</template>

3. 子组件js代码

<script>
    export default {
        props:{
            item:Object,      // 父组件: <block v-for="(item,index) in list" :key="index" ...
            index:Number
        }
    }
</script>

4. 子组件css样式

<style scoped>
.index-list{
    padding: 20upx;
    border-bottom: 1upx solid #EEEEEE;
}
.index-list1>view:first-child{
    color: #999999;
}
.index-list1>view:first-child image{
    width: 85upx;
    height: 85upx;
    border-radius: 100%;
    margin-right: 10upx;
}
.index-list1>view:last-child{
    background: #F4F4F4;
    border-radius:5upx;
    padding: 0 10upx;
}
.index-list2{
    padding-top: 15upx;
    font-size: 32upx;
}
.index-list3{
    position: relative;
    padding-top: 15upx;
}
.index-list3>image{
    width: 100%;
    border-radius: 20upx;
}
.index-list4 view{
    color: #999999;
}
.index-list4{
    padding: 15upx 0;
}
.index-list4>view>view>view,.index-list4>view>view:first-child{
    margin-right: 10upx;
}
.index-list-play{
    position: absolute;
    font-size: 140upx;
    color: #FFFFFF;
}
.index-list-playinfo{
    position: absolute;
    background: rgba(51, 51, 51, 0.72);
    color: #FFFFFF;
    bottom: 8upx;
    right: 8upx;
    border-radius: 40upx;
    font-size: 22upx;
    padding: 0 12upx;
}
.index-list4 .active,.index-list4 .active>view{
    color: #C5F61C;
}
</style>

5. 父组件引入

 代码:

<template>
    <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";
    export default {
        components: {
            indexList
        },
        data() {
            return {
                list:[
                    {
                        userpic:"../../static/demo/userpic/12.jpg",
                        username:"昵称",
                        isguanzhu:true,
                        title:"我是标题",
                        type:"video", // img:图文,video:视频
                        titlepic:"../../static/demo/datapic/11.jpg",
                        playnum:"20w",
                        long:"2:47",
                        infonum:{
                            index:1,//0:没有操作,1:顶,2:踩;
                            dingnum:11,
                            cainum:11,
                        },
                        commentnum:10,
                        sharenum:10,
                    },
                    {
                        userpic:"../../static/demo/userpic/12.jpg",
                        username:"昵称",
                        isguanzhu:false,
                        title:"我是标题",
                        type:"img", // img:图文,video:视频
                        titlepic:"../../static/demo/datapic/11.jpg",
                        infonum:{
                            index:0,//0:没有操作,1:顶,2:踩;
                            dingnum:11,
                            cainum:11,
                        },
                        commentnum:10,
                        sharenum:10,
                    },
                ]
            }
        },
        onLoad() {

        },
        methods: {

        }
    }
</script>

猜你喜欢

转载自www.cnblogs.com/luwei0915/p/12549553.html
今日推荐