> 文档中心 > HarmonyOS应用开发-list列表圆角的实现

HarmonyOS应用开发-list列表圆角的实现

以下为JS代码、xml和CSS代码,具体如下所示

JS代码:

import prompt from '@system.prompt';var timeoutID;const DURATION = 600;export default {    data: { topList: [{ title: 'title3_1', desc: 'description3_1', cls: 'todo_item_top', iconColor: '#99FF0000', txtColor: 'white', indexTxt: 'R'    }, { title: 'title3_2', desc: 'description3_2', cls: 'todo_item_mid', iconColor: '#99FF7D00', txtColor: 'white', indexTxt: 'T'    }, { title: 'title3_3', desc: 'description3_3', cls: 'todo_item_bottom', iconColor: '#99FF00FF', txtColor: 'white', indexTxt: 'Y'    } ], middleList: [{    title: 'title2_1',    desc: 'description2_1',    cls: 'todo_item_top',    iconColor: '#9900FF00',    txtColor: 'white',    indexTxt: 'U'}, {    title: 'title2_2',    desc: 'description2_2',    cls: 'todo_item_bottom',    iconColor: '#9900FFFF',    txtColor: 'white',    indexTxt: 'I'} ], bottomList: [{    title: 'title1_1',    desc: 'description1_1',    cls: 'todo_item_round',    iconColor: '#990000FF',    txtColor: 'white',    indexTxt: 'O'} ]    },    onTopListItemClick($idx) { console.info("id = " + $idx); let index = $idx; let size = this.topList.length; if (index == -1) {     for (let i = 0; i < size; i++) {  if (i == 0) {      this.topList[i].cls = "todo_item_top"  } else if (i == size - 1) {      this.topList[i].cls = "todo_item_bottom"  } else {      this.topList[i].cls = "todo_item_mid"  }     }     return; } this.onMiddleListItemClick(-1); this.onBottomListItemClick(-1); prompt.showToast({     message: this.topList[index].title }); for (let i = 0; i < size; i++) {     if (index == i) {  if (i == 0) {      this.topList[i].cls = "list_corner_round_top"  } else if (i == size - 1) {      this.topList[i].cls = "list_corner_round_bottom"  } else {      this.topList[i].cls = "list_corner_round_mid"  }  clearTimeout(timeoutID);  timeoutID = setTimeout(this.clearTopItemBg, DURATION);     } else {  if (i == 0) {      this.topList[i].cls = "todo_item_top"  } else if (i == size - 1) {      this.topList[i].cls = "todo_item_bottom"  } else {      this.topList[i].cls = "todo_item_mid"  }     } }    },    onMiddleListItemClick($idx) { console.info("id = " + $idx); let index = $idx; if (index == -1) {     for (let i = 0; i < 2; i++) {  if (i == 0) {      this.middleList[i].cls = "todo_item_top"  } else {      this.middleList[i].cls = "todo_item_bottom"  }     }     return; } this.onTopListItemClick(-1); this.onBottomListItemClick(-1) prompt.showToast({     message: this.middleList[index].title }); for (let i = 0; i < 2; i++) {     if (index == i) {  if (i == 0) {      this.middleList[i].cls = "list_corner_round_top"  } else {      this.middleList[i].cls = "list_corner_round_bottom"  }  clearTimeout(timeoutID);  timeoutID = setTimeout(this.clearMiddleItemBg, DURATION);     } else {  if (i == 0) {      this.middleList[i].cls = "todo_item_top"  } else {      this.middleList[i].cls = "todo_item_bottom"  }     } }    },    onBottomListItemClick($idx) { console.info("id = " + $idx); let index = $idx; if (index == -1) {     this.bottomList[0].cls = "todo_item_round"     return; } this.onTopListItemClick(-1); this.onMiddleListItemClick(-1); prompt.showToast({     message: this.bottomList[index].title }); for (let i = 0; i < 2; i++) {     this.bottomList[0].cls = "list_corner_round"     clearTimeout(timeoutID);     timeoutID = setTimeout(this.clearBottomItemBg, DURATION); }    },    clearTopItemBg() { this.onTopListItemClick(-1);    },    clearMiddleItemBg() { this.onMiddleListItemClick(-1);    },    clearBottomItemBg() { this.onBottomListItemClick(-1);    }}

