mirror of
https://github.com/PlayEdu/h5.git
synced 2025-07-22 06:09:40 +08:00
底部tabBar组件
This commit is contained in:
parent
b9009f6f9e
commit
f93467db13
BIN
src/assets/images/commen/empty.png
Normal file
BIN
src/assets/images/commen/empty.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
10
src/components/bar-footer/index.module.scss
Normal file
10
src/components/bar-footer/index.module.scss
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
.footer {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
height: 55px;
|
||||||
|
box-shadow: 0px -1px 4px 0px rgba(0, 0, 0, 0.04);
|
||||||
|
background: #ffffff;
|
||||||
|
z-index: 100;
|
||||||
|
}
|
71
src/components/bar-footer/index.tsx
Normal file
71
src/components/bar-footer/index.tsx
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
import React, { useState } from "react";
|
||||||
|
import { NavBar, Badge, TabBar } from "antd-mobile";
|
||||||
|
import styles from "./index.module.scss";
|
||||||
|
import { Link, useNavigate, useLocation } from "react-router-dom";
|
||||||
|
|
||||||
|
export const TabBarFooter: React.FC = () => {
|
||||||
|
const navigate = useNavigate();
|
||||||
|
const location = useLocation();
|
||||||
|
const { pathname } = location;
|
||||||
|
|
||||||
|
const tabs = [
|
||||||
|
{
|
||||||
|
key: "/",
|
||||||
|
title: "首页",
|
||||||
|
icon: (active: boolean) =>
|
||||||
|
active ? (
|
||||||
|
<i
|
||||||
|
style={{ fontSize: 30, color: "#FF4D4F" }}
|
||||||
|
className="iconfont icon-icon-shouye"
|
||||||
|
></i>
|
||||||
|
) : (
|
||||||
|
<i
|
||||||
|
style={{ fontSize: 30, color: "#cccccc" }}
|
||||||
|
className="iconfont icon-waterprint"
|
||||||
|
></i>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "/study",
|
||||||
|
title: "学习",
|
||||||
|
icon: (active: boolean) =>
|
||||||
|
active ? (
|
||||||
|
<i
|
||||||
|
style={{ fontSize: 30, color: "#FF4D4F" }}
|
||||||
|
className="iconfont icon-icon-xuexi"
|
||||||
|
></i>
|
||||||
|
) : (
|
||||||
|
<i
|
||||||
|
style={{ fontSize: 30, color: "#cccccc" }}
|
||||||
|
className="iconfont icon-icon-xuexi"
|
||||||
|
></i>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "/member",
|
||||||
|
title: "我的",
|
||||||
|
icon: (active: boolean) =>
|
||||||
|
active ? (
|
||||||
|
<i
|
||||||
|
style={{ fontSize: 30, color: "#FF4D4F" }}
|
||||||
|
className="iconfont icon-icon-wode"
|
||||||
|
></i>
|
||||||
|
) : (
|
||||||
|
<i
|
||||||
|
style={{ fontSize: 30, color: "#cccccc" }}
|
||||||
|
className="iconfont icon-icon-wode"
|
||||||
|
></i>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className={styles["footer"]}>
|
||||||
|
<TabBar activeKey={pathname} onChange={(value) => navigate(value)}>
|
||||||
|
{tabs.map((item) => (
|
||||||
|
<TabBar.Item key={item.key} icon={item.icon} title={item.title} />
|
||||||
|
))}
|
||||||
|
</TabBar>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
9
src/components/footer/index.module.scss
Normal file
9
src/components/footer/index.module.scss
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
.footer-box {
|
||||||
|
width: 100%;
|
||||||
|
height: 12px;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: rgba(0, 0, 0, 0.3);
|
||||||
|
line-height: 12px;
|
||||||
|
margin: 30px 0px;
|
||||||
|
}
|
11
src/components/footer/index.tsx
Normal file
11
src/components/footer/index.tsx
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import React from "react";
|
||||||
|
import styles from "./index.module.scss";
|
||||||
|
import { useSelector } from "react-redux";
|
||||||
|
|
||||||
|
export const Footer: React.FC = () => {
|
||||||
|
const systemConfig = useSelector((state: any) => state.systemConfig.value);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className={styles["footer-box"]}>{systemConfig.pcIndexFooterMsg}</div>
|
||||||
|
);
|
||||||
|
};
|
@ -1 +1,3 @@
|
|||||||
export * from "./empty"
|
export * from "./empty";
|
||||||
|
export * from "./footer";
|
||||||
|
export * from "./bar-footer";
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
|
@import "./assets/iconfont/iconfont.css";
|
||||||
|
|
||||||
body {
|
body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
code {
|
code {
|
||||||
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
|
font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
|
||||||
monospace;
|
monospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--adm-color-primary: #FF4D4F;
|
--adm-color-primary: #ff4d4f !important;
|
||||||
--adm-color-success: #00b578;
|
--adm-color-success: #00b578;
|
||||||
--adm-color-warning: #ff8f1f;
|
--adm-color-warning: #ff8f1f;
|
||||||
--adm-color-danger: #ff3141;
|
--adm-color-danger: #ff3141;
|
||||||
@ -24,7 +26,25 @@ code {
|
|||||||
|
|
||||||
--adm-font-size-main: var(--adm-font-size-5);
|
--adm-font-size-main: var(--adm-font-size-5);
|
||||||
|
|
||||||
--adm-font-family: -apple-system, blinkmacsystemfont, 'Helvetica Neue',
|
--adm-font-family: -apple-system, blinkmacsystemfont, "Helvetica Neue",
|
||||||
helvetica, segoe ui, arial, roboto, 'PingFang SC', 'miui',
|
helvetica, segoe ui, arial, roboto, "PingFang SC", "miui",
|
||||||
'Hiragino Sans GB', 'Microsoft Yahei', sans-serif;
|
"Hiragino Sans GB", "Microsoft Yahei", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.adm-badge-wrapper {
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.adm-tab-bar-item-title {
|
||||||
|
font-size: 11px;
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 11px;
|
||||||
|
margin-top: 4px;
|
||||||
|
color: rgba(0, 0, 0, 0.45);
|
||||||
|
}
|
||||||
|
|
||||||
|
.adm-tab-bar-item-active {
|
||||||
|
.adm-tab-bar-item-title {
|
||||||
|
color: #ff4d4f !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ import { useEffect, useState } from "react";
|
|||||||
import { user } from "../../api/index";
|
import { user } from "../../api/index";
|
||||||
import styles from "./index.module.scss";
|
import styles from "./index.module.scss";
|
||||||
import { useSelector } from "react-redux";
|
import { useSelector } from "react-redux";
|
||||||
|
import { Footer, TabBarFooter } from "../../components";
|
||||||
|
|
||||||
const IndexPage = () => {
|
const IndexPage = () => {
|
||||||
const systemConfig = useSelector((state: any) => state.systemConfig.value);
|
const systemConfig = useSelector((state: any) => state.systemConfig.value);
|
||||||
@ -20,7 +21,11 @@ const IndexPage = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="main-body">
|
<div className="main-body">
|
||||||
<div className="content">我是首页</div>
|
<div className="content">
|
||||||
|
我是首页
|
||||||
|
<Footer></Footer>
|
||||||
|
</div>
|
||||||
|
<TabBarFooter></TabBarFooter>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user