0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙上實(shí)現(xiàn)簡(jiǎn)單的“每日新聞”

OpenHarmony技術(shù)社區(qū) ? 來(lái)源:OST開(kāi)源開(kāi)發(fā)者 ? 2022-12-26 09:58 ? 次閱讀

這是一篇講解如何實(shí)現(xiàn)基于鴻蒙 JS的簡(jiǎn)單的每日新聞。

可滾動(dòng)區(qū)域

在許多場(chǎng)景中,頁(yè)面會(huì)有一塊區(qū)域是可滾動(dòng)的,比如這樣一個(gè)簡(jiǎn)單的每日新聞模塊:

上面的新聞?lì)愋褪且粔K可橫向滾動(dòng)的區(qū)域,下方新聞列表是一塊可豎向滾動(dòng)的區(qū)域。

在鴻蒙 js 組件中,想要實(shí)現(xiàn)可滾動(dòng)的區(qū)域,則是使用 list 組件。list 僅支持豎向滾動(dòng),橫向滾動(dòng)要用 tabs。

list + list-item

這里以本地新聞模塊為例,數(shù)據(jù)請(qǐng)求自天行數(shù)據(jù)接口

https://www.tianapi.com/apiview/154

ab450290-8468-11ed-bfe3-dac502259ad0.png

上方為一個(gè)搜索框,下方是新聞列表。搜索框給了固定高度,那么怎樣讓新聞列表能夠占滿屏幕剩余部分呢?

只需將父容器設(shè)置 flex 布局,list 設(shè)置 flex:1 即可。list 下直接放 list-item,在總高度超出 list 的高度后,即可上下滾動(dòng)。

hml:

 
{{$item.title}} {{$item.source}} {{$item.ctime}}

css:

/*本地新聞*/
.searchView{
width:100%;
height:140px;
background-color:#f0f0f0;
display:flex;
align-items:center;
}
.searchView>image{
margin:040px040px;
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:1pxsolid#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(){
leturl='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=>{
letdata=JSON.parse(res.data);
this.localNews=data.newslist;
}
})
},
新聞列表可滾動(dòng),且不會(huì)影響搜索框的位置。

ab608286-8468-11ed-bfe3-dac502259ad0.png ?

list + list-item-group + list-item

list 組件的子元素還可以是 list-item-group,顧名思義應(yīng)是分組列表項(xiàng),list-item 作為 list-item-group 的子元素。

試用示例:

分組1子項(xiàng)1 分組1子項(xiàng)2 分組1子項(xiàng)3 分組2子項(xiàng)1 分組2子項(xiàng)2 分組2子項(xiàng)3
.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:1pxsolidgray;
}
.list-item>text{
line-height:100px;
}

ab7ccacc-8468-11ed-bfe3-dac502259ad0.png
ab91ab9a-8468-11ed-bfe3-dac502259ad0.png

可以看出,list-item-group 是可折疊的列表分組,且默認(rèn)是折疊的。 點(diǎn)擊右側(cè)小箭頭可展開(kāi)列表,如果 list-item-group 給了高度,則折疊和展開(kāi)后這一塊區(qū)域的高度不變。在折疊時(shí),展示第一個(gè) list-item 的內(nèi)容。 那么如果每一個(gè) list-item-group 中 list-item 數(shù)目不固定,在展開(kāi)后的布局就會(huì)很難看。 如下:

aba7bb9c-8468-11ed-bfe3-dac502259ad0.png

其實(shí)不定義 list-item-group 的高度即可,折疊高度為 list-item 的高度,展開(kāi)后高度自適應(yīng)增長(zhǎng),超出 list 高度可以滾動(dòng),功能還是很強(qiáng)大的。 更改 css 后的效果如下:

abc565d4-8468-11ed-bfe3-dac502259ad0.png
abdaeaf8-8468-11ed-bfe3-dac502259ad0.png