Hml代码:

{{ $item.indexTxt }}
{{ $item.title }} {{ $item.desc }}
{{ $item.indexTxt }}
{{ $item.title }} {{ $item.desc }}
{{ $item.indexTxt }}
{{ $item.title }} {{ $item.desc }}

CSS代码:

.container {    flex-direction: column;    align-items: center;    background-color: #5e7c85;    padding-top: 52px;}.topList_corner_round_bg {    width: 100%;    height: 240px;    border: 1px solid #000000;    text-align: center;    margin-left: 10px;    margin-right: 10px;    border-radius: 8px;    divider-color: #000000;    divider-height: 1px;}.middleList_corner_round_bg {    width: 100%;    height: 160px;    border: 1px solid #000000;    text-align: center;    margin-top: 10px;    margin-left: 10px;    margin-right: 10px;    border-radius: 8px;    divider-color: #000000;    divider-height: 1px;}.bottomList_corner_round_bg {    width: 100%;    height: 80px;    border: 1px solid #000000;    text-align: center;    margin-top: 10px;    margin-left: 10px;    margin-right: 10px;    border-radius: 8px;    divider-color: #000000;    divider-height: 1px;}/**选中背景*/.list_corner_round_top {    width: 100%;    height: 80px;    border: 1px solid #000000;    border-top-left-radius: 7px;    border-top-right-radius: 7px;    background: linear-gradient(270deg, #BFEEFF, #40B9FF);}.list_corner_round_mid {    width: 100%;    height: 80px;    border: 1px solid #000000;    background: linear-gradient(270deg, #BFEEFF, #40B9FF);}.list_corner_round_bottom {    width: 100%;    height: 78px;    border: 1px solid #000000;    border-bottom-left-radius: 7px;    border-bottom-right-radius: 7px;    background: linear-gradient(270deg, #BFEEFF, #40B9FF);}.list_corner_round {    width: 100%;    height: 78px;    border: 1px solid #000000;    border-radius: 7px;    background: linear-gradient(270deg, #BFEEFF, #40B9FF);}.todo_item_top {    width: 100%;    height: 80px;    border: 1px solid #000000;    border-top-left-radius: 7px;    border-top-right-radius: 7px;    background: linear-gradient(0deg, #FFFFFF, #FFFFFF);}.todo_item_mid {    width: 100%;    height: 80px;    border: 1px solid #000000;    background: linear-gradient(0deg, #FFFFFF, #FFFFFF);}.todo_item_bottom {    width: 100%;    height: 78px;    border: 1px solid #000000;    border-bottom-left-radius: 7px;    border-bottom-right-radius: 7px;    background: linear-gradient(0deg, #FFFFFF, #FFFFFF);}.todo_item_round {    width: 100%;    height: 78px;    border: 1px solid #000000;    border-radius: 7px;    background: linear-gradient(0deg, #FFFFFF, #FFFFFF);}.item_title {    font-size: 22px;    text-align: left;    margin-start: 10px;    font-weight: 600;}.item_desc {    font-size: 16px;    margin-top: 10px;    color: #77787b;    font-weight: 400;}.div_icon {    width: 50px;    height: 100%;    align-items: center;    justify-content: center;    margin-start: 10px;}.item_icon {    height: 50px;    width: 100%;    align-items: center;    border-radius: 35px;    background-color: orange;}.txt_title {    font-size: 22px;    font-weight: 600;}.div_right {    flex-direction: column;    justify-content: center;}.div_arrow {    height: 100%;    width: 100%;    margin-end: 10px;    justify-content: center;    align-items: center;}.item_arrow {    margin-start: 316;    height: 14px;    width: 14px;}

展示效果:

 

坏心知识社区