当前位置:网站首页>鸿蒙os第四次学习
鸿蒙os第四次学习
2022-07-05 20:19:00 【韬平】
目标界面:

一、搜索框的实现
在common文件夹下创建search文件夹(.hml,.css,.js)
.hml
<div class="search-container">
<div class="search-input">
<image class="search-input-image" src="/common/images/search.png"></image>
<text class="search-input-text">想吃什么搜这里,比如川菜</text>
</div>
</div>.css
.search-container {
padding: 10px 15px;
}
.search-input {
height: 40px;
width: 100%;
justify-content: center;
align-items: center;
border-radius: 6px;
border: 0.5px solid #ee742f;
}
.search-input-image {
width: 20px;
height: 20px;
}
.search-input-text {
font-size: 12px;
font-weight: 100;
}
.index-inner-bg {
background-color: #fff;
}
.cate-inner-bg {
background-color: #f2f2f2;
border-width: 0;
}
.index-outer-bg {
background-color: #f2f2f2;
}
.cate-outer-bg {
background-color: #fff;
}
二、顶层效果实现
.hml
<element name="cb-menu"src="./menu/menu"></element>
<element name='comp' src='../../../components/tabbar/tabbar.hml'></element>
<element name='cb-search' src="../../../common/components/search/search"></element>
<div class="cate-container">
<div class="cate-header">
<div class="cate-header-nav">
<div class="cate-header-nav-item" @click="handleSliderClick('category')">
<text class="item-text">
分类
</text>
</div>
<div class="cate-header-nav-item" @click="handleSliderClick('material')">
<text class="item-text">
食材
</text>
</div>
<div if="{
{type==='category'}}" class="cate-header-nav-slider">
<text class="slider-text">
分类
</text>
</div>
<div else class="cate-header-nav-slider move">
<text class="slider-text">
食材
</text>
</div>
</div>
</div>
<comp index="1"></comp>
<cb-search from="cate"></cb-search>
<cb-menu menu-data="{
{filteredMenuData}}" first-item="{
{type==='category'?'热门':'肉类'}}"></cb-menu>
</div>.css
.cate-container {
flex-direction: column;
}
.cate-header {
width: 100%;
height: 44px;
background-color: #ee742f;
justify-content: center;
align-items: center;
}
.cate-header-nav {
width: 140px;
height: 30px;
border-radius: 30px;
border: 0.5px solid #FFF;
position: relative;
z-index: 1;
}
.cate-header-nav-item {
flex: 1;
justify-content: center;
align-items: center;
height: 30px;
}
.item-text {
font-size: 12px;
color: #FFF;
}
.cate-header-nav-slider {
position: absolute;
left: 0;
border-radius: 30px;
width: 70px;
height: 30px;
background-color: #FFF;
z-index: 0;
justify-content: center;
align-items: center;
transition: left 200ms ease-in;
}
.slider-text {
font-size: 12px;
color: #ee742f;
}
.move {
left: 70px;
}
.js
// @ts-nocheck
import menuData from "../../../common/data/cookbook-category.json"
export default{
data:{
type:'category',
menuData:[],
},
handleSliderClick(type){
this.type = type
},
computed:{
filteredMenuData(){
return this.menuData[this.type]
}
},
onInit(){
this.menuData = menuData.data
}
}三、菜单功能的实现
在category下创建menu文件夹
.hml
<div class="menu-container">
<div class="menu-tab">
<div
class="menu-tab-item {
{$item === currenTab?'menu-tab-item-active':'menu-tab-item-normal'}}"
for="{
{tabs}}"
@click="handleTabClick($item)"
>
<text class="menu-tab-item-text">
{
{$item}}
</text>
</div>
</div>
<div class="menu-list">
<div class="menu-list-item" for="{
{lists}}">
<text class="menu-list-item-text">
<span>{
{$item}}</span>
</text>
</div>
</div>
</div>.css
.menu-container {
flex: 1;
border-top: 0.5px solid #CCC;
}
.menu-tab {
width: 100px;
background-color: #f3f3f3;
flex-direction: column;
}
.menu-tab-item {
height: 34px;
justify-content: center;
align-items: center;
width: 100px;
}
.menu-tab-item-text {
font-size: 12px;
font-weight: 100;
height: 100%;
/* align-content: stretch;*/
}
.menu-tab-item-normal {
background-color: #f3f3f3;
}
.menu-tab-item-text-normal {
/* font-size: 12px;*/
/* font-weight: 100;*/
/* height: 100%;*/
/* align-content: stretch;*/
color: #000;
border-bottom: 0;
}
.menu-tab-item-active {
background-color: #FFF;
}
.menu-tab-item-text-active {
font-size: 12px;
font-weight: 100;
height: 100%;
/* align-content: stretch;*/
/* color: #ee742f;*/
/* border-bottom: 2px solid #ee742f;*/
}
.menu-list {
flex: 1;
flex-wrap: wrap;
}
.menu-list-item {
width: 33.333333%;
height: 40px;
justify-content: center;
align-items: center;
}
.menu-list-item-text {
font-size: 12px;
font-weight: bold;
}
.js
export default{
props:['menuData','firstItem'],
data(){
return{
currentTab:this.firstItem
}
},
computed:{
tabs(){
return Object.keys(this.menuData)
},
lists(){
return this.menuData[this.currentTab]
}
},
handleTabClick(currentTab){
this.currentTab = currentTab
},
onReady() {
this.$watch('firstItem', (newValue) => {
this.currentTab = newValue
})
}
}边栏推荐
- document方法
- 【数字IC验证快速入门】8、数字IC中的典型电路及其对应的Verilog描述方法
- [quick start of Digital IC Verification] 3. Introduction to the whole process of Digital IC Design
- 点云文件的.dat文件读取保存
- mongodb/文档操作
- Informatics Olympiad 1340: [example 3-5] extended binary tree
- 怎么挑选好的外盘平台,安全正规的?
- C language OJ gets PE, OJ of ACM introduction~
- 基础篇——配置文件解析
- How to choose a good external disk platform, safe and formal?
猜你喜欢