這種分組的列表,可以制作一個(gè)簡(jiǎn)單的后臺(tái)管理系統(tǒng)菜單界面。這里我將菜單數(shù)據(jù)文件、圖片文件放入 nginx 服務(wù)器的目錄中,再通過(guò)內(nèi)網(wǎng)穿透訪問(wèn)資源。 注意數(shù)據(jù)的格式,list-item-group 和 list-item 之間存在父級(jí)標(biāo)簽關(guān)系,故數(shù)據(jù)中也應(yīng)存在父級(jí)關(guān)系。 list-item-group 展示的內(nèi)容是其下第一個(gè) list-item,這里用一個(gè)兩重 for 循環(huán)實(shí)現(xiàn):

abebf8b6-8468-11ed-bfe3-dac502259ad0.png
ac15d316-8468-11ed-bfe3-dac502259ad0.png
manage.json:
{
"manageList":[
{
"name":"組織管理",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/org.png",
"subList":[
{
"name":"查詢組織",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/search.png"
},
{
"name":"添加組織",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/add.png"
},
{
"name":"刪除組織",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/delete.png"
}
]
},
{
"name":"人員管理",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/person.png",
"subList":[
{
"name":"查詢?nèi)藛T",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/search.png"
},
{
"name":"添加人員",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/add.png"
},
{
"name":"批量導(dǎo)入人員",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/add.png"
},
{
"name":"刪除人員",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/delete.png"
},
{
"name":"修改人員",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/update.png"
}
]
},
{
"name":"卡片管理",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/card.png",
"subList":[
{
"name":"開(kāi)卡",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/add.png"
},
{
"name":"退卡",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/delete.png"
}
]
}
]
}

hml:

 
{{$item.name}} {{value.name}}
js:
getManageList(){
leturl="http://milkytea.free.idcfengye.com/text/manage.json";
fetch.fetch({
url:url,
responseType:'json',
success:res=>{
letdata=JSON.parse(res.data);
this.manageList=data.manageList;
}
})
}

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:鴻蒙上實(shí)現(xiàn)簡(jiǎn)單的“每日新聞”

