效果图
JS
import React, { useEffect, useState, Fragment } from 'react';
import styles from './style.less'
import z from '@/assets/deg/c.png';
const index = () =>
{
const [count, setCount] = useState(3)
const strData = '1,2,3,4,5,6,7'
let a = strData.split(',')
useEffect(() =>
{
let timer = setInterval(() =>
{
setCount(count => count + 1)
}, 1000)
return () =>
{
clearInterval(timer)
}
}, [])
const btnClick = (data) =>
{
setCount(parseInt(data))
}
return (
<Fragment>
<div className={styles.center}>
<div id="dashboard" className={styles.centerLeft}>
<img
src={z}
className={styles.age}
style={{ transform: `rotate(${(count / 7) * 180 - 90}deg)` }}
/>
<span className={styles.dashboard}>ERR {count}</span>
</div>
</div>
<div className={styles.btnBox}>
{a.map((data, index) => (
<button onClick={() => { btnClick(data) }} key={index}>{data}</button>
))}
</div>
</Fragment>
);
};
export default index
CSS
.center {
.centerLeft {
width: 262px;
height: 158px;
margin: 59px 0px 0px 55px;
background: url('~@/assets/deg/z1.png') no-repeat center center;
background-size: 100% 100%;
position: relative;
// background-color: pink;
}
.age {
width: 16px;
height: 99px;
position: absolute;
left: calc(~'50% - 8px');
bottom: 0;
transform-origin: center bottom;
transform: rotate(-90deg);
transition: 1s linear;
}
.dashboard {
position: absolute;
left: calc(~'50% - 44px');
bottom: -30px;
font-size: 24px;
font-family: SourceHanSansSC;
font-weight: 500;
color: #AFC6E4;
}
}
.btnBox {
margin: 100px;
}