Add Indicator to home. Optimize stylesheet.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
@@ -5,11 +5,3 @@
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.direction-horizontal {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.direction-vertical {
|
||||
flex-direction: column;
|
||||
}
|
||||
28
src/assets/css/components/common/indicator.scss
Normal file
28
src/assets/css/components/common/indicator.scss
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -8,5 +8,4 @@
|
||||
right: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
background-color: #00D4FF;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
@use "../../mixins" as mixins;
|
||||
@use "@/assets/css/mixins" as mixins;
|
||||
|
||||
.center-box {
|
||||
display: flex;
|
||||
|
||||
4
src/assets/css/constants.scss
Normal file
4
src/assets/css/constants.scss
Normal file
@@ -0,0 +1,4 @@
|
||||
$main-color: #00D4FF;
|
||||
$background-color: #F5F5F5;
|
||||
$font-main-color: #4D4D4D;
|
||||
$font-secondary-color: #9E9E9E;
|
||||
@@ -1,4 +1,4 @@
|
||||
@use "../mixins" as mixins;
|
||||
@use "@/assets/css/mixins" as mixins;
|
||||
|
||||
.nav {
|
||||
display: flex;
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
</>
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user