文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙上線后手機(jī)端 HarmonyOS與Android是否并存?

    鴻蒙系統(tǒng)正式發(fā)布后,華為手機(jī)現(xiàn)有Android系統(tǒng)是否會(huì)與HarmonyOS并存?有沒(méi)有大神公示下是如何升級(jí)轉(zhuǎn)換的?不會(huì)簡(jiǎn)單到像android一樣下個(gè)更新包,重啟完就變鴻蒙了吧?原android的用戶數(shù)據(jù)怎么過(guò)度到
    發(fā)表于 02-23 10:04

    鴻蒙軟總線的簡(jiǎn)單使用

    鴻蒙軟總線的簡(jiǎn)單使用-HiHope社區(qū)官方號(hào)-電子發(fā)燒友網(wǎng) (elecfans.com)
    發(fā)表于 08-18 11:02

    如何實(shí)現(xiàn)HarmonyOS Java端的氣泡聊天框?

      HarmonyOSJava端的氣泡聊天框怎么實(shí)現(xiàn)?android上有9圖可實(shí)現(xiàn)?鴻蒙上有什么類似的方案沒(méi)?
    發(fā)表于 06-13 09:59

    請(qǐng)問(wèn)鴻蒙hap包是否支持插件化開(kāi)發(fā)?

    如題,安卓上可以使用dexclassloader機(jī)制動(dòng)態(tài)加載其他apk作為插件使用,鴻蒙上用類似的能力嗎?有什么解決方案呢?
    發(fā)表于 06-16 11:34

    鴻蒙上能安裝docker嗎?

    android是不支持安裝docker的,想了解下鴻蒙是否支持安裝docker
    發(fā)表于 03-21 16:32

    聊聊鴻蒙上線以后面臨的競(jìng)爭(zhēng)對(duì)手

    鴻蒙”上線時(shí)間晚;也有人未卜先知說(shuō)不如安卓、OS好;當(dāng)然也少不了毫無(wú)緣由地冷嘲熱諷。 對(duì)于一個(gè)還沒(méi)有面世的系統(tǒng),最可怕的不是要面臨多少競(jìng)爭(zhēng)對(duì)手,而是在沒(méi)有得到體驗(yàn)就有了先入為主的否定。 吐槽完了,咱們簡(jiǎn)單聊一下鴻蒙正式上
    的頭像 發(fā)表于 02-26 09:57 ?1319次閱讀

    華為鴻蒙發(fā)布會(huì):簡(jiǎn)單的控制,不簡(jiǎn)單的體驗(yàn)

    華為鴻蒙如何做到讓消費(fèi)者像使用一臺(tái)設(shè)備一樣簡(jiǎn)單?
    的頭像 發(fā)表于 06-02 21:03 ?3129次閱讀

    鴻蒙上使用Python進(jìn)行物聯(lián)網(wǎng)編程

    炫耀!然而,這卻是非常重要的一步:在鴻蒙上用使用 Python 進(jìn)行物聯(lián)網(wǎng)編程是可行的!??! 既然可行,加上 Python 語(yǔ)言天生的優(yōu)勢(shì)(易于掌握,開(kāi)發(fā)效率高),那么真的值得持續(xù)打造,將鴻蒙上的 Python 進(jìn)行到底。 所以,今天的主題就是利用 GPIO 搭配 I2C
    的頭像 發(fā)表于 09-28 09:55 ?4188次閱讀
    在<b class='flag-5'>鴻蒙上</b>使用Python進(jìn)行物聯(lián)網(wǎng)編程

    鴻蒙上安裝按鈕實(shí)現(xiàn)下載、暫停、取消、顯示等操作

    今天給大家分享在鴻蒙上一個(gè)按鈕實(shí)現(xiàn)下載、暫停、取消、顯示下載進(jìn)度操作。
    的頭像 發(fā)表于 01-04 14:32 ?2193次閱讀

    用于每日新聞、天氣等的電子墨水顯示屏

    電子發(fā)燒友網(wǎng)站提供《用于每日新聞、天氣等的電子墨水顯示屏.zip》資料免費(fèi)下載
    發(fā)表于 12-22 15:53 ?1次下載
    用于<b class='flag-5'>每日新</b>聞、天氣等的電子墨水顯示屏

    鴻蒙上實(shí)現(xiàn)“數(shù)字華容道”小游戲

    本篇文章教大家如何在鴻蒙上實(shí)現(xiàn)“數(shù)字華容道”小游戲。
    的頭像 發(fā)表于 12-26 09:52 ?1149次閱讀

    鴻蒙上實(shí)現(xiàn)多人聊天功能

    本樣例是基于即時(shí)通訊(簡(jiǎn)稱 IM)服務(wù)實(shí)現(xiàn)的 OpenHarmony 應(yīng)用。
    的頭像 發(fā)表于 01-09 10:03 ?1305次閱讀

    鴻蒙上點(diǎn)亮LED燈

    上一篇我們成功的在鴻蒙開(kāi)發(fā)板上輸出了 Hello World!這一篇將帶大家點(diǎn)亮 LED 燈。
    的頭像 發(fā)表于 01-16 10:28 ?1977次閱讀

    鴻蒙上開(kāi)發(fā)“小蜜蜂”游戲

    小時(shí)候我們有個(gè)熟悉的游戲叫小蜜蜂。本文教大家在鴻蒙上學(xué)做這個(gè)小蜜蜂游戲。
    的頭像 發(fā)表于 04-03 11:27 ?1574次閱讀

    鴻蒙OS開(kāi)發(fā)實(shí)例:【HarmonyHttpClient】網(wǎng)絡(luò)框架

    鴻蒙上使用的Http網(wǎng)絡(luò)框架,里面包含純Java實(shí)現(xiàn)的HttpNet,類似okhttp使用,支持同步和異步兩種請(qǐng)求方式;還有鴻蒙版retrofit,和Android版Retrofit相似的使用,解放雙手般優(yōu)雅使用注解、自動(dòng)解析j
    的頭像 發(fā)表于 04-12 16:58 ?766次閱讀
    <b class='flag-5'>鴻蒙</b>OS開(kāi)發(fā)實(shí)例:【HarmonyHttpClient】網(wǎng)絡(luò)框架