Add Indicator to home. Optimize stylesheet.

This commit is contained in:
2023-09-14 23:41:41 +08:00
parent 41c77c2eaa
commit 4c1cc9e6a9
10 changed files with 83 additions and 22 deletions

View File

@@ -1,7 +1,4 @@
$main-color: #00D4FF;
$background-color: #F5F5F5;
$font-main-color: #4D4D4D;
$font-secondary-color: #9E9E9E;
@use '@/assets/css/constants.scss' as constants;
#root {
height: 100vh;
@@ -9,7 +6,7 @@ $font-secondary-color: #9E9E9E;
}
.body {
color: $font-main-color;
color: constants.$font-main-color;
user-select: none;
min-width: 900px;
min-height: 400px;
@@ -108,3 +105,11 @@ $font-secondary-color: #9E9E9E;
height: 23px;
}
}
.flex-horizontal {
flex-direction: row;
}
.flex-vertical {
flex-direction: column;
}

View File

@@ -5,11 +5,3 @@
width: 100%;
height: 100%;
}
.direction-horizontal {
flex-direction: row;
}
.direction-vertical {
flex-direction: column;
}

View File

@@ -0,0 +1,28 @@
@use '@/assets/css/constants.scss' as constants;
.dot-list {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
width: 100%;
.item {
flex: auto;
.dot {
width: 10px;
height: 10px;
border-radius: 50%;
border: {
width: 2px;
color: constants.$font-secondary-color;
style: solid;
};
}
}
.active>* {
background-color: constants.$font-secondary-color;
}
}

View File

@@ -8,5 +8,4 @@
right: 0;
top: 50%;
transform: translateY(-50%);
background-color: #00D4FF;
}

View File

@@ -1,4 +1,4 @@
@use "../../mixins" as mixins;
@use "@/assets/css/mixins" as mixins;
.center-box {
display: flex;

View File

@@ -0,0 +1,4 @@
$main-color: #00D4FF;
$background-color: #F5F5F5;
$font-main-color: #4D4D4D;
$font-secondary-color: #9E9E9E;

View File

@@ -1,4 +1,4 @@
@use "../mixins" as mixins;
@use "@/assets/css/mixins" as mixins;
.nav {
display: flex;

View File

@@ -12,7 +12,7 @@ const FitCenter: React.FC<FitCenterProps> = (props) => {
<>
<div
className={`fit-center${className ? ' ' + className : ''}${
vertical ? ' direction-vertical' : ' direction-horizontal'
vertical ? ' flex-vertical' : ' flex-horizontal'
}`}
{..._props}
></div>

View File

@@ -1,7 +1,39 @@
import React from 'react'
import _ from 'lodash'
import '@/assets/css/components/common/indicator.scss'
const Indicator: React.FC = () => {
return <></>
interface IndicatorProps {
total: number
current: number
onSwitch?: (index: number) => void
}
const Indicator: React.FC<IndicatorProps> = (props) => {
const { total, current, onSwitch } = props
const handleClick = (index: number) => {
return () => {
onSwitch && onSwitch(index)
}
}
return (
<>
<ul className={'dot-list flex-vertical'}>
{_.range(0, total).map((_value, index) => {
return (
<li
key={index}
className={'item center-box' + (index === current ? ' active' : '')}
onClick={handleClick(index)}
>
<div className={'dot'} />
</li>
)
})}
</ul>
</>
)
}
export default Indicator

View File

@@ -10,7 +10,7 @@ import Indicator from '@/components/common/Indicator.tsx'
const Home: React.FC = () => {
const {
hideScrollbarRef,
navbarHiddenState: { setNavbarHidden },
navbarHiddenState: { navbarHidden, setNavbarHidden },
preventScrollState: { setPreventScroll }
} = useContext(MainFrameworkContext)
@@ -124,6 +124,7 @@ const Home: React.FC = () => {
if (event.key === 'ArrowDown') {
handleScrollDown()
}
console.log(content.length)
}
const content = [
@@ -152,8 +153,8 @@ const Home: React.FC = () => {
})}
</div>
<div className={'indicator'}>
<Indicator />
<div hidden={navbarHidden} className={'indicator'}>
<Indicator total={content.length} current={currentContent} />
</div>
</>
)