從微信小程序到鴻蒙js開發【04】——list組件

目錄:css

一、可滾動區域json

二、list + list-item小程序

三、list + list-item-group + list-item微信小程序

一、可滾動區域api

在許多場景中,頁面會有一塊區域是可滾動的,好比這樣一個簡單的每日新聞模塊:微信

從微信小程序到鴻蒙js開發【04】——list組件從微信小程序到鴻蒙js開發【04】——list組件

上面的新聞類型是一塊可橫向滾動的區域,下方新聞列表是一塊可豎向滾動的區域。在微信小程序中,使用scroll-view組件便可實現。那麼在鴻蒙js組件中,想要實現可滾動的區域,則是使用list組件。list僅支持豎向滾動,橫向滾動要用tabs,將在下篇博客講解。iview

二、list + list-item佈局

這裏以本地新聞模塊爲例,數據請求自天行數據接口(https://www.tianapi.com/apiview/154)。post

從微信小程序到鴻蒙js開發【04】——list組件

上方爲一個搜索框,下方是新聞列表。搜索框給了固定高度,那麼怎樣讓新聞列表可以佔滿屏幕剩餘部分呢?只需將父容器設置flex佈局,list設置flex: 1便可。list下直接放list-item,在總高度超出list的高度後,便可上下滾動。fetch

hml:

<!-- 本地新聞 -->
        <div>
            <div class="searchView">
                <image src="{{ searchIcon }}"></image>
                <input placeholder="搜你想看的"></input>
            </div>
            <list class="localView">
                <block for="{{ localNews }}">
                    <list-item class="newsItem">
                        <div class="newsContent">
                            <text>
                                {{ $item.title }}
                            </text>
                            <div class="newsDesc">
                                <text>
                                    {{ $item.source }}
                                </text>
                                <text>
                                    {{ $item.ctime }}
                                </text>
                            </div>
                        </div>
                    </list-item>
                </block>
            </list>
        </div>
        <!-- 本地新聞end -->

css:

/*本地新聞*/
.searchView {
    width: 100%;
    height: 140px;
    background-color: #f0f0f0;
    display: flex;
    align-items: center;
}
.searchView>image {
    margin: 0 40px 0 40px;
    height: 60px;
    width: 60px;
}
.searchView>input {
    margin-right: 40px;
}
.localView {
    width: 100%;
    flex: 1;
    display: flex;
    flex-direction: column;
}
.localContent {
    margin-left: 20px;
}
.newsItem {
    width: 100%;
    height: 240px;
    border-bottom: 1px solid #bbbbbb;
    display: flex;
    align-items: center;
}
.newsContent {
    display: flex;
    flex-direction: column;
    margin-right: 20px;
    margin-left: 20px;
}
.newsContent>text {
    margin-top: 20px;
    height: 140px;
    font-size: 34px;
    color: #333333;
}
.newsDesc {
    height: 60px;
    line-height: 60px;
    display: flex;
    justify-content: space-between;
}
.newsDesc>text {
    font-size: 28px;
    color: #777777;
}

js:

searchLocalNews() {
        let url = 'http://api.tianapi.com/areanews/index?key=xxxx&areaname=江蘇';
        if (this.searchWord) {
            url = url + '&word' + this.searchWord;
        }
        fetch.fetch({
            url: url,
            responseType: 'json',
            success: res => {
                let data = JSON.parse(res.data);
                this.localNews = data.newslist;
            }
        })
    },

新聞列表可滾動,且不會影響搜索框的位置。

從微信小程序到鴻蒙js開發【04】——list組件

三、list + list-item-group + list-item

list組件的子元素還能夠是list-item-group,顧名思義應是分組列表項,list-item做爲list-item-group的子元素。隨便寫一點看一看:

<div>
            <list class="manageList">
                <list-item-group class="list-item-group">
                    <list-item class="list-item">
                        <text>
                            <span>分組1 子項1</span>
                        </text>
                    </list-item>
                    <list-item class="list-item">
                        <text>
                            <span>分組1 子項2</span>
                        </text>
                    </list-item>
                    <list-item class="list-item">
                        <text>
                            <span>分組1 子項3</span>
                        </text>
                    </list-item>
                </list-item-group>
                <list-item-group class="list-item-group">
                    <list-item class="list-item">
                        <text>
                            <span>分組2 子項1</span>
                        </text>
                    </list-item>
                    <list-item class="list-item">
                        <text>
                            <span>分組2 子項2</span>
                        </text>
                    </list-item>
                    <list-item class="list-item">
                        <text>
                            <span>分組2 子項3</span>
                        </text>
                    </list-item>
                </list-item-group>
            </list>
        </div>
.manageList{
    height: 100%;
    width: 100%;
}
.list-item-group{
    width: 100%;
    height: 450px;
}
.list-item{
    width: 100%;
    height: 150px;
    display: flex;
    justify-content: center;
    align-items: center;
    border-bottom: 1px solid gray;
}
.list-item>text{
    line-height: 100px;
}

查看更多內容>>>
做者:Chris.
想了解更多內容,請訪問: 51CTO和華爲官方戰略合做共建的鴻蒙技術社區https://harmonyos.51cto.com

相關文章
相關標籤/搜索