全国爱眼教育大会,2022第四届北京国际青少年眼健康产业展会

.Net分布式事务及落地解决方案

leetcode刷题:二叉树14(左叶子之和)

走入并行的世界

leetcode刷题:二叉树13(相同的树)

无卷积骨干网络:金字塔Transformer,提升目标检测/分割等任务精度(附源代码)...

A way to calculate LNX

618 "low key" curtain call, how can baiqiushangmei join hands with the brand to cross the "uncertain era"?

leetcode刷题:二叉树11(平衡二叉树)

leetcode刷题:二叉树15(找树左下角的值)
随机推荐
MySql的root密码忘记该怎么找回
Solve the problem that the database configuration information under the ThinkPHP framework application directory is still connected by default after modification
2023年深圳市绿色低碳产业扶持计划申报指南
1: Citation;
【c语言】快速排序的三种实现以及优化细节
How to select the Block Editor? Impression notes verse, notation, flowus
微信小程序正则表达式提取链接
y57.第三章 Kubernetes从入门到精通 -- 业务镜像版本升级及回滚(三十)
鸿蒙系统控制LED的实现方法之经典
Leetcode(347)——前 K 个高频元素
19 mongoose modularization
leetcode刷题:二叉树12(二叉树的所有路径)
Leetcode brush question: binary tree 13 (the same tree)
2022北京眼睛健康用品展,护眼产品展,中国眼博会11月举办
CTF逆向基础
处理文件和目录名
c语言oj得pe,ACM入门之OJ~
leetcode刷题:二叉树15(找树左下角的值)
怎么挑选好的外盘平台,安全正规的?
Schema and model