zoukankan      html  css  js  c++  java
  • 6.页面绘制-帖子列表页和前端路由

    1.新建帖子列表页tiezi

    1.新建帖子列表页面

    在pages/shequ目录下新建页面tiezi。然后在pages.json中将tiezi配置为首页,方便观察调试。

     2.新建css文件

    在pages/shequ/tiezi目录下新建css文件tiezi.css

    在pages/shequ/tiezi/tiezi.vue中引用:

    tiezi.vue:

    <style>
        @import url("tiezi.css");
    </style>

    这样可以方便调试css样式。

     3.主题详情

    tiezi.vue:

    <template>
        <view>
            <view class="zhuti">
                <view class="left">
                    <image class="touxiang" src="@/static/touxiang.png" mode=""></image>
                </view>
                <view class="right">
                    <view class="username padding">
                        <view class="u1">孤天里的鹤</view>
                        <view class="u1 text-gray">举报</view>
                    </view>
                    <view class="content ">
                        <view class="content-text ">
                            我要爆料我要爆料
                            我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料
                            我要爆料我要爆料
                        </view>
                        <view class="content-img">
                            <image src="@/static/banner1.png" mode=""></image>
                            <image src="@/static/banner2.png" mode=""></image>
                            <image src="@/static/banner3.png" mode=""></image>
                            <image src="@/static/banner4.png" mode=""></image>
                        </view>
                        
                    </view>
                    <view class="text-gray text-sm text-right padding">
                        
                        <text class="cuIcon-attentionfill margin-lr-xs"></text> 1分钟前
                        <text class="cuIcon-attentionfill margin-lr-xs"></text> 1111
                        <text class="cuIcon-messagefill margin-lr-xs"></text> 22222
                    </view>
                </view>
            </view>
            
            <u-line class="u-line" color="gray" border-style="dashed"></u-line>
            
            
            
    
            
            
            
            
        </view>
    </template>
    
    <script>
        
        export default {
            data() {
                return {
                    
                }
            },
            methods: {
                
            }
            
        }
    </script>
    
    <style>
        @import url("tiezi.css");
    </style>

    tiezi.css:

        .zhuti{
            width: 100%;
            min-height: 200upx;
            /* background-color: #19BE6B; */
            display: flex;
        }
        .left{
            width: 100upx;
            /* background-color: #007AFF; */
            text-align: center;
        }
        .touxiang{
            width: 70upx;
            height: 70upx;
            margin-top: 25upx;
        }
        .right{
            width: 650upx;
            /* background-color: #2C405A; */
            display: flex;
            flex-direction: column;
            justify-content: space-between;
        }
        .username{
            display: flex;
            justify-content: space-between;
        }
            
        .content-img{
            display: flex;
            flex-wrap: wrap;
            
        }
        .content-img image{
            width: 300upx;
            height: 300upx;
            margin: 10upx;
        }

    效果图:

     4.帖子列表排列方式的切换

    使用uVIew组件中的Dropdown下拉菜单组件

    在tiezi.vue中:

    <template>
        <view>
    <u-dropdown>
                <u-dropdown-item v-model="value1" title="排列" :options="options1" @change="change"></u-dropdown-item>
            </u-dropdown>
    </view>
    </template>
    
    <script>
        
        export default {
            data() {
                return {
                    
                    value1:1,
                    options1: [{label: '按热度',value: 1,},{label: '按时间',value: 2,}]
                    
                }
            },
            methods: {
                
                change(){
                    console.log(this.value1)
                }
            }
            
        }
    </script>

    5.回复列表

    tiezi.vue中:

    <template>
        <view>
            
            <view class="zhuti huifu shadow-warp bg-white" v-for="(item,index) in huifu" :key="index">
                <view class="left">
                    <image class="touxiang" src="@/static/touxiang.png" mode=""></image>
                </view>
                <view class="right">
                    <view class="username padding">
                        <view class="u1">孤天里的鹤</view>
                        <view class="u1 text-gray">举报</view>
                    </view>
                    <view class="content ">
                        <view class="text-gray text-sm padding">
                            <span class="text-blue">用户1:</span>
                            我要回复我要回复
                            我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料
                            我要爆料我要爆料
                        </view>
                        <view class="content-text ">
                            我要回复我要爆料
                            我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料
                            我要爆料我要爆料
                        </view>
                        <view class="content-text padding-lr" v-if="huifu_tie">
                            <view class="cu-form-group" style="border: #808080 1px dashed;">
                                <textarea maxlength="-1" spellcheck="false" @input="textareaAInput" placeholder="多行文本输入框"></textarea>
                            </view>
                            <view class="text-right padding-top padding-lr">
                                <button @click="huifu1" class="cu-btn round bg-blue shadow sm ">发布</button>
                            </view>
                        </view>
                    </view>
                    <view class="text-gray text-sm text-right padding huitie_foot">
                        <view class="margin-lr"><text class="cuIcon-attentionfill margin-lr-xs"></text> 1分钟前</view>
                        <view class="margin-lr" @click="htz"><text class="cuIcon-attentionfill margin-lr-xs"></text> 回复</view>
                        <view class="margin-lr"><text class="cuIcon-appreciate margin-lr-xs"></text> 22</view>
                    </view>
                </view>
            </view>
            
        
        </view>
    </template>
    
    <script>
        
        export default {
            data() {
                return {
                    huifu:['回复1','回复2','回复3','回复4'],
                    huifu_tie:false,
                    textareaAValue: '',
                    
                    
                }
            },
            methods: {
                textareaAInput(e) {
                    this.textareaAValue = e.detail.value
                },
                htz(e){
                    this.huifu_tie=true
                    console.log(1111)
                },
                huifu1(e){
                    console.log('回复帖子')
                    this.huifu_tie=false
                }
                
            }
            
        }
    </script>
    
    <style>
        @import url("tiezi.css");
    </style>

    tiezi.css中:

        .zhuti{
            width: 100%;
            min-height: 200upx;
            /* background-color: #19BE6B; */
            display: flex;
        }
        .left{
            width: 100upx;
            /* background-color: #007AFF; */
            text-align: center;
        }
        .touxiang{
            width: 70upx;
            height: 70upx;
            margin-top: 25upx;
        }
        .right{
            width: 650upx;
            /* background-color: #2C405A; */
            display: flex;
            flex-direction: column;
            justify-content: space-between;
        }
        .username{
            display: flex;
            justify-content: space-between;
        }
            
        .content-img{
            display: flex;
            flex-wrap: wrap;
            
        }
        .content-img image{
            width: 300upx;
            height: 300upx;
            margin: 10upx;
        }
        
        .huifu{
            margin-bottom: 20upx;
        }
        .huitie_foot{
            display: flex;
            flex-direction: row-reverse;
        }

    6.回复组件

    用到了uni-app的官方ui组件中的分页组件+多行输入框

    tiezi.vue中:

    <template>
        <view>
    
            <uni-pagination show-icon="true" total="63" current="1" pageSize="10" @change="change1"></uni-pagination>
            
            <u-gap height="80"></u-gap>    
            
            <view class="content-text padding-lr">
                <view class="cu-form-group" style="border: #808080 1px dashed;">
                    <textarea maxlength="-1" spellcheck="false" @input="textareaAInput" placeholder="回复内容"></textarea>
                </view>
                <view class="text-right padding-top padding-lr">
                    <button @click="huifu1" class="cu-btn bg-blue shadow">发布</button>
                </view>
            </view>
            
            <u-gap height="80"></u-gap>    
            
    
        
        </view>
    </template>
    
    <script>
        
        export default {
            data() {
                return {
                    huifu:['回复1','回复2','回复3','回复4'],
                    huifu_tie:false,
                    textareaAValue: '',
                    value1:1,
                    options1: [{label: '按热度',value: 1,},{label: '按时间',value: 2,}]
                    
                }
            },
            methods: {
                textareaAInput(e) {
                    this.textareaAValue = e.detail.value
                },
                
                change1(e) {
                    console.log(e)
                    this.current = e.current
                }
                
            }
            
        }
    </script>
    
    <style>
        @import url("tiezi.css");
    </style>

    效果图:

    2.前端路由

    在pages.json中让首页配置为首页。

    在pages/shequ/shequ.vue中添加路由相关代码:

    <template>
        <view class="content">
            
            <view class="card" v-for="(item,index) in shequ_data" :key=index @click="GoToZhuTiList(item)">    
    ……………………
        
        </view>
    </template>
    <script>
        export default {
            data() {
                return {
            },
            methods: {
                GoToZhuTiList(e){
                    console.log(e.title)
                    uni.navigateTo({
                          url:"./zhuti_list/zhuti_list?bankuai_title="+e.title
                  })
                }
                
            }
        }
    </script>

    在pages/shequ/zhuti_list/zhuti_list.vue中添加路由相关代码:

    <template>
        <view>
            <view v-for="(item,index) in zhuti_data" :key="index" @click="GoToTieZi(item)" class="cu-item radius padding-lr-lg shadow-warp bg-white margin-top">
                ………………
    ……    
                
        </view>
    </template>
    
    <script>
        export default {
            data() {
                return {
            },
            methods: {
                
                GoToTieZi(e){
                        // console.log(e.title)
                        uni.navigateTo({url:"../tiezi/tiezi?bankuai_title="+this.bankuai_title})
                }
            },
            onLoad(e) {
                console.log(e)
                this.bankuai_title=e.bankuai_title
                uni.setNavigationBarTitle({
                    title: e.bankuai_title
                });
            }
        }
    </script>

    在pages/shequ/tiezi/tiezi.vue内添加路由相关代码:

    <script>
        
        export default {
            data() {
                return {
            },
            methods: {
                
            },
            onLoad(e) {
                console.log(e)
                
                uni.setNavigationBarTitle({
                    title: e.bankuai_title
                });
            }
            
        }
    </script>
  • 相关阅读:
    进程之管道Pipe,数据共享Manager,进程池Poo
    进程之锁,信息量,事件,队列,生产者消费者模型,joinablequeue
    网络编程之sock server,自定义一个与sock server类相似的功能,支持多客户端通信
    网络编程之粘包解决方案
    进程之进程创建的两种方式,两种传值的方式,验证进程间数据隔离,join,守护进程,僵尸进程,孤儿进程
    毕业设计开题报告任务书参考文献格式和数量要求
    剑指offer-替换空格
    剑指offer-二维数组中的查找
    用forward和sendRedirect转发时的区别
    ServletContext实现显示用户在线人数
  • 原文地址:https://www.cnblogs.com/xuepangzi/p/14968142.html
Copyright © 2011-2022 走